Exception while trying to install winace 2.2

György 'Nog' Jeney nog at sdf.lonestar.org
Sun Sep 29 01:03:46 CDT 2002

While trying to get the winace 2.2 installer to run on wine, I got the
following exception without any messages on the console:

First chance exception: page fault on read access to 0x23c94fed in 32-bit
code (0x23c94fed).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:008f GS:0000
 EIP:23c94fed ESP:40682e52 EBP:00400000 EFLAGS:00010646(  R- 00 DI  Z- -P1 )
 EAX:00000000 EBX:40682e66 ECX:0000038b EDX:00420654
 ESI:00000001 EDI:0044efb5
Stack dump:
0x40682e52 (_end+0x32cc32):  004209e2 40682e98 00420658 00000000
0x40682e62 (_end+0x32cc42):  00000000 00463047 0042066b 40682f44
0x40682e72 (_end+0x32cc52):  00463000 401111c0 00000001 40682f38
0x40682e82 (_end+0x32cc62):  40682e96 400fd024 00463042 00000600
0x40682e92 (_end+0x32cc72):  00463000 2f440246 c81a4068 66b12fc3
0x40682ea2 (_end+0x32cc82):  c19d6f8a 25b92f81 51634d58 33c04011
0x40682eb2 (_end+0x32cc92):

0011: sel=008f base=401133c0 limit=00000fff 32-bit rw-
=>0 0x23c94fed (_end+0x1bc38885) (ebp=00400000)
  1 0x00000002 (ebp=00505a4d)
*** Invalid address 0x00505a4d (wace22.exe.EntryPoint+0xa2a0b)

0x23c94fed (_end+0x1bc38885): *** Invalid address 0x23c94fed
-- no code --

It seemd to me that the stack frame(s?) got corrupted so I debugged
further.  It
seems that the app throws an exception and catches it later on.  I set a
breakpoint on EXC_CallHandler where the backtrace still looked fine.  Just
before wine calls the exception handler, it pushes edx and then edi onto the
stack, then the handler gets called: call *%edx.  This puts excecution into
0x420658 which calls 0x4206ac. The assembly code at 0x4206ac looks like this:
0x004206ac (wace22.exe.+0x1f6ac in C:\wace22.exe): xorl %eax,%eax
0x004206ae (wace22.exe.+0x1f6ae in C:\wace22.exe): popl %esi
0x004206af (wace22.exe.+0x1f6af in C:\wace22.exe): movl %fs:0x0(%eax),%ebx
0x004206b2 (wace22.exe.+0x1f6b2 in C:\wace22.exe): movl 0x0(%ebx),%ebx
0x004206b4 (wace22.exe.+0x1f6b4 in C:\wace22.exe): leal 0xffffffd6(%ebx),%esp
0x004206b7 (wace22.exe.+0x1f6b7 in C:\wace22.exe): popl %ebp

This last pop is what makes the backtrace weird, before this the backtrace
looks like:
=>0 0x004206b7 (wace22.exe.+0x1f6b7 in C:\wace22.exe) (ebp=40570938)
  1 0x400c84c0 (EXC_RtlRaiseException+0x10c(rec=0x405709dc,
context=0x40570a34) [exception.c:214] in libntdll.dll.so) (ebp=405709c0)
  2 0x400d26e9 (do_segv+0x1a5(context=0x40570d1c, trap_code=0x400d2b98,
cr2=0x40570a50, err_code=0x1) [signal_i386.c:798] in libntdll.dll.so)
  3 0x400d2b4c (segv_handler+0x3c(__signal=0x2b, __context=0x2b)
[[signal_i386.c:986] in libntdll.dll.so) (ebp=40570d28)
  4 0x0000008f (ebp=00000000)

But after it, it looks like this:
=>0 0x004206c1 (wace22.exe.+0x1f6c1 in C:\wace22.exe) (ebp=00400000)
  1 0x00000002 (ebp=00505a4d)
*** Invalid address 0x00505a4d (wace22.exe.EntryPoint+0xa2a0b)

Is this normal?  If I just continue from this point then the first exception
will be thrown but quite a lot of functions get called between here and that
exception. The exception handler never does return.  Any one have any ideas
as to what might go wrong here?


More information about the wine-devel mailing list