http://bugs.winehq.org/show_bug.cgi?id=28485
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|-unknown |kernel32 Summary|Pegasus Mail version 4.62 |Pegasus Mail version 4.62 |crashes on startup |crashes on startup (needs | |GetProcessDEPPolicy stub)
--- Comment #8 from Anastasius Focht focht@gmx.net 2011-10-19 16:44:04 CDT --- Hello,
the problem is the missing GetProcessDEPPolicy() API.
Some app code in "IERenderer.dll" dll entry manually resolves various API using GetProcAddress() and stores the API entry addresses in a table (IAT style).
--- snip --- ... 0024:Call KERNEL32.GetProcAddress(7b810000,019891c4 "GetProcessDEPPolicy") ret=016cc21b 0024:Ret KERNEL32.GetProcAddress() retval=00000000 ret=016cc21b ... 0024:Call KERNEL32.GetProcAddress(7b810000,019891c4 "SetProcessDEPPolicy") ret=016cc21b 0024:Ret KERNEL32.GetProcAddress() retval=7b824a38 ret=016cc21b ... --- snip ---
Later the app calls most of the API directly - without validation. Using GetVersionEx() it determined the Windows version and relied on this information - assuming specific APIs are present. Wine implements API on demand and does not provide a stub for every API leading to failure.
--- snip --- 0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7bc7d333 ip=7bc7d333 tid=0024 0024:trace:seh:raise_exception info[0]=00000000 0024:trace:seh:raise_exception info[1]=00000000 0024:trace:seh:raise_exception eax=00000000 ebx=7bcc7ff4 ecx=67c24165 edx=00000000 esi=01801f5c edi=0000008f 0024:trace:seh:raise_exception ebp=0032eb64 esp=0032ea6c cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00210246 0024:trace:seh:call_vectored_handlers calling handler at 0x7e00f3cd code=c0000005 flags=0 0024:trace:seh:call_vectored_handlers handler at 0x7e00f3cd returned 0 0024:trace:seh:call_stack_handlers calling handler at 0x7bc980b5 code=c0000005 flags=0 0024:trace:seh:__regs_RtlUnwind code=c0000005 flags=2 0024:trace:seh:__regs_RtlUnwind calling handler at 0x7bc7ae27 code=c0000005 flags=2 0024:trace:seh:__regs_RtlUnwind handler at 0x7bc7ae27 returned 1 0024:trace:seh:raise_exception code=c0000005 flags=0 addr=(nil) ip=00000000 tid=0024 0024:trace:seh:raise_exception info[0]=00000000 0024:trace:seh:raise_exception info[1]=00000000 0024:trace:seh:raise_exception eax=00000000 ebx=0000008e ecx=00000000 edx=00000000 esi=01801f5c edi=0000008f 0024:trace:seh:raise_exception ebp=0032ef00 esp=0032eed8 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00210206 0024:trace:seh:call_vectored_handlers calling handler at 0x7e00f3cd code=c0000005 flags=0 0024:trace:seh:call_vectored_handlers handler at 0x7e00f3cd returned 0 0024:trace:seh:call_stack_handlers calling handler at 0x1801ff9 code=c0000005 flags=0 0024:trace:seh:call_stack_handlers handler at 0x1801ff9 returned 1 0024:trace:seh:call_stack_handlers calling handler at 0x16c5c9e code=c0000005 flags=0 0024:Call user32.LoadStringW(016c0000,0000ffec,0032c700,00001000) ret=016ca6c6 0024:Ret user32.LoadStringW() retval=00000004 ret=016ca6c6 0024:Call KERNEL32.VirtualQuery(00000000,0032e974,0000001c) ret=016d99a0 0024:Ret KERNEL32.VirtualQuery() retval=0000001c ret=016d99a0 0024:Call user32.LoadStringW(016c0000,0000ffe2,0032c6f8,00001000) ret=016ca6c6 0024:Ret user32.LoadStringW() retval=00000030 ret=016ca6c6 0024:Call ntdll.RtlUnwind(0032ef08,016c5694,0032ee80,00000000) ret=016c5694 --- snip ---
The first exception is actually Wine itself, trying to figure out if this is an ATL thunk to be emulated.
http://source.winehq.org/git/wine.git/blob/62b7069fa941c6ac1c923f0a7986261e2...
Small nitpick ;-) One could check for NULL pc before trying this (line 1543), avoiding one extra exception ("call <null ptr>" is common for missing API/unimpl stubs bugs).
The second exception is the real one passed to app. Unfortunately this all happens in dll entry point with loader lock, hence the hang/winedbg behaviour.
Add GetProcessDEPPolicy() stub and the app happily starts, showing main GUI. Though it will complain later about other Wine insufficiencies, deserving own bugs.
Regards