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?