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