[Bug 28485] Pegasus Mail version 4.62 crashes on startup (needs GetProcessDEPPolicy stub)
wine-bugs at winehq.org
wine-bugs at winehq.org
Wed Oct 19 16:44:04 CDT 2011
http://bugs.winehq.org/show_bug.cgi?id=28485
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |focht at 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 at 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/62b7069fa941c6ac1c923f0a7986261e290862c0:/dlls/ntdll/signal_i386.c#l1536
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
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list