Help debugging Fotowire

Antti Mäkelä zarhan at cs.tut.fi
Sat Jan 15 14:35:04 CST 2005


On Saturday 15 January 2005 19:36, Mike Hearn wrote:
> Try doing a +relay,+tid,+ole trace then locate the call to MessageBoxA and
> figure out what functions were being used at the time before the message
> appeared.

  Now replying via newsreader, seems easier method :) Hopefully I configured
this correctly. And sorry about some of the overtly long lines in the log.

  Anyway, I'm getting something like this, after narrowing the error
happening in the MessageBoxes "Connecting to server" and "Error".

First reference to the error message (even before MessageBoxA:)

0009:Call kernel32.WideCharToMultiByte(00000000,00000000,77ce0cd8
L"Palvelimelta saatiin virheellinen
vastaus.",0000002a,7796c3d0,000000ff,00000000,00000000) ret=777f7b25

That "Palvelimelta..." is just "Erroneus message received" in finnish.

Okay, direct dump of functions that get called before that. The first line
now shows part of the XML that came through.

0009:Call kernel32.WideCharToMultiByte(00000000,00000000,7ddd64b4 L"Lab Logo
2</title><date>1997/11/26</date><url>/labs/logos/1100/6.jpg</url><destination>$data$/lab.fw2</destination><method>2</method><type>2</type></package></update>",0000000a,7defb5b0,00000015,00000000,00000000)
ret=67f852e8
0009:Ret  kernel32.WideCharToMultiByte() retval=0000000a ret=67f852e8
0009:Call kernel32.InterlockedIncrement(7defb5a4) ret=67f8ca7b
0009:Ret  kernel32.InterlockedIncrement() retval=00000002 ret=67f8ca7b
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000001 ret=67f8c913
0009:Call kernel32.lstrlenA(7defb5b0 "Lab Logo 2") ret=67f8cd91
0009:Ret  kernel32.lstrlenA() retval=0000000a ret=67f8cd91
0009:Call kernel32.InterlockedIncrement(7defb5a4) ret=67f8c689
0009:Ret  kernel32.InterlockedIncrement() retval=00000002 ret=67f8c689
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000001 ret=67f8c913
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000000 ret=67f8c913
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a7f1
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a7f1
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a800
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a800
0009:Call kernel32.TlsGetValue(00000006) ret=67f958b7
0009:Ret  kernel32.TlsGetValue() retval=77caaae0 ret=67f958b7
0009:Call user32.LoadStringA(67f00000,00000088,7796c3d0,00000100)
ret=67f8cfd5
0009:Call ntdll.RtlAllocateHeap(77c50000,00000000,00000200) ret=777f7a0a
0009:Ret  ntdll.RtlAllocateHeap() retval=77ce0cd8 ret=777f7a0a
0009:Call kernel32.FindResourceW(67f00000,00000009,00000006) ret=777f7807
0009:Call ntdll.LdrFindResource_U(67f00000,7796c0f4,00000003,7796c030)
ret=77bc076a
0009:Ret  ntdll.LdrFindResource_U() retval=00000000 ret=77bc076a
0009:Ret  kernel32.FindResourceW() retval=67f01d78 ret=777f7807
0009:Call kernel32.LoadResource(67f00000,67f01d78) ret=777f7820
0009:Call ntdll.LdrAccessResource(67f00000,67f01d78,7796c158,00000000)
ret=77bc1b0b
0009:Ret  ntdll.LdrAccessResource() retval=00000000 ret=77bc1b0b
0009:Ret  kernel32.LoadResource() retval=67f09fc0 ret=777f7820
0009:Call kernel32.LockResource(67f09fc0) ret=777f7835
0009:Ret  kernel32.LockResource() retval=67f09fc0 ret=777f7835
0009:Call kernel32.WideCharToMultiByte(00000000,00000000,77ce0cd8
L"Palvelimelta saatiin virheellinen
vastaus.",0000002a,7796c3d0,000000ff,00000000,00000000) ret=777f7b25

There is an earlier call, too:

0009:Call kernel32.WideCharToMultiByte(00000000,00000000,7ddd6312
L"2005/1/21</validity><package><title>Lab Logo
1</title><date>1997/11/26</date><url>/labs/logos/1100/2.jpg</url><destination>$data$/lab.fw1</destination><method>2</method><type>2</type></package><package><title>Lab
Logo
2</title><date>1997/11/26</date><url>/labs/logos/1100/6.jpg</url><destination>$data"...,00000009,7defb5b0,00000013,00000000,00000000)
ret=67f852e8
0009:Ret  kernel32.WideCharToMultiByte() retval=00000009 ret=67f852e8
0009:Call kernel32.InterlockedIncrement(7defb5a4) ret=67f8ca7b
0009:Ret  kernel32.InterlockedIncrement() retval=00000002 ret=67f8ca7b
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000001 ret=67f8c913
0009:Call kernel32.lstrlenA(7defb5b0 "2005/1/21") ret=67f8cd91
0009:Ret  kernel32.lstrlenA() retval=00000009 ret=67f8cd91
0009:Call kernel32.lstrlenA(7defb5b0 "2005/1/21") ret=67f8c997
0009:Ret  kernel32.lstrlenA() retval=00000009 ret=67f8c997
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a76d
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a76d
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a7b3
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a7b3
0009:Call kernel32.lstrlenA(7defb600 "2005/1/21") ret=67f59695
0009:Ret  kernel32.lstrlenA() retval=00000009 ret=67f59695
0009:Call kernel32.MultiByteToWideChar(00000000,00000000,7defb600
"2005/1/21",ffffffff,7796c4a0,0000000a) ret=67f596bb
0009:Ret  kernel32.MultiByteToWideChar() retval=0000000a ret=67f596bb
0009:Call oleaut32.VarDateFromStr(7796c4a0
L"2005/1/21",00000409,00000002,7796ca20) ret=67f596c9
0009:Call kernel32.GetLocaleInfoW(00000409,20000021,7796c184,00000002)
ret=77568fbd

Anyway, if lstrlenA is supposed to return string length, the value of '9' is
correct, I gather.

The stuff about GetLocaleInfoW is a bit more interesting. Maybe the date
format is locale-specific and Wine implementation cannot parse it?

Anyway, what follows are all the months:

0009:Ret  kernel32.GetLocaleInfoW() retval=00000008 ret=77569027
0009:Call kernel32.lstrlenW(7796c1a8 L"January") ret=77526b88
0009:Ret  kernel32.lstrlenW() retval=00000007 ret=77526b88
0009:Call ntdll.RtlAllocateHeap(77c50000,00000000,00000014) ret=77526acd
0009:Ret  ntdll.RtlAllocateHeap() retval=77cc3668 ret=77526acd
0009:Call kernel32.GetLocaleInfoW(00000409,00000039,7796c1a8,00000080)
ret=77569027
0009:Call ntdll.NtQueryDefaultLocale(00000001,7796bfac) ret=77ba0a55
0009:Ret  ntdll.NtQueryDefaultLocale() retval=00000000 ret=77ba0a55
0009:Call ntdll.LdrFindResource_U(77b60000,7796bf5c,00000003,7796be98)
ret=77bc076a
0009:Ret  ntdll.LdrFindResource_U() retval=00000000 ret=77bc076a
0009:Call ntdll.LdrAccessResource(77b60000,77c448c0,7796bfa4,00000000)
ret=77bc1b0b
0009:Ret  ntdll.LdrAccessResource() retval=00000000 ret=77bc1b0b
0009:Ret  kernel32.GetLocaleInfoW() retval=00000009 ret=77569027
0009:Call kernel32.lstrlenW(7796c1a8 L"February") ret=77526b88
0009:Ret  kernel32.lstrlenW() retval=00000008 ret=77526b88

...till December, then short forms, then weekdays...etc. Final thing that
seems to be locale information is AM/PM:

0009:Call kernel32.lstrlenW(7796c1a8 L"PM") ret=77526b88

After the locale is retviered, rest of the XML decoding starts. The final
line in this snippet is the same as in the beginning of this message.

0009:Ret  oleaut32.VarDateFromStr() retval=00000000 ret=67f596c9
0009:Call kernel32.InterlockedDecrement(7defb5f4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000000 ret=67f8c913
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a7f1
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a7f1
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a800
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a800
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000000 ret=67f8c913
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a7f1
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a7f1
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a800
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a800
0009:Call kernel32.lstrlenA(67fb726c "") ret=67f8ca99
0009:Ret  kernel32.lstrlenA() retval=00000000 ret=67f8ca99
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a76d
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a76d
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a7b3
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a7b3
0009:Call kernel32.WideCharToMultiByte(00000000,00000000,7ddd635a L"Lab Logo
1</title><date>1997/11/26</date><url>/labs/logos/1100/2.jpg</url><destination>$data$/lab.fw1</destination><method>2</method><type>2</type></package><package><title>Lab
Logo
2</title><date>1997/11/26</date><url>/labs/logos/1100/6.jpg</url><destination>$data$/lab.fw2</destination><method>2</me"...,0000000a,7defb5b0,00000015,00000000,00000000)
ret=67f852e8
0009:Ret  kernel32.WideCharToMultiByte() retval=0000000a ret=67f852e8
0009:Call kernel32.InterlockedIncrement(7defb5a4) ret=67f8ca7b
0009:Ret  kernel32.InterlockedIncrement() retval=00000002 ret=67f8ca7b
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000001 ret=67f8c913
0009:Call kernel32.lstrlenA(7defb5b0 "Lab Logo 1") ret=67f8cd91
0009:Ret  kernel32.lstrlenA() retval=0000000a ret=67f8cd91
0009:Call kernel32.InterlockedIncrement(7defb5a4) ret=67f8c689
0009:Ret  kernel32.InterlockedIncrement() retval=00000002 ret=67f8c689
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000001 ret=67f8c913
0009:Call kernel32.InterlockedDecrement(7defb5a4) ret=67f8c913
0009:Ret  kernel32.InterlockedDecrement() retval=00000000 ret=67f8c913
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a7f1
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a7f1
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a800
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a800
0009:Call ntdll.RtlEnterCriticalSection(67fbda78) ret=67f5a76d
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=67f5a76d
0009:Call ntdll.RtlLeaveCriticalSection(67fbda78) ret=67f5a7b3
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=67f5a7b3
0009:Call kernel32.WideCharToMultiByte(00000000,00000000,7ddd64b4 L"Lab Logo
2</title><date>1997/11/26</date><url>/labs/logos/1100/6.jpg</url><destination>$data$/lab.fw2</destination><method>2</method><type>2</type></package></update>",0000
000a,7defb5b0,00000015,00000000,00000000) ret=67f852e8

  No references to outside kernel32 and ntdll except for oleaut..What could
I try now?

-- 
- Antti Mäkelä - http://www.cs.tut.fi/~zarhan -
There is a theory which states that if ever anyone discovers exactly
what the Universe is for and why it is here,it will instantly disappear
and be replaced by something even more bizarre and inexplicable.





More information about the wine-devel mailing list