I'm trying to run a particular installer made with Installshield on cvs wine without any Windows DLLs. This used to work (on a different machine, with who knows what other changes). Now I just get an empty InstallShield wizard frame, and then it hangs. Hrmph. Maybe installshield wants some new spiffy ole stuff. Now, this machine dual-boots with win2k, so I thought I'd try native dlls for a few things:
$ cd ~/c/windows/system $ cp /dos/c/WINNT/system/stdole.tlb . $ cp /dos/c/WINNT/system32/compobj.dll . $ cp /dos/c/WINNT/system32/storage.dll . $ cp /dos/c/WINNT/system32/ole{2,32}.dll .
$ cd ~/c/temp/disk1 $ ~/wine/wine --dll compobj,storage,ole,ole2,ole32=n Setup.exe
Unfortunately, that crashes. Rerunning with +relay > log 2>&1, and doing egrep 'fixme|^wine|^Unhand' log, I see:
fixme:win:WIN_CreateWindowEx Parent is HWND_MESSAGE fixme:seh:check_resource_write Broken app is writing to the resource data, enabling work-around fixme:win:WIN_CreateWindowEx Parent is HWND_MESSAGE fixme:win:GetProcessWindowStation (void): stub fixme:win:GetThreadDesktop (9): stub fixme:win32:GetUserObjectInformationW (0x1 2 0x406817cc 64 0x4068181c),stub! fixme:win32:GetUserObjectInformationW (0x1 2 0x4068178c 64 0x4068181c),stub! fixme:ole:RPCRT4_NdrClientCall2 (pStubDec == ^0x77a7abc8,pFormat = ^0x77a7ac1a,...): semi-stub fixme:ntdll:NtOpenThreadToken (0xfffffffe,0x00000004,0x00000001,0x4068181c): stub fixme:advapi:SetThreadToken ((nil), (nil)): stub (NT impl. only) fixme:ntdll:NtOpenProcessToken (0xffffffff,0x00000008,0x40681828): stub fixme:ntdll:NtQueryInformationToken (0xcafe,1,0x406817d0,52,0x40681824): stub fixme:advapi:LookupAccountSidW ((null),sid=0x406817d8,0x40681724,0x40681830(80),0x403c61d8,0x4068182c(80),0x40681820): semi-stub fixme:advapi:SetThreadToken ((nil), 0xcafe): stub (NT impl. only) fixme:ole:RPCRT4_NdrClientCall2 (pStubDec == ^0x77a8c4b8,pFormat = ^0x77a8c572,...): semi-stub fixme:ntdll:NtOpenThreadToken (0xfffffffe,0x00000004,0x00000001,0x40681898): stub fixme:advapi:SetThreadToken ((nil), (nil)): stub (NT impl. only) fixme:advapi:SetThreadToken ((nil), 0xcafe): stub (NT impl. only) wine: Unhandled exception, starting debugger... Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x77a539ca).
There are enough fixmes there that I can believe something crucial isn't implemented yet.
Here's the last few lines of relay, plus the backtrace:
fixme:advapi:SetThreadToken ((nil), 0xcafe): stub (NT impl. only) 00000009:Ret advapi32.SetThreadToken() retval=00000000 ret=77a5e17f 00000009:Call kernel32.CloseHandle(0000cafe) ret=77a5e186 00000009:Ret kernel32.CloseHandle() retval=00000000 ret=77a5e186 00000009:Call ntdll.RtlLeaveCriticalSection(77b32b68) ret=77a5db8f 00000009:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=77a5db8f 00000009:Call kernel32.GetCurrentProcessId() ret=77a5b6a5 00000009:Ret kernel32.GetCurrentProcessId() retval=00000008 ret=77a5b6a5 00000009:Call kernel32.OpenEventA(001f0003,00000000,4068187c "MSFT.VSA.COM.DISABLE.8") ret=77a5b6cc 00000009:Ret kernel32.OpenEventA() retval=00000000 ret=77a5b6cc 00000009:Call kernel32.OpenEventA(00100002,00000000,77a5b6f4 "MSFT.VSA.IEC.STATUS.6c736db0") ret=77a5b6e1 00000009:Ret kernel32.OpenEventA() retval=00000000 ret=77a5b6e1 00000009:Call ntdll.RtlLeaveCriticalSection(77b333c0) ret=77b295c0 00000009:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=77b295c0 00000009:Call ntdll.RtlEnterCriticalSection(77b326a0) ret=77a51d8e 00000009:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=77a51d8e wine: Unhandled exception, starting debugger... ... Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x77a539ca). In 32-bit mode. 0x77a539ca (OLE32.DLL.StringFromCLSID+0x137 in C:\WINDOWS\SYSTEM\OLE32.DLL): movw 0x0(%edx),%dx Backtrace: =>0 0x77a539ca (OLE32.DLL.StringFromCLSID+0x137 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=40681858) 1 0x77a5b2be (OLE32.DLL.CoRegisterMessageFilter+0x324 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=406818ac) 2 0x77a7e5f0 (OLE32.DLL.CoCreateGuid+0x1114 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=406818e4) 3 0x77a7d103 (OLE32.DLL.CoFreeUnusedLibraries+0x45b in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=406818fc) 4 0x77a6f555 (OLE32.DLL.OleCreateEx+0x1305 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=4068194c) 5 0x77a58359 (OLE32.DLL.CoCreateInstance+0x3ca1 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=40681b94) 6 0x77a582ca (OLE32.DLL.CoCreateInstance+0x3c12 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=40681bb0) 7 0x77a54518 (OLE32.DLL.CoCreateInstanceEx+0x223 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=4068231c) 8 0x77a5431d (OLE32.DLL.CoCreateInstanceEx+0x28 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=40682344) 9 0x77a546ea (OLE32.DLL.CoCreateInstance+0x32 in C:\WINDOWS\SYSTEM\OLE32.DLL) (ebp=40682374) 10 0x00403a0f (Setup.exe.EntryPoint+0x1eb5 in C:\temp\Disk1\Setup.exe) (ebp=406823ec) 11 0x0040258b (Setup.exe.EntryPoint+0xa31 in C:\temp\Disk1\Setup.exe) (ebp=40682448) 12 0x004022c4 (Setup.exe.EntryPoint+0x76a in C:\temp\Disk1\Setup.exe) (ebp=406828a4) 13 0x00401ff9 (Setup.exe.EntryPoint+0x49f in C:\temp\Disk1\Setup.exe) (ebp=40682e34) 14 0x00401be6 (Setup.exe.EntryPoint+0x8c in C:\temp\Disk1\Setup.exe) (ebp=40682e9c) 15 0x4009dd90 (start_process+0x21c [process.c:564] in libntdll.dll.so) (ebp=40682f38) 16 0x400a212d (call_on_thread_stack+0x1d(func=0x4009db74) [sysdeps.c:171] in libntdll.dll.so) (ebp=40682ff4) 17 0x400a22c0 (SYSDEPS_CallOnStack+0x14 in libntdll.dll.so) (ebp=00000000)
I'd be happy to send a better log or implement some small missing call if someone wants to point me in the right direction. - Dan