msvcrt incompatibility in Origin 6.0 when saving documents

Olaf Leidinger leidola at newcon.de
Mon Nov 28 19:43:39 CST 2005


Hello again!

> Try running the application with the debugger and builtin msvcrt. Perhaps
> you get a backtrace of the crash.  Otherwise try in the relay trace (builtin
> msvcrt, showing the messagebox but not the crash) to find where the
> messagebox is called. You can seach for the message text. Now work up the
> log and try to find why the program decides to emit the messagebox.
> 

Well, the debugger doesn't tell me anything, as the backtrace is only one line long and it doesn't contain any information. I digged a bit deeper in the relay-log. After the save-file dialog I found this:

0009:Call ntdll.RtlLeaveCriticalSection(6c300220) ret=6c2317dd
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=6c2317dd
0009:Call msvcrt._mbscmp(7fe7c6d0 "",7d8aa353 "Saving project UNTITLED to i:\\mnt\\privat\\Origin6\\UNTITLED.opj...") ret=4c0608e6
0009:Ret  msvcrt._mbscmp() retval=ffffffff ret=4c0608e6
0009:Call kernel32.GetLastError() ret=6c23429b
0009:Ret  kernel32.GetLastError() retval=00000000 ret=6c23429b
0009:Call kernel32.TlsGetValue(00000003) ret=6c231018
0009:Ret  kernel32.TlsGetValue() retval=7fdd4bb0 ret=6c231018
0009:Call kernel32.SetLastError(00000000) ret=6c2342b5
0009:Ret  kernel32.SetLastError() retval=00000000 ret=6c2342b5
0009:Call kernel32.lstrlenA(7d8aa353 "Saving project UNTITLED to i:\\mnt\\privat\\Origin6\\UNTITLED.opj...") ret=6c2338d7
0009:Ret  kernel32.lstrlenA() retval=00000040 ret=6c2338d7
0009:Call msvcrt.memcpy(7fe7c6d0,7d8aa353,00000040) ret=6c233905
0009:Ret  msvcrt.memcpy() retval=7fe7c6d0 ret=6c233905
0009:Call kernel32.GetLastError() ret=6c23429b
0009:Ret  kernel32.GetLastError() retval=00000000 ret=6c23429b
0009:Call kernel32.TlsGetValue(00000003) ret=6c231018
0009:Ret  kernel32.TlsGetValue() retval=7fdd4bb0 ret=6c231018
0009:Call kernel32.SetLastError(00000000) ret=6c2342b5
0009:Ret  kernel32.SetLastError() retval=00000000 ret=6c2342b5
0009:Call user32.CallWindowProcA(7f72ffe2,0001003e,00000401,00000100,7fe7c6d0) ret=6c2320f2

The GetLastError and SetLastError calls look a bit strange to me...

Then there is A LOT OF gui-stuff...

... some _mbsinc calls

... some putc calls

And finally ...

