[Bug 23222] DiE (Detect it Easy) crashes with unhandled page fault

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Jun 21 15:31:17 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=23222





--- Comment #14 from Anastasius Focht <focht at gmx.net>  2010-06-21 15:31:15 ---
Hello,

well you could provide some info using winedbg in gdb proxy mode (winedbg alone
doesn't work well within signal handlers).
Make sure you compiled Wine with symbols.
Start the executable as follows:

--- snip ---
$ winedbg --gdb ./DiE.exe 
0041:0047: create process 'C:\Program Files\die\DiE.exe'/0x110698 @0x535e0c
(0<0>)
...
00000041:00000047: exception code=0xc0000005
create_alpha_bitmap
...
--- snip ---

It should break at first chance exception from shell32's icon cache init.
This is expected and harmless.
Now instruct gdb to pass those exceptions to app handler:

--- snip ---
$ handle SIGSEGV pass nostop noprint
--- snip ---

Press continue "c" to pass it, you'll see output like this:

--- snip ---
Wine-gdb> c
Continuing.
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet

Program received signal SIGTRAP, Trace/breakpoint trap.
start_process (peb=0x7ffdf000) at ../../../wine-git/dlls/kernel32/process.c:996
--- snip ---

The debugger stops at program entry point (as expected).
Because you will most likely hit a bug/encounter erroneous SIGSEGVs we revert
the SIGSEGV handling behaviour back to defaults:

--- snip ---
Wine-gdb> handle SIGSEGV pass stop print
Signal        Stop    Print    Pass to program    Description
SIGSEGV       Yes    Yes    Yes        Segmentation fault
--- snip ---

Do another continue "c".
If everything works you should see the single step trap like this:

--- snip ---
Wine-gdb> c
Continuing.
trying to process a verbose packet

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00535f9f in ?? ()
--- snip ---

This is the single step instruction within app code and this needs to be
specially handled.

If you don't see the SIGTRAP after continuing from program entry point (for
example you get a SIGSEGV instead of SIGTRAP), please do a backtrace "bt" and
"info reg" command at this point and attach the complete output of debugging
session.

Otherwise (good case) you need to instruct gdb to pass this special one to
signal handler like this:

--- snip ---
$ handle SIGTRAP pass nostop
--- snip ---

The debugger will ask you a question, answer with "yes"

--- snip ---
SIGTRAP is used by the debugger.
Are you sure you want to change it? (y or n) y
Signal        Stop    Print    Pass to program    Description
SIGTRAP       No    Yes    Yes        Trace/breakpoint trap
--- snip ---

Continue "c".
The debugger should now stop at SIGSEGV due to explicit icon load from app
(would not been seen if we didn't revert the SIGSEGV back to defaults):

--- snip ---
Wine-gdb> c
Continuing.
trying to process a verbose packet

Program received signal SIGTRAP, Trace/breakpoint trap.
trying to process a verbose packet

Program received signal SIGSEGV, Segmentation fault.
0x685c9dcd in create_alpha_bitmap (color=<value optimized out>, mask=<value
optimized out>, src_info=0x128f98, color_bits=0x68676330)
--- snip ---

Continue "c" and the app GUI should be shown.

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