Strange crash
Dmitry Timoshkov
dmitry at sloboda.ru
Wed Apr 18 07:08:12 CDT 2001
"Rein Klazes" <rklazes at xs4all.nl> wrote:
[...]
> | fldcw -2(%edx)
>
> Load original CW. Now the exception happens, which indicates the PE
> maskbit is cleared. I don't see how that can be. (you should check
> that the disassembly in winedbg is the same as this code)
Attached disassembly is almost the same as assember generated by gcc
(not counting garbage instead of jump table and fildl (gcc) vs. filds (winedbg))
> Moreover I cannot reproduce your failure (using gcc 2.95.4 and gnu as
> 2.11.90.0.1) If I set the variables to 0 and 0.0, no exception
> follows.
I'm completely at loss now. I'm debugging very complex application which
actually consists of several simultaneously running processes. Perhaps
interaction between processes leads to some unexpected behaviour.
Also I don't understand why winedbg prints dc->xformWorld2Vport.eM11 = 0.0,
though dc->xformWorld2Vport.eM11 is always 1.0 in the log trace (added to
X11DRV_PEN_SelectObject right before the GDI_ROUND call).
Something wrong, but I don't know how proceed further yet.
Any thoughts?
-------------- next part --------------
Wine-dbg>disas X11DRV_PEN_SelectObject,0x40858b11
disas X11DRV_PEN_SelectObject,0x40858b11
0x40858970 (X11DRV_PEN_SelectObject [pen.c:70]): pushl %ebp
0x40858971 (X11DRV_PEN_SelectObject+0x1 [pen.c:70]): movl %esp,%ebp
0x40858973 (X11DRV_PEN_SelectObject+0x3 [pen.c:70]): subl $60,%esp
0x40858976 (X11DRV_PEN_SelectObject+0x6 [pen.c:70]): pushl %edi
0x40858977 (X11DRV_PEN_SelectObject+0x7 [pen.c:70]): pushl %esi
0x40858978 (X11DRV_PEN_SelectObject+0x8 [pen.c:70]): pushl %ebx
0x40858979 (X11DRV_PEN_SelectObject+0x9 [pen.c:70]): call 0x4085897e (X11DRV_PEN_SelectObject+0xe [pen.c:70])
0x4085897e (X11DRV_PEN_SelectObject+0xe [pen.c:70]): popl %ebx
0x4085897f (X11DRV_PEN_SelectObject+0xf [pen.c:70]): addl $0x2462e,%ebx
0x40858985 (X11DRV_PEN_SelectObject+0x15 [pen.c:70]): movl 0x8(%ebp),%ecx
0x40858988 (X11DRV_PEN_SelectObject+0x18 [pen.c:70]): movzwl 0x52(%ecx),%edx
0x4085898c (X11DRV_PEN_SelectObject+0x1c [pen.c:70]): movl %edx,0xffffffc4(%ebp)
0x4085898f (X11DRV_PEN_SelectObject+0x1f [pen.c:70]): movl 0x10(%ebp),%edi
0x40858992 (X11DRV_PEN_SelectObject+0x22 [pen.c:70]): movl 0xc(%ebp),%eax
0x40858995 (X11DRV_PEN_SelectObject+0x25 [pen.c:70]): movw %ax,0x52(%ecx)
0x40858999 (X11DRV_PEN_SelectObject+0x29 [pen.c:70]): movl 0x10(%ecx),%esi
0x4085899c (X11DRV_PEN_SelectObject+0x2c [pen.c:70]): movl 0x8(%edi),%eax
0x4085899f (X11DRV_PEN_SelectObject+0x2f [pen.c:70]): andl $15,%eax
0x408589a2 (X11DRV_PEN_SelectObject+0x32 [pen.c:70]): movl %eax,0xc(%esi)
0x408589a5 (X11DRV_PEN_SelectObject+0x35 [pen.c:70]): movl 0x8(%edi),%edx
0x408589a8 (X11DRV_PEN_SelectObject+0x38 [pen.c:70]): andl $0xf0000,%edx
0x408589ae (X11DRV_PEN_SelectObject+0x3e [pen.c:70]): movl %edx,0x28(%esi)
0x408589b1 (X11DRV_PEN_SelectObject+0x41 [pen.c:70]): movl 0x8(%edi),%eax
0x408589b4 (X11DRV_PEN_SelectObject+0x44 [pen.c:70]): andl $0xf00,%eax
0x408589b9 (X11DRV_PEN_SelectObject+0x49 [pen.c:70]): movl %eax,0x10(%esi)
0x408589bc (X11DRV_PEN_SelectObject+0x4c [pen.c:70]): movl 0x8(%edi),%edx
0x408589bf (X11DRV_PEN_SelectObject+0x4f [pen.c:70]): andl $0xf000,%edx
0x408589c5 (X11DRV_PEN_SelectObject+0x55 [pen.c:70]): movl %edx,0x14(%esi)
0x408589c8 (X11DRV_PEN_SelectObject+0x58 [pen.c:70]): filds 0xc(%edi)
0x408589cb (X11DRV_PEN_SelectObject+0x5b [pen.c:70]): leal 0xffffffe0(%ebp),%edx
0x408589ce (X11DRV_PEN_SelectObject+0x5e [pen.c:70]): fldl 0xffff690c(%ebx)
0x408589d4 (X11DRV_PEN_SelectObject+0x64 [pen.c:70]): fxch %st(1)
0x408589d6 (X11DRV_PEN_SelectObject+0x66 [pen.c:70]): fmuls 0xe8(%ecx)
0x408589dc (X11DRV_PEN_SelectObject+0x6c [pen.c:70]): fld %st(1)
0x408589de (X11DRV_PEN_SelectObject+0x6e [pen.c:70]): fmulp %st,%st(1)
0x408589e0 (X11DRV_PEN_SelectObject+0x70 [pen.c:70]): fstps 0xfffffff8(%ebp)
0x408589e3 (X11DRV_PEN_SelectObject+0x73 [pen.c:70]): flds 0xfffffff8(%ebp)
0x408589e6 (X11DRV_PEN_SelectObject+0x76 [pen.c:70]): faddp %st,%st(1)
0x408589e8 (X11DRV_PEN_SelectObject+0x78 [pen.c:70]): fnstcw 0xfffffffe(%edx)
0x408589eb (X11DRV_PEN_SelectObject+0x7b [pen.c:70]): movzwl 0xfffffffe(%edx),%eax
0x408589ef (X11DRV_PEN_SelectObject+0x7f [pen.c:70]): andb $0xf3,%ah
0x408589f2 (X11DRV_PEN_SelectObject+0x82 [pen.c:70]): orb $0x4,%ah
0x408589f5 (X11DRV_PEN_SelectObject+0x85 [pen.c:70]): movw %ax,0xfffffffc(%edx)
0x408589f9 (X11DRV_PEN_SelectObject+0x89 [pen.c:70]): fldcw 0xfffffffc(%edx)
0x408589fc (X11DRV_PEN_SelectObject+0x8c [pen.c:70]): frndint
0x408589fe (X11DRV_PEN_SelectObject+0x8e [pen.c:70]): fldcw 0xfffffffe(%edx)
0x40858a01 (X11DRV_PEN_SelectObject+0x91 [pen.c:70]): fstpl 0xffffffd0(%ebp)
0x40858a04 (X11DRV_PEN_SelectObject+0x94 [pen.c:70]): fldl 0xffffffd0(%ebp)
0x40858a07 (X11DRV_PEN_SelectObject+0x97 [pen.c:70]): fnstcw 0xffffffce(%ebp)
0x40858a0a (X11DRV_PEN_SelectObject+0x9a [pen.c:70]): movw 0xffffffce(%ebp),%dx
0x40858a0e (X11DRV_PEN_SelectObject+0x9e [pen.c:70]): orw $0xc00,%dx
0x40858a13 (X11DRV_PEN_SelectObject+0xa3 [pen.c:70]): movw %dx,0xffffffcc(%ebp)
0x40858a17 (X11DRV_PEN_SelectObject+0xa7 [pen.c:70]): fldcw 0xffffffcc(%ebp)
0x40858a1a (X11DRV_PEN_SelectObject+0xaa [pen.c:70]): fistps 0xffffffc8(%ebp)
0x40858a1d (X11DRV_PEN_SelectObject+0xad [pen.c:70]): movl 0xffffffc8(%ebp),%eax
0x40858a20 (X11DRV_PEN_SelectObject+0xb0 [pen.c:70]): fldcw 0xffffffce(%ebp)
0x40858a23 (X11DRV_PEN_SelectObject+0xb3 [pen.c:70]): movl %eax,0x1c(%esi)
0x40858a26 (X11DRV_PEN_SelectObject+0xb6 [pen.c:70]): testl %eax,%eax
0x40858a28 (X11DRV_PEN_SelectObject+0xb8 [pen.c:70]): jnl 0x40858a2f (X11DRV_PEN_SelectObject+0xbf [pen.c:70])
0x40858a2a (X11DRV_PEN_SelectObject+0xba [pen.c:70]): negl %eax
0x40858a2c (X11DRV_PEN_SelectObject+0xbc [pen.c:70]): movl %eax,0x1c(%esi)
0x40858a2f (X11DRV_PEN_SelectObject+0xbf [pen.c:70]): cmpl $1,0x1c(%esi)
0x40858a33 (X11DRV_PEN_SelectObject+0xc3 [pen.c:70]): jnz 0x40858a3c (X11DRV_PEN_SelectObject+0xcc [pen.c:70])
0x40858a35 (X11DRV_PEN_SelectObject+0xc5 [pen.c:70]): movl $0x0,0x1c(%esi)
0x40858a3c (X11DRV_PEN_SelectObject+0xcc [pen.c:70]): pushl 0x14(%edi)
0x40858a3f (X11DRV_PEN_SelectObject+0xcf [pen.c:70]): pushl %ecx
0x40858a40 (X11DRV_PEN_SelectObject+0xd0 [pen.c:70]): call 0x4083efd0 (_init+0xcf4)
0x40858a45 (X11DRV_PEN_SelectObject+0xd5 [pen.c:70]): movl %eax,0x18(%esi)
0x40858a48 (X11DRV_PEN_SelectObject+0xd8 [pen.c:70]): movl 0x8(%edi),%eax
0x40858a4b (X11DRV_PEN_SelectObject+0xdb [pen.c:70]): andl $15,%eax
0x40858a4e (X11DRV_PEN_SelectObject+0xde [pen.c:70]): addl $8,%esp
0x40858a51 (X11DRV_PEN_SelectObject+0xe1 [pen.c:70]): subl $1,%eax
0x40858a54 (X11DRV_PEN_SelectObject+0xe4 [pen.c:70]): cmpl $7,%eax
0x40858a57 (X11DRV_PEN_SelectObject+0xe7 [pen.c:70]): jnbe 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858a5d (X11DRV_PEN_SelectObject+0xed [pen.c:70]): movl %ebx,%edx
0x40858a5f (X11DRV_PEN_SelectObject+0xef [pen.c:70]): subl 0xfffdbac4(%ebx,%eax,4),%edx
0x40858a66 (X11DRV_PEN_SelectObject+0xf6 [pen.c:70]): jmp *%edxp
0x40858a68 (X11DRV_PEN_SelectObject+0xf8 [pen.c:70]): nop
0x40858a69 (X11DRV_PEN_SelectObject+0xf9 [pen.c:70]): leal 0x0(%esi),%esi
0x40858a70 (X11DRV_PEN_SelectObject+0x100 [pen.c:70]): sbbb $69,%al
0x40858a72 (X11DRV_PEN_SelectObject+0x102 [pen.c:70]): addb 0x0(%eax),%al
0x40858a74 (X11DRV_PEN_SelectObject+0x104 [pen.c:70]): adcb $69,%al
0x40858a76 (X11DRV_PEN_SelectObject+0x106 [pen.c:70]): addb 0x0(%eax),%al
0x40858a78 (X11DRV_PEN_SelectObject+0x108 [pen.c:70]): cld
0x40858a79 (X11DRV_PEN_SelectObject+0x109 [pen.c:70]): incl %esp
0x40858a7a (X11DRV_PEN_SelectObject+0x10a [pen.c:70]): addb 0x0(%eax),%al
0x40858a7c (X11DRV_PEN_SelectObject+0x10c [pen.c:70]): ljmp 0x0244:0xa5000244
0x40858a83 (X11DRV_PEN_SelectObject+0x113 [pen.c:70]): addb %ah,0xc6000244(%ebp)
0x40858a89 (X11DRV_PEN_SelectObject+0x119 [pen.c:70]): incl %esp
0x40858a8a (X11DRV_PEN_SelectObject+0x11a [pen.c:70]): addb 0x0(%eax),%al
0x40858a8c (X11DRV_PEN_SelectObject+0x11c [pen.c:70]): fadds 0x0(%edx,%eax,1)
0x40858a90 (X11DRV_PEN_SelectObject+0x120 [pen.c:70]): leal 0xffff68b4(%ebx),%eax
0x40858a96 (X11DRV_PEN_SelectObject+0x126 [pen.c:70]): jmp 0x40858ada (X11DRV_PEN_SelectObject+0x16a [pen.c:70])
0x40858a98 (X11DRV_PEN_SelectObject+0x128 [pen.c:70]): leal 0xffff68b6(%ebx),%edx
0x40858a9e (X11DRV_PEN_SelectObject+0x12e [pen.c:70]): movl %edx,0x20(%esi)
0x40858aa1 (X11DRV_PEN_SelectObject+0x131 [pen.c:70]): movl $0x2,0x24(%esi)
0x40858aa8 (X11DRV_PEN_SelectObject+0x138 [pen.c:70]): jmp 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858aaa (X11DRV_PEN_SelectObject+0x13a [pen.c:70]): leal 0x0(%esi),%esi
0x40858ab0 (X11DRV_PEN_SelectObject+0x140 [pen.c:70]): leal 0xffff68b8(%ebx),%eax
0x40858ab6 (X11DRV_PEN_SelectObject+0x146 [pen.c:70]): movl %eax,0x20(%esi)
0x40858ab9 (X11DRV_PEN_SelectObject+0x149 [pen.c:70]): movl $0x4,0x24(%esi)
0x40858ac0 (X11DRV_PEN_SelectObject+0x150 [pen.c:70]): jmp 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858ac2 (X11DRV_PEN_SelectObject+0x152 [pen.c:70]): leal 0xffff68bc(%ebx),%edx
0x40858ac8 (X11DRV_PEN_SelectObject+0x158 [pen.c:70]): movl %edx,0x20(%esi)
0x40858acb (X11DRV_PEN_SelectObject+0x15b [pen.c:70]): movl $0x6,0x24(%esi)
0x40858ad2 (X11DRV_PEN_SelectObject+0x162 [pen.c:70]): jmp 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858ad4 (X11DRV_PEN_SelectObject+0x164 [pen.c:70]): leal 0xffff68c2(%ebx),%eax
0x40858ada (X11DRV_PEN_SelectObject+0x16a [pen.c:70]): movl %eax,0x20(%esi)
0x40858add (X11DRV_PEN_SelectObject+0x16d [pen.c:70]): movl $0x2,0x24(%esi)
0x40858ae4 (X11DRV_PEN_SelectObject+0x174 [pen.c:70]): jmp 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858ae6 (X11DRV_PEN_SelectObject+0x176 [pen.c:70]): movl 0x88c(%ebx),%edx
0x40858aec (X11DRV_PEN_SelectObject+0x17c [pen.c:70]): testb $0x1,0x0(%edx)
0x40858aef (X11DRV_PEN_SelectObject+0x17f [pen.c:70]): jz 0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70])
0x40858af1 (X11DRV_PEN_SelectObject+0x181 [pen.c:70]): leal 0xffff68d4(%ebx),%eax
0x40858af7 (X11DRV_PEN_SelectObject+0x187 [pen.c:70]): pushl %eax
0x40858af8 (X11DRV_PEN_SelectObject+0x188 [pen.c:70]): leal 0xffff68f3(%ebx),%eax
0x40858afe (X11DRV_PEN_SelectObject+0x18e [pen.c:70]): pushl %eax
0x40858aff (X11DRV_PEN_SelectObject+0x18f [pen.c:70]): pushl %edx
0x40858b00 (X11DRV_PEN_SelectObject+0x190 [pen.c:70]): pushl $0x0
0x40858b02 (X11DRV_PEN_SelectObject+0x192 [pen.c:70]): call 0x4083ff50 (_init+0x1c74)
0x40858b07 (X11DRV_PEN_SelectObject+0x197 [pen.c:70]): movl 0xffffffc4(%ebp),%eax
0x40858b0a (X11DRV_PEN_SelectObject+0x19a [pen.c:70]): leal 0xffffffb8(%ebp),%esp
0x40858b0d (X11DRV_PEN_SelectObject+0x19d [pen.c:70]): popl %ebx
0x40858b0e (X11DRV_PEN_SelectObject+0x19e [pen.c:70]): popl %esi
0x40858b0f (X11DRV_PEN_SelectObject+0x19f [pen.c:70]): popl %edi
0x40858b10 (X11DRV_PEN_SelectObject+0x1a0 [pen.c:70]): leave
0x40858b11 (X11DRV_PEN_SelectObject+0x1a1 [pen.c:70]): ret
Wine-dbg>
More information about the wine-devel
mailing list