0009:Call msvcrt.fclose(7fe8fa90) ret=7f81ecf0
0009:Call kernel32.WriteFile(00000018,7fe60478,00000004,7fadef00,00000000) ret=7e876aa7
0009:Call ntdll.NtWriteFile(00000018,00000000,00000000,00000000,7fadee08,7fe60478,00000004,00000000,00000000) ret=7fcc4389
0009:Ret  ntdll.NtWriteFile() retval=00000000 ret=7fcc4389
0009:Ret  kernel32.WriteFile() retval=00000001 ret=7e876aa7
0009:Call ntdll.RtlFreeHeap(7fd80000,00000000,7fe60478) ret=7e87a5e5
0009:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7e87a5e5
0009:Call ntdll.RtlEnterCriticalSection(7e899fc8) ret=7e877bb5
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=7e877bb5
0009:Call kernel32.CloseHandle(00000018) ret=7e877bd6
0009:Call ntdll.NtClose(00000018) ret=7fceb271
0009:Ret  ntdll.NtClose() retval=00000000 ret=7fceb271
0009:Ret  kernel32.CloseHandle() retval=00000001 ret=7e877bd6
0009:Call ntdll.RtlEnterCriticalSection(7e899fc8) ret=7e877be7
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=7e877be7
0009:Call ntdll.RtlLeaveCriticalSection(7e899fc8) ret=7e877d1f
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=7e877d1f
0009:Call ntdll.RtlLeaveCriticalSection(7e899fc8) ret=7e877c40
0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=7e877c40
0009:Ret  msvcrt.fclose() retval=00000000 ret=7f81ecf0
0009:Call kernel32.OpenFile(7fe60252 "i:\\mnt\\privat\\Origin6\\UNTITLED.opj",7fadf040,00000200) ret=7f81ed08
0009:Call ntdll.RtlInitAnsiString(7fadecb4,7fe60252 "i:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fcc2d75
0009:Ret  ntdll.RtlInitAnsiString() retval=00000023 ret=7fcc2d75
0009:Call ntdll.RtlAnsiStringToUnicodeString(7fffcbf8,7fadecb4,00000000) ret=7fcc2dda
0009:Ret  ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=7fcc2dda
0009:Call ntdll.RtlGetFullPathName_U(7fffcc00 L"i:\\mnt\\privat\\Origin6\\UNTITLED.opj",00000208,7fadecd8,00000000) ret=7fce6be7
0009:Ret  ntdll.RtlGetFullPathName_U() retval=00000044 ret=7fce6be7
0009:Call ntdll.RtlInitUnicodeString(7fadecbc,7fadecd8 L"I:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fce6b4e
0009:Ret  ntdll.RtlInitUnicodeString() retval=00000046 ret=7fce6b4e
0009:Call ntdll.RtlUnicodeStringToAnsiSize(7fadecbc) ret=7fce6b58
0009:Ret  ntdll.RtlUnicodeStringToAnsiSize() retval=00000023 ret=7fce6b58
0009:Call ntdll.RtlUnicodeStringToAnsiString(7fadecb4,7fadecbc,00000000) ret=7fce6b81
0009:Ret  ntdll.RtlUnicodeStringToAnsiString() retval=00000000 ret=7fce6b81
0009:Call ntdll.RtlInitAnsiString(7fadeca0,7fe60252 "i:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fcc2d75
0009:Ret  ntdll.RtlInitAnsiString() retval=00000023 ret=7fcc2d75
0009:Call ntdll.RtlAnsiStringToUnicodeString(7fffcbf8,7fadeca0,00000000) ret=7fcc2dda
0009:Ret  ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=7fcc2dda
0009:Call ntdll.RtlInitAnsiString(7fadeca0,00000000) ret=7fcc2d75
0009:Ret  ntdll.RtlInitAnsiString() retval=00000000 ret=7fcc2d75
0009:Call ntdll.RtlAnsiStringToUnicodeString(7fadec98,7fadeca0,00000001) ret=7fcc2dda
0009:Ret  ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=7fcc2dda
0009:Call ntdll.RtlDetermineDosPathNameType_U(7fffcc00 L"i:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fce8811
0009:Ret  ntdll.RtlDetermineDosPathNameType_U() retval=00000002 ret=7fce8811
0009:Call ntdll.RtlDoesFileExists_U(7fffcc00 L"i:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fce8820
0009:Ret  ntdll.RtlDoesFileExists_U() retval=00000001 ret=7fce8820
0009:Call ntdll.RtlGetFullPathName_U(7fffcc00 L"i:\\mnt\\privat\\Origin6\\UNTITLED.opj",00000208,7fadecd0,00000000) ret=7fce6be7
0009:Ret  ntdll.RtlGetFullPathName_U() retval=00000044 ret=7fce6be7
0009:Call ntdll.RtlFreeHeap(7fd80000,00000000,7fdcd6a8) ret=7fccb881
0009:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7fccb881
0009:Call ntdll.RtlFreeHeap(7fd80000,00000000,00000000) ret=7fccb881
0009:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7fccb881
0009:Call ntdll.RtlInitUnicodeString(7fadeca8,7fadecd0 L"I:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fce6b4e
0009:Ret  ntdll.RtlInitUnicodeString() retval=00000046 ret=7fce6b4e
0009:Call ntdll.RtlUnicodeStringToAnsiSize(7fadeca8) ret=7fce6b58
0009:Ret  ntdll.RtlUnicodeStringToAnsiSize() retval=00000023 ret=7fce6b58
0009:Call ntdll.RtlUnicodeStringToAnsiString(7fadeca0,7fadeca8,00000000) ret=7fce6b81
0009:Ret  ntdll.RtlUnicodeStringToAnsiString() retval=00000000 ret=7fce6b81
0009:Call ntdll.RtlInitAnsiString(7fadeed0,7fadf048 "I:\\mnt\\privat\\Origin6\\UNTITLED.opj") ret=7fcc2d75
0009:Ret  ntdll.RtlInitAnsiString() retval=00000023 ret=7fcc2d75
0009:Call ntdll.RtlAnsiStringToUnicodeString(7fffcbf8,7fadeed0,00000000) ret=7fcc2dda
0009:Ret  ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=7fcc2dda
0009:Call ntdll.RtlDosPathNameToNtPathName_U(7fffcc00 L"I:\\mnt\\privat\\Origin6\\UNTITLED.opj",7fadeed4,00000000,00000000) ret=7fcc4e4f
0009:Ret  ntdll.RtlDosPathNameToNtPathName_U() retval=00000001 ret=7fcc4e4f
0009:Call ntdll.NtDeleteFile(7fadeebc) ret=7fcc4edf
0009:Ret  ntdll.NtDeleteFile() retval=00000000 ret=7fcc4edf
0009:Call ntdll.RtlFreeUnicodeString(7fadeed4) ret=7fcc4ee7
0009:Ret  ntdll.RtlFreeUnicodeString() retval=00000001 ret=7fcc4ee7
0009:Ret  kernel32.OpenFile() retval=00000001 ret=7f81ed08
0009:Call kernel32.TlsGetValue(00000003) ret=6c231018
0009:Ret  kernel32.TlsGetValue() retval=7fdd4bb0 ret=6c231018
0009:Call kernel32.TlsGetValue(00000003) ret=6c231018
0009:Ret  kernel32.TlsGetValue() retval=7fdd4bb0 ret=6c231018

I think here  (at the latest) it starts building the error dialog...

0009:Call kernel32.FindResourceA(00400000,000003f1,00000006) ret=6c233a4e
0009:Call ntdll.LdrFindResource_U(00400000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=c000008b ret=7fcf69c3
0009:Call ntdll.RtlNtStatusToDosError(c000008b) ret=7fcf6968
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000716 ret=7fcf6968
0009:Ret  kernel32.FindResourceA() retval=00000000 ret=6c233a4e
0009:Call ntdll.RtlEnterCriticalSection(6c300178) ret=6c23178e
0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=6c23178e
0009:Call kernel32.FindResourceA(7d4f0000,000003f1,00000006) ret=6c292bb9
0009:Call ntdll.LdrFindResource_U(7d4f0000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=c000008a ret=7fcf69c3
0009:Call ntdll.RtlNtStatusToDosError(c000008a) ret=7fcf6968
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000715 ret=7fcf6968
0009:Ret  kernel32.FindResourceA() retval=00000000 ret=6c292bb9
0009:Call kernel32.FindResourceA(10000000,000003f1,00000006) ret=6c292bb9
0009:Call ntdll.LdrFindResource_U(10000000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=c000008b ret=7fcf69c3
0009:Call ntdll.RtlNtStatusToDosError(c000008b) ret=7fcf6968
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000716 ret=7fcf6968
0009:Ret  kernel32.FindResourceA() retval=00000000 ret=6c292bb9
0009:Call kernel32.FindResourceA(4c000000,000003f1,00000006) ret=6c292bb9
0009:Call ntdll.LdrFindResource_U(4c000000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=c000008b ret=7fcf69c3
0009:Call ntdll.RtlNtStatusToDosError(c000008b) ret=7fcf6968
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000716 ret=7fcf6968
0009:Ret  kernel32.FindResourceA() retval=00000000 ret=6c292bb9
0009:Call kernel32.FindResourceA(44000000,000003f1,00000006) ret=6c292bb9
0009:Call ntdll.LdrFindResource_U(44000000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=c000008a ret=7fcf69c3
0009:Call ntdll.RtlNtStatusToDosError(c000008a) ret=7fcf6968
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000715 ret=7fcf6968
0009:Ret  kernel32.FindResourceA() retval=00000000 ret=6c292bb9
0009:Call kernel32.FindResourceA(7f770000,000003f1,00000006) ret=6c292bb9
0009:Call ntdll.LdrFindResource_U(7f770000,7faded74,00000003,7faded90) ret=7fcf69c3
0009:Ret  ntdll.LdrFindResource_U() retval=00000000 ret=7fcf69c3
0009:Ret  kernel32.FindResourceA() retval=7f98d968 ret=6c292bb9
0009:Call user32.LoadStringA(7f770000,00003f0e,7fadeebc,00000100) ret=6c292bcf
0009:Call ntdll.RtlAllocateHeap(7fd80000,00000000,00000200) ret=7f6b448f
0009:Ret  ntdll.RtlAllocateHeap() retval=7fe60478 ret=7f6b448f
0009:Call kernel32.FindResourceW(7f770000,000003f1,00000006) ret=7f6b3dd5
0009:Call ntdll.LdrFindResource_U(7f770000,7fadec78,00000003,7fadec94) ret=7fcf6b33
0009:Ret  ntdll.LdrFindResource_U() retval=00000000 ret=7fcf6b33
0009:Ret  kernel32.FindResourceW() retval=7f98d968 ret=7f6b3dd5
0009:Call kernel32.LoadResource(7f770000,7f98d968) ret=7f6b3de4
0009:Call ntdll.LdrAccessResource(7f770000,7f98d968,7fadecd4,00000000) ret=7fcf5f94
0009:Ret  ntdll.LdrAccessResource() retval=00000000 ret=7fcf5f94
0009:Ret  kernel32.LoadResource() retval=7f9aea58 ret=7f6b3de4
0009:Call kernel32.LockResource(7f9aea58) ret=7f6b3df2
0009:Ret  kernel32.LockResource() retval=7f9aea58 ret=7f6b3df2
0009:Call kernel32.WideCharToMultiByte(00000000,00000000,7fe60478 L"Achtung !",00000009,7fadeebc,000000ff,00000000,00000000) ret=7f6b4557


"Achtung !" is the caption of the dialog.

It seems as if the file is written normally, but in fact no file is created (or it is deleted again). But I can't say what's wrong...

Ciao,

Olaf Leidinger
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20051129/09c0efdc/attachment-0001.pgp


More information about the wine-devel mailing list