https://bugs.winehq.org/show_bug.cgi?id=36840
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL| |http://www.fileplanet.com/1 | |26966/120000/fileinfo/TRON- | |2.0-Single-&-Multiplayer-De | |mo CC| |focht@gmx.net Component|-unknown |msvcrt Depends on| |11910 Ever confirmed|0 |1
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
The error has nothing to do with DirectX/OpenGL. The problem stems from the use of native 'msvcirt' override due to bug 11910
You can bypass the 'TRON.exe' launcher by passing a command file (generated by launcher on first run):
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Buena Vista Interactive/Tron 2.0 Demo
$ WINEDEBUG=+tid,+seh,+relay,+snoop,+msvcrt wine lithtech.exe -cmdfile launchcmds.txt >>log.txt 2>&1 ... 0024:Ret PE DLL (proc=0x780a1000,module=0x780a0000 L"MSVCIRT.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0024:Call PE DLL (proc=0xaffb9d,module=0x930000 L"cshell.dll",reason=PROCESS_ATTACH,res=(nil)) ... 0024:CALL MSVCIRT.??0ifstream@@QAE@PBDHH@Z(00000000,000000a0,000001a4,00000001) ret=009e2be3 0024:Call KERNEL32.InitializeCriticalSection(0033e15c) ret=780a1210 0024:Ret KERNEL32.InitializeCriticalSection() retval=00000001 ret=780a1210 0024:Call msvcrt.??2@YAPAXI@Z(00000054) ret=780a373f 0024:Call ntdll.RtlAllocateHeap(00710000,00000000,00000054) ret=7e74dd1b 0024:Ret ntdll.RtlAllocateHeap() retval=0226c000 ret=7e74dd1b 0024:trace:msvcrt:MSVCRT_operator_new (84) returning 0x226c000 0024:Ret msvcrt.??2@YAPAXI@Z() retval=0226c000 ret=780a373f 0024:Call KERNEL32.InitializeCriticalSection(0226c034) ret=780a1210 0024:Ret KERNEL32.InitializeCriticalSection() retval=00000001 ret=780a1210 0024:err:msvcrt:MSVCRT__invalid_parameter (null):0 (null): (null) 0 0024:Call msvcrt.??2@YAPAXI@Z(00000200) ret=780a3144 0024:Call ntdll.RtlAllocateHeap(00710000,00000000,00000200) ret=7e74dd1b 0024:Ret ntdll.RtlAllocateHeap() retval=00899d50 ret=7e74dd1b 0024:trace:msvcrt:MSVCRT_operator_new (512) returning 0x899d50 0024:Ret msvcrt.??2@YAPAXI@Z() retval=00899d50 ret=780a3144 0024:RET MSVCIRT.??0ifstream@@QAE@PBDHH@Z() retval=0033e118 ret=009e2be3 0024:CALL MSVCIRT.?seekg@istream@@QAEAAV1@JW4seek_dir@ios@@@Z(00000000,00000002) ret=009e2c0f 0024:Call msvcrt._lseek(0033e0ac,00000000,00000002) ret=780a2ecf 0024:warn:msvcrt:msvcrt_fdtoh :fd (3399852) - no handle! 0024:trace:msvcrt:MSVCRT__lseeki64 :fd (3399852) handle (0xffffffff) 0024:Ret msvcrt._lseek() retval=ffffffff ret=780a2ecf 0024:RET MSVCIRT.?seekg@istream@@QAEAAV1@JW4seek_dir@ios@@@Z() retval=0033e118 ret=009e2c0f 0024:CALL MSVCIRT.?tellg@istream@@QAEJXZ() ret=009e2c19 0024:Call msvcrt._lseek(0033e0ac,00000000,00000001) ret=780a2ecf 0024:warn:msvcrt:msvcrt_fdtoh :fd (3399852) - no handle! 0024:trace:msvcrt:MSVCRT__lseeki64 :fd (3399852) handle (0xffffffff) 0024:Ret msvcrt._lseek() retval=ffffffff ret=780a2ecf 0024:RET MSVCIRT.?tellg@istream@@QAEJXZ() retval=ffffffff ret=009e2c19 0024:CALL MSVCIRT._mtlock(0033e15c) ret=009e2c41 0024:RET MSVCIRT._mtlock() retval=00000000 ret=009e2c41 0024:CALL MSVCIRT._mtunlock(0033e15c) ret=009e2c5c 0024:RET MSVCIRT._mtunlock() retval=00000000 ret=009e2c5c 0024:CALL MSVCIRT.?seekg@istream@@QAEAAV1@J@Z(00000000) ret=009e2c6b 0024:Call msvcrt._lseek(0033e0ac,00000000,00000000) ret=780a2ecf 0024:warn:msvcrt:msvcrt_fdtoh :fd (3399852) - no handle! 0024:trace:msvcrt:MSVCRT__lseeki64 :fd (3399852) handle (0xffffffff) 0024:Ret msvcrt._lseek() retval=ffffffff ret=780a2ecf 0024:RET MSVCIRT.?seekg@istream@@QAEAAV1@J@Z() retval=0033e118 ret=009e2c6b 0024:Call msvcrt.??2@YAPAXI@Z(ffffffff) ret=009e2c71 0024:Call ntdll.RtlAllocateHeap(00710000,00000000,ffffffff) ret=7e74dd1b 0024:Ret ntdll.RtlAllocateHeap() retval=00000000 ret=7e74dd1b 0024:trace:msvcrt:_lock (9) 0024:Call msvcrt.longjmp(005cd4a4,00000001) ret=0042a1fd 0024:trace:seh:MSVCRT_longjmp buf=0x5cd4a4 ebx=00000000 esi=00400000 edi=00000001 ebp=0033fd78 esp=0033fc34 eip=00404f56 frame=0033fe10 retval=00000001 0024:trace:seh:MSVCRT_longjmp cur_frame=33f230 0024:trace:seh:_global_unwind2 (0x33fe10) 0024:Call ntdll.RtlUnwind(0033fe10,00000000,00000000,00000000) ret=7e73f147 0024: eax=7e730721 ebx=7e7b3000 ecx=00000000 edx=7bcecbc8 esi=0033dfa0 edi=0033fe10 ebp=0033df88 esp=0033df50 ds=002b es=002b fs=0063 gs=006b flags=00000202 0024:trace:seh:__regs_RtlUnwind code=c0000027 flags=2 0024:trace:seh:__regs_RtlUnwind calling handler at 0xb09e98 code=c0000027 flags=2 0024:trace:seh:cxx_local_unwind calling unwind handler 0xb09e30 trylevel 0 last -1 ebp 0x33f23c ... 0024:Call user32.MessageBoxA(00010020,005ac9bc "Out of memory",00719efd "TRON 2.0 Demo",00000000) ret=0040546a --- snip ---
Of course 'new(-1)' shouldn't happen.
'winetricks -q vcrun6' works around.
Maybe native 'msvcirt' relies on 'msvcrt' internal data structures/layout? Wouldn't be the first time ...
This might be a good chance to add the missing bits to Wine's builtin 'msvcirt', getting rid of these kind of bugs where knowledge of semi-documented/undocumented implementation is needed.
$ sha1sum trondemo.exe 86e06ede675601a8abfa0255408be270da68d9ca trondemo.exe
$ du -sh trondemo.exe 203M trondemo.exe
$ wine --version wine-1.7.21-50-g10e6a66
Regards