Hello,
http://cvs.winehq.org/cvsweb/wine/dlls/version/info.c.diff?r1=1.47&r2=1....
This recent change in dlls/version/info.c breaks IBM Translation Manager on startup:
wine: Unhandled exception (thread 0009), starting debugger... WineDbg starting on pid 0x8 Unhandled exception: page fault on read access to 0x7bb0f4ac in 32-bit code (0x7b4ce282). In 32 bit mode. Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:7b4ce282 ESP:7baff860 EBP:7baff8b0 EFLAGS:00010283( - 00 -RIS1C) EAX:7bb0fa58 EBX:7b4d37dc ECX:0000fd34 EDX:7bb0f4ac ESI:7baffb24 EDI:7baffb40 Stack dump: 0x7baff860: 7baffb28 00000000 7baffd4c ffffffff 0x7baff870: 7baffb3c 00000002 00000000 00000000 0x7baff880: 7baff9da 7bb0fa58 7b4d3ae0 7bb0f4ac 0x7baff890: 7baffd4c 00001794 7baf0000 00007baf 0x7baff8a0: 0000fd34 7b4d37dc 7bb0fa58 7baffb24 0x7baff8b0: 7baff908 7b4ce2ad 7baffd24 7baffb24 Backtrace: =>1 0x7b4ce282 ConvertVersionInfo32To16+0x172(info32=0x7baffd24, info16=0x7baffb24) [/home/phil/build/wine/dlls/version/info.c:267] in version (0x7baff8b0) 2 0x7b4ce2ad ConvertVersionInfo32To16+0x19d(info32=0x7baff9d4, info16=0x7baff9d4) [/home/phil/build/wine/dlls/version/info.c:273] in version (0x7baff908) 3 0x7b4cf64c VerQueryValueA(pBlock=0x7baff9d4, lpSubBlock=0x569214, lplpBuffer=0x7baff9cc, puLen=0x7baff9d0) [/home/phil/build/wine/dlls/version/info.c:772] in version (0x7baff93c) fixme:dbghelp:sffip_cb NIY on 'P:\EQFD\BINNTCVP\EQFD.pdb' 4 0x00401bb6 in eqfd (+0x1bb6) (0x7baffdb8) 5 0x004aa8e7 in eqfd (+0xaa8e7) (0x7baffddc) 6 0x004745c8 in eqfd (+0x745c8) (0x7baffdf4) 7 0x0044ef54 EntryPoint+0x1a4 in eqfd (0x7bafff2c) 8 0x7bbb3f48 start_process+0x8d(arg=0x0) [/home/phil/build/wine/dlls/kernel/process.c:996] in kernel32 (0x7baffff4) 9 0xb7fab48d wine_switch_to_stack+0x11 in libwine.so.1 (0x00000000) 0x7b4ce282 ConvertVersionInfo32To16+0x172 [/home/phil/build/wine/dlls/version/info.c:267] in version: movzwl 0x0(%edx),%eax 267 while ( (DWORD)child32 < (DWORD)info32 + wLength && child32->wLength != 0 ) Wine-dbg>
-- Ph.
On Sat, 2005-07-23 at 17:40, Phil Krylov wrote:
Hello,
http://cvs.winehq.org/cvsweb/wine/dlls/version/info.c.diff?r1=1.47&r2=1....
This recent change in dlls/version/info.c breaks IBM Translation Manager on startup:
wine: Unhandled exception (thread 0009), starting debugger... WineDbg starting on pid 0x8 Unhandled exception: page fault on read access to 0x7bb0f4ac in 32-bit code (0x7b4ce282). In 32 bit mode. Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:7b4ce282 ESP:7baff860 EBP:7baff8b0 EFLAGS:00010283( - 00 -RIS1C) EAX:7bb0fa58 EBX:7b4d37dc ECX:0000fd34 EDX:7bb0f4ac ESI:7baffb24 EDI:7baffb40 Stack dump: 0x7baff860: 7baffb28 00000000 7baffd4c ffffffff 0x7baff870: 7baffb3c 00000002 00000000 00000000 0x7baff880: 7baff9da 7bb0fa58 7b4d3ae0 7bb0f4ac 0x7baff890: 7baffd4c 00001794 7baf0000 00007baf 0x7baff8a0: 0000fd34 7b4d37dc 7bb0fa58 7baffb24 0x7baff8b0: 7baff908 7b4ce2ad 7baffd24 7baffb24 Backtrace: =>1 0x7b4ce282 ConvertVersionInfo32To16+0x172(info32=0x7baffd24, info16=0x7baffb24) [/home/phil/build/wine/dlls/version/info.c:267] in version (0x7baff8b0) 2 0x7b4ce2ad ConvertVersionInfo32To16+0x19d(info32=0x7baff9d4, info16=0x7baff9d4) [/home/phil/build/wine/dlls/version/info.c:273] in version (0x7baff908) 3 0x7b4cf64c VerQueryValueA(pBlock=0x7baff9d4, lpSubBlock=0x569214, lplpBuffer=0x7baff9cc, puLen=0x7baff9d0) [/home/phil/build/wine/dlls/version/info.c:772] in version (0x7baff93c) fixme:dbghelp:sffip_cb NIY on 'P:\EQFD\BINNTCVP\EQFD.pdb' 4 0x00401bb6 in eqfd (+0x1bb6) (0x7baffdb8) 5 0x004aa8e7 in eqfd (+0xaa8e7) (0x7baffddc) 6 0x004745c8 in eqfd (+0x745c8) (0x7baffdf4) 7 0x0044ef54 EntryPoint+0x1a4 in eqfd (0x7bafff2c) 8 0x7bbb3f48 start_process+0x8d(arg=0x0) [/home/phil/build/wine/dlls/kernel/process.c:996] in kernel32 (0x7baffff4) 9 0xb7fab48d wine_switch_to_stack+0x11 in libwine.so.1 (0x00000000) 0x7b4ce282 ConvertVersionInfo32To16+0x172 [/home/phil/build/wine/dlls/version/info.c:267] in version: movzwl 0x0(%edx),%eax 267 while ( (DWORD)child32 < (DWORD)info32 + wLength && child32->wLength != 0 ) Wine-dbg>
-- Ph.
Hi Phil,
I'll have a look. Any place to download this ? (trial ?)
Cheers,
Paul.
On Sat, 2005-07-23 at 17:40, Phil Krylov wrote:
Hello,
http://cvs.winehq.org/cvsweb/wine/dlls/version/info.c.diff?r1=1.47&r2=1....
This recent change in dlls/version/info.c breaks IBM Translation Manager on startup:
Hi Phil,
could you also send me a +ver trace?
Cheers,
Paul.
On Sun, 24 Jul 2005 11:56:38 +0200 Paul Vriens Paul.Vriens@xs4all.nl wrote:
could you also send me a +ver trace?
Here it is (attached).
-- Ph.
On Sun, 2005-07-24 at 13:26, Phil Krylov wrote:
On Sun, 24 Jul 2005 11:56:38 +0200 Paul Vriens Paul.Vriens@xs4all.nl wrote:
could you also send me a +ver trace?
Here it is (attached).
-- Ph.
Thanks for the trace.
It looks like TM is doing a GetFileVersionInfoA with a fixed size of 512. It should have used GetFileVersionInfoSizeA probably first to get the size of the needed buffer.
MSDN:
=== The VerQueryValue function retrieves specified version information from the specified version-information resource. To retrieve the appropriate resource, before you call VerQueryValue, you must first call the GetFileVersionInfoSize function, and then the GetFileVersionInfo function. ===
The smaller than needed buffer leads us to the not-correct strings that show up in your trace:
trace:ver:ConvertVersionInfo32To16 wLength 114, wValueLength 39, bText 64500, value 0x7baffbdc, child 0x7baffc2c trace:ver:ConvertVersionInfo32To16 Copied key from 0x7baffbd6 to 0x7baffb08: "?\x01" trace:ver:ConvertVersionInfo32To16 Copied value from 0x7baffbdc to 0x7baffb0c: "????????\x05" trace:ver:ConvertVersionInfo32To16 Converting 0x7baffc2c to 0x7baffb18 trace:ver:ConvertVersionInfo32To16 wLength 114, wValueLength 118, bText 105, value 0x7baffc48, child 0x7baffd34 trace:ver:ConvertVersionInfo32To16 Copied key from 0x7baffc32 to 0x7baffb1c: "ce Pack 2" trace:ver:ConvertVersionInfo32To16 Copied value from 0x7baffc48 to 0x7baffb28: "??\x01"
This means I have to change:
768 if ( !VersionInfoIs16( info ) ) 769 { 770 /* FIXME : The conversion is maybe a bit overkill, we only need 1 value */ 771 772 ConvertVersionInfo32To16( (VS_VERSION_INFO_STRUCT32 *)info, 773 (VS_VERSION_INFO_STRUCT16 *)info ); 774 }
in info.c sooner than I expected :-(.
I'm not able to reproduce this with either my own riched20.dll or the one you provided. But the reason it fails is clear now.
Will come up with a fix soon.
Cheers,
Paul.
Hi Paul,
On Sun, 24 Jul 2005 19:17:42 +0200 Paul Vriens Paul.Vriens@xs4all.nl wrote:
Will come up with a fix soon.
Thanks a lot!
-- Ph.
On Sun, 2005-07-24 at 20:59, Phil Krylov wrote:
Hi Paul,
On Sun, 24 Jul 2005 19:17:42 +0200 Paul Vriens Paul.Vriens@xs4all.nl wrote:
Will come up with a fix soon.
Thanks a lot!
-- Ph.
Hi Phil,
could you try the attached. I only convert the win32 to win16 if we are not getting a request for '' or '\VarFileInfo\Translation'. Both requests do not need a conversion anyway.
This is just a quick hack for now, info.c needs a lot of cleanup.
Cheers,
Paul.
Hi,
On Mon, 25 Jul 2005 21:37:09 +0200 Paul Vriens Paul.Vriens@xs4all.nl wrote:
could you try the attached. I only convert the win32 to win16 if we are not getting a request for '' or '\VarFileInfo\Translation'. Both requests do not need a conversion anyway.
This is just a quick hack for now, info.c needs a lot of cleanup.
It works (at least for IBM TM). :)
-- Ph.