[GHC] #7323: decoding GADTs gives internal error: stg_ap_v_ret
GHC
cvs-ghc at haskell.org
Sat Oct 13 01:06:08 CEST 2012
#7323: decoding GADTs gives internal error: stg_ap_v_ret
---------------------------+------------------------------------------------
Reporter: heisenbug | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.7 | Keywords:
Os: Linux | Architecture: x86_64 (amd64)
Failure: Runtime crash | Testcase: yes
Blockedby: | Blocking:
Related: |
---------------------------+------------------------------------------------
Comment(by heisenbug):
Debug session on OS X (i386)
{{{
Breakpoint 1, 0x003bfe68 in stg_ap_v_info ()
(gdb) info reg
eax 0x2808 10248 <<<< info table:
Main_TPString_con_info
ecx 0x4 4 <<<< INFO TYPE (dito)
edx 0xd00040 13631552
ebx 0x425f4c 4349772
esp 0xbfffd87c 0xbfffd87c
ebp 0xd033ac 0xd033ac
esi 0xd058f8 13654264
edi 0xd05900 13654272
eip 0x3bfe68 0x3bfe68 <stg_ap_v_info+676>
eflags 0x202 514
cs 0x1b 27
ss 0x23 35
ds 0x23 35
es 0x23 35
fs 0x0 0
gs 0xf 15
(gdb) x/20x $eax-4
0x2804 <Main_TPString_con_info_dsp+8>: 0x00010004 0xff02c683
0x000c0065 0x90660000
0x2814 <Main_TPString_static_info_dsp>: 0x003c216c 0x00000002
0x00010007 0xff02c683
0x2824 <Main_TPString_static_info+4>: 0x000c0065 0x89550000
0xec8353e5 0x0000e834
0x2834 <main+10>: 0x8d5b0000 0x3e380283 0x8b008b00
0x008b0450
0x2844 <main+26>: 0x89f04589 0x45c7f455 0x000002f0
0xf0458b00
(gdb) x/20x $eax
0x2808 <Main_TPString_con_info>: 0xff02c683 0x000c0065
0x90660000 0x003c216c
0x2818 <Main_TPString_static_info_dsp+4>: 0x00000002 0x00010007
0xff02c683 0x000c0065
0x2828 <Main_TPString_static_info+8>: 0x89550000 0xec8353e5
0x0000e834 0x8d5b0000
0x2838 <main+14>: 0x3e380283 0x8b008b00 0x008b0450
0x89f04589
0x2848 <main+30>: 0x45c7f455 0x000002f0 0xf0458b00
0x89f4558b
(gdb) p *(short*)0x2804
$1 = 4
}}}
It loads the address `Main_TPString_con_info` at this code position:
`Main_zdWTPString_info+0x14`
{{{
_Main_zdWTPString_info_dsp:
00000044 orb $_Main_zdWTPInt_info_dsp,%al
00000046 addb (%eax),%al
00000048 addb %al,(%eax)
0000004a addb %al,(%eax)
0000004c sldt (%eax)
0000004f addb %al,0x7b3b0cc7(%ebx)
00000055 popl %esp
00000056 ja 0x00000073
00000058 movl $_Main_TPString_con_info,0xf8(%edi)
<<<<<<<<<<<<<<<<
0000005f movl _Main_zdWTPInt_info_dsp(%ebp),%eax
00000062 movl %eax,0xfc(%edi)
00000065 movl 0x04(%ebp),%eax
00000068 movl %eax,(%edi)
0000006a leal 0xfa(%edi),%esi
0000006d addl $0x08,%ebp
00000070 jmp *_Main_zdWTPInt_info_dsp(%ebp) <<<< calls
stg_upd_frame_info
00000073 movl $_Main_zdWTPInt_info,0x74(%ebx)
0000007a movl $_Main_zdWTPString_closure,%esi
0000007f jmp *0xfc(%ebx)
00000082 orb $_Main_zdWTPInt_info_dsp,%al
00000084 addb %al,(%eax)
00000086 nop
}}}
{{{
0x003bfa18 <stg_upd_frame_info+0>: mov 0x4(%ebp),%eax
0x003bfa1b <stg_upd_frame_info+3>: add $0x8,%ebp
0x003bfa1e <stg_upd_frame_info+6>: sub $0x8,%esp
0x003bfa21 <stg_upd_frame_info+9>: push %eax
0x003bfa22 <stg_upd_frame_info+10>: mov %eax,0x4c(%esp)
0x003bfa26 <stg_upd_frame_info+14>: call 0x3892d5
<overwritingClosure> >>> overwritingClosure (p=0xd058e8) at
ClosureMacros.h:474
0x003bfa2b <stg_upd_frame_info+19>: add $0xc,%esp
0x003bfa2e <stg_upd_frame_info+22>: mov 0x40(%esp),%eax
0x003bfa32 <stg_upd_frame_info+26>: mov %esi,0x4(%eax)
0x003bfa35 <stg_upd_frame_info+29>: mov 0x3e63d8,%ecx
0x003bfa3b <stg_upd_frame_info+35>: mov %ecx,(%eax)
0x003bfa3d <stg_upd_frame_info+37>: mov %eax,%ecx
0x003bfa3f <stg_upd_frame_info+39>: and $0xfff00000,%ecx
0x003bfa45 <stg_upd_frame_info+45>: mov %eax,%edx
0x003bfa47 <stg_upd_frame_info+47>: and $0xff000,%edx
0x003bfa4d <stg_upd_frame_info+53>: shr $0x7,%edx
0x003bfa50 <stg_upd_frame_info+56>: or %ecx,%edx
0x003bfa52 <stg_upd_frame_info+58>: cmpw $0x0,0x14(%edx)
0x003bfa57 <stg_upd_frame_info+63>: jne 0x3bfa5c
<stg_upd_frame_info+68>
0x003bfa59 <stg_upd_frame_info+65>: jmp *0x0(%ebp) >>>>>>>>
stg_marked_upd_frame_info
0x003bfa5c <stg_upd_frame_info+68>: movswl 0x14(%edx),%ecx
0x003bfa60 <stg_upd_frame_info+72>: shl $0x2,%ecx
0x003bfa63 <stg_upd_frame_info+75>: mov 0x9c(%ebx),%edx
0x003bfa69 <stg_upd_frame_info+81>: add %ecx,%edx
0x003bfa6b <stg_upd_frame_info+83>: mov (%edx),%ecx
0x003bfa6d <stg_upd_frame_info+85>: mov (%ecx),%eax
0x003bfa6f <stg_upd_frame_info+87>: add $0x1000,%eax
0x003bfa74 <stg_upd_frame_info+92>: cmp %eax,0x4(%ecx)
0x003bfa77 <stg_upd_frame_info+95>: jae 0x3bfa8b
<stg_upd_frame_info+115>
0x003bfa79 <stg_upd_frame_info+97>: mov 0x4(%ecx),%eax
0x003bfa7c <stg_upd_frame_info+100>: mov 0x40(%esp),%edx
0x003bfa80 <stg_upd_frame_info+104>: mov %edx,(%eax)
0x003bfa82 <stg_upd_frame_info+106>: add $0x4,%eax
0x003bfa85 <stg_upd_frame_info+109>: mov %eax,0x4(%ecx)
0x003bfa88 <stg_upd_frame_info+112>: jmp *0x0(%ebp)
0x003bfa8b <stg_upd_frame_info+115>: sub $0xc,%esp
0x003bfa8e <stg_upd_frame_info+118>: mov %edx,0x58(%esp)
0x003bfa92 <stg_upd_frame_info+122>: mov %ecx,0x64(%esp)
0x003bfa96 <stg_upd_frame_info+126>: call 0x3a974c <allocBlock_lock>
0x003bfa9b <stg_upd_frame_info+131>: add $0xc,%esp
0x003bfa9e <stg_upd_frame_info+134>: mov 0x58(%esp),%ecx
0x003bfaa2 <stg_upd_frame_info+138>: mov %ecx,0x8(%eax)
0x003bfaa5 <stg_upd_frame_info+141>: mov 0x4c(%esp),%ecx
0x003bfaa9 <stg_upd_frame_info+145>: mov %eax,(%ecx)
0x003bfaab <stg_upd_frame_info+147>: mov %eax,%ecx
0x003bfaad <stg_upd_frame_info+149>: jmp 0x3bfa79
<stg_upd_frame_info+97>
0x003bfaaf <stg_upd_frame_info+151>: or %al,(%eax)
0x003bfab1 <stg_upd_frame_info+153>: add %al,(%eax)
0x003bfab3 <stg_upd_frame_info+155>: nop
End of assembler dump.
}}}
Next function
{{{
Dump of assembler code for function stg_marked_upd_frame_info:
0x003bfabc <stg_marked_upd_frame_info+0>: mov 0x4(%ebp),%eax
0x003bfabf <stg_marked_upd_frame_info+3>: mov 0x4(%eax),%ecx
0x003bfac2 <stg_marked_upd_frame_info+6>: add $0x8,%ebp
0x003bfac5 <stg_marked_upd_frame_info+9>: test $0x3,%ecx
0x003bfacb <stg_marked_upd_frame_info+15>: jne 0x3bfaf8
<stg_marked_upd_frame_info+60>
0x003bfacd <stg_marked_upd_frame_info+17>: cmp 0x64(%ebx),%ecx
0x003bfad0 <stg_marked_upd_frame_info+20>: je 0x3bfb63
<stg_marked_upd_frame_info+167> ++++ jumps
0x003bfad6 <stg_marked_upd_frame_info+26>: lea -0xc(%ebx),%ecx
0x003bfad9 <stg_marked_upd_frame_info+29>: mov 0x64(%ebx),%edx
0x003bfadc <stg_marked_upd_frame_info+32>: mov %eax,0x40(%esp)
0x003bfae0 <stg_marked_upd_frame_info+36>: mov %esi,%eax
0x003bfae2 <stg_marked_upd_frame_info+38>: sub $0xc,%esp
0x003bfae5 <stg_marked_upd_frame_info+41>: push %eax
0x003bfae6 <stg_marked_upd_frame_info+42>: mov 0x50(%esp),%eax
0x003bfaea <stg_marked_upd_frame_info+46>: push %eax
0x003bfaeb <stg_marked_upd_frame_info+47>: push %edx
0x003bfaec <stg_marked_upd_frame_info+48>: push %ecx
0x003bfaed <stg_marked_upd_frame_info+49>: call 0x3a512c
<updateThunk>
0x003bfaf2 <stg_marked_upd_frame_info+54>: add $0x1c,%esp
0x003bfaf5 <stg_marked_upd_frame_info+57>: jmp *0x0(%ebp)
0x003bfaf8 <stg_marked_upd_frame_info+60>: mov %ecx,%esi
0x003bfafa <stg_marked_upd_frame_info+62>: lea -0xc(%ebx),%eax
0x003bfafd <stg_marked_upd_frame_info+65>: mov 0x64(%ebx),%ecx
0x003bfb00 <stg_marked_upd_frame_info+68>: sub $0x4,%esp
0x003bfb03 <stg_marked_upd_frame_info+71>: push %ecx
0x003bfb04 <stg_marked_upd_frame_info+72>: push %eax
0x003bfb05 <stg_marked_upd_frame_info+73>: call 0x3a5093
<checkBlockingQueues>
0x003bfb0a <stg_marked_upd_frame_info+78>: add $0xc,%esp
0x003bfb0d <stg_marked_upd_frame_info+81>: jmp *0x0(%ebp)
0x003bfb10 <stg_marked_upd_frame_info+84>: sub $0xc,%esp
0x003bfb13 <stg_marked_upd_frame_info+87>: mov %edx,0x58(%esp)
0x003bfb17 <stg_marked_upd_frame_info+91>: mov %ecx,0x64(%esp)
0x003bfb1b <stg_marked_upd_frame_info+95>: call 0x3a974c
<allocBlock_lock>
0x003bfb20 <stg_marked_upd_frame_info+100>: add $0xc,%esp
0x003bfb23 <stg_marked_upd_frame_info+103>: mov 0x58(%esp),%ecx
0x003bfb27 <stg_marked_upd_frame_info+107>: mov %ecx,0x8(%eax)
0x003bfb2a <stg_marked_upd_frame_info+110>: mov 0x4c(%esp),%ecx
0x003bfb2e <stg_marked_upd_frame_info+114>: mov %eax,(%ecx)
0x003bfb30 <stg_marked_upd_frame_info+116>: mov %eax,%ecx
0x003bfb32 <stg_marked_upd_frame_info+118>: mov 0x4(%ecx),%eax
0x003bfb35 <stg_marked_upd_frame_info+121>: mov 0x40(%esp),%edx
0x003bfb39 <stg_marked_upd_frame_info+125>: mov %edx,(%eax)
0x003bfb3b <stg_marked_upd_frame_info+127>: add $0x4,%eax
0x003bfb3e <stg_marked_upd_frame_info+130>: mov %eax,0x4(%ecx)
0x003bfb41 <stg_marked_upd_frame_info+133>: jmp *0x0(%ebp)
0x003bfb44 <stg_marked_upd_frame_info+136>: movswl 0x14(%edx),%ecx
0x003bfb48 <stg_marked_upd_frame_info+140>: shl $0x2,%ecx
0x003bfb4b <stg_marked_upd_frame_info+143>: mov 0x9c(%ebx),%edx
0x003bfb51 <stg_marked_upd_frame_info+149>: add %ecx,%edx
0x003bfb53 <stg_marked_upd_frame_info+151>: mov (%edx),%ecx
0x003bfb55 <stg_marked_upd_frame_info+153>: mov (%ecx),%eax
0x003bfb57 <stg_marked_upd_frame_info+155>: add $0x1000,%eax
0x003bfb5c <stg_marked_upd_frame_info+160>: cmp %eax,0x4(%ecx)
0x003bfb5f <stg_marked_upd_frame_info+163>: jae 0x3bfb10
<stg_marked_upd_frame_info+84>
0x003bfb61 <stg_marked_upd_frame_info+165>: jmp 0x3bfb32
<stg_marked_upd_frame_info+118>
0x003bfb63 <stg_marked_upd_frame_info+167>: sub $0x8,%esp
<<<<<< here
0x003bfb66 <stg_marked_upd_frame_info+170>: push %eax
0x003bfb67 <stg_marked_upd_frame_info+171>: mov %eax,0x4c(%esp)
0x003bfb6b <stg_marked_upd_frame_info+175>: call 0x3892d5
<overwritingClosure>
0x003bfb70 <stg_marked_upd_frame_info+180>: add $0xc,%esp
0x003bfb73 <stg_marked_upd_frame_info+183>: mov 0x40(%esp),%eax
0x003bfb77 <stg_marked_upd_frame_info+187>: mov %esi,0x4(%eax)
0x003bfb7a <stg_marked_upd_frame_info+190>: mov 0x3e63d8,%ecx
0x003bfb80 <stg_marked_upd_frame_info+196>: mov %ecx,(%eax)
0x003bfb82 <stg_marked_upd_frame_info+198>: mov %eax,%ecx
0x003bfb84 <stg_marked_upd_frame_info+200>: and $0xfff00000,%ecx
0x003bfb8a <stg_marked_upd_frame_info+206>: mov %eax,%edx
0x003bfb8c <stg_marked_upd_frame_info+208>: and $0xff000,%edx
0x003bfb92 <stg_marked_upd_frame_info+214>: shr $0x7,%edx
0x003bfb95 <stg_marked_upd_frame_info+217>: or %ecx,%edx
0x003bfb97 <stg_marked_upd_frame_info+219>: cmpw $0x0,0x14(%edx)
0x003bfb9c <stg_marked_upd_frame_info+224>: jne 0x3bfb44
<stg_marked_upd_frame_info+136>
0x003bfb9e <stg_marked_upd_frame_info+226>: jmp *0x0(%ebp)
>>>>>>> stg_ap_v_info
0x003bfba1 <stg_marked_upd_frame_info+229>: or %al,(%eax)
0x003bfba3 <stg_marked_upd_frame_info+231>: add %al,(%eax)
0x003bfba5 <stg_marked_upd_frame_info+233>: nopl (%eax)
End of assembler dump.
}}}
Now jumping in the crasher
{{{
Dump of assembler code for function stg_ap_v_info:
0x003bfbc4 <stg_ap_v_info+0>: mov 0x3e6224,%eax
0x003bfbc9 <stg_ap_v_info+5>: cmpl $0x0,0xb4(%eax)
0x003bfbd0 <stg_ap_v_info+12>: jne 0x3bfc02 <stg_ap_v_info+62>
0x003bfbd2 <stg_ap_v_info+14>: mov 0x3e6224,%eax
0x003bfbd7 <stg_ap_v_info+19>: cmpl $0x0,0xa4(%eax)
0x003bfbde <stg_ap_v_info+26>: jne 0x3bfe78 <stg_ap_v_info+692>
0x003bfbe4 <stg_ap_v_info+32>: mov %esi,%eax
0x003bfbe6 <stg_ap_v_info+34>: and $0x3,%eax
0x003bfbe9 <stg_ap_v_info+37>: cmp $0x1,%eax
0x003bfbec <stg_ap_v_info+40>: je 0x3bfe8c <stg_ap_v_info+712>
0x003bfbf2 <stg_ap_v_info+46>: and $0xfffffffc,%esi
0x003bfbf5 <stg_ap_v_info+49>: mov (%esi),%eax
0x003bfbf7 <stg_ap_v_info+51>: movswl -0x4(%eax),%ecx ==== ecx
0x4 4
0x003bfbfb <stg_ap_v_info+55>: jmp *0x3d75ec(,%ecx,4) >>>>>
0x003bfe68
0x003bfc02 <stg_ap_v_info+62>: sub $0x8,%esp
0x003bfc05 <stg_ap_v_info+65>: push $0x3d75c8
0x003bfc0a <stg_ap_v_info+70>: call 0x39879c <debugBelch>
0x003bfc0f <stg_ap_v_info+75>: add $0xc,%esp
0x003bfc12 <stg_ap_v_info+78>: mov %esi,%eax
0x003bfc14 <stg_ap_v_info+80>: sub $0x8,%esp
0x003bfc17 <stg_ap_v_info+83>: push %eax
0x003bfc18 <stg_ap_v_info+84>: call 0x391820 <printClosure>
0x003bfc1d <stg_ap_v_info+89>: add $0xc,%esp
0x003bfc20 <stg_ap_v_info+92>: jmp 0x3bfbd2 <stg_ap_v_info+14>
0x003bfc22 <stg_ap_v_info+94>: mov 0x4(%esi),%esi
0x003bfc25 <stg_ap_v_info+97>: jmp 0x3bfbe4 <stg_ap_v_info+32>
0x003bfc27 <stg_ap_v_info+99>: mov 0x3e64d4,%ecx
0x003bfc2d <stg_ap_v_info+105>: mov %ecx,0x0(%ebp)
0x003bfc30 <stg_ap_v_info+108>: jmp *%eax
0x003bfc32 <stg_ap_v_info+110>: add $0x4,%ebp
0x003bfc35 <stg_ap_v_info+113>: mov 0x3e64d4,%eax
0x003bfc3a <stg_ap_v_info+118>: mov %eax,0x4(%ebx)
0x003bfc3d <stg_ap_v_info+121>: jmp *0x3e64a0
0x003bfc43 <stg_ap_v_info+127>: mov %ecx,0x58(%esp)
0x003bfc47 <stg_ap_v_info+131>: inc %ecx
0x003bfc48 <stg_ap_v_info+132>: mov 0x0(%ebp,%ecx,4),%ecx
0x003bfc4c <stg_ap_v_info+136>: mov %eax,0x64(%esp)
0x003bfc50 <stg_ap_v_info+140>: add $0xc,%eax
0x003bfc53 <stg_ap_v_info+143>: mov %edx,0x70(%esp)
0x003bfc57 <stg_ap_v_info+147>: mov %eax,0x7c(%esp)
0x003bfc5b <stg_ap_v_info+151>: mov 0x58(%esp),%eax
0x003bfc5f <stg_ap_v_info+155>: add %eax,%edx
0x003bfc61 <stg_ap_v_info+157>: mov 0x7c(%esp),%eax
0x003bfc65 <stg_ap_v_info+161>: mov %ecx,(%eax,%edx,4)
0x003bfc68 <stg_ap_v_info+164>: mov 0x58(%esp),%eax
0x003bfc6c <stg_ap_v_info+168>: inc %eax
0x003bfc6d <stg_ap_v_info+169>: mov 0x70(%esp),%edx
0x003bfc71 <stg_ap_v_info+173>: mov %eax,%ecx
0x003bfc73 <stg_ap_v_info+175>: mov 0x64(%esp),%eax
0x003bfc77 <stg_ap_v_info+179>: test %ecx,%ecx
0x003bfc79 <stg_ap_v_info+181>: jb 0x3bfc43 <stg_ap_v_info+127>
0x003bfc7b <stg_ap_v_info+183>: mov %eax,%esi
0x003bfc7d <stg_ap_v_info+185>: add $0x4,%ebp
0x003bfc80 <stg_ap_v_info+188>: jmp *0x0(%ebp)
0x003bfc83 <stg_ap_v_info+191>: mov %ecx,0x58(%esp)
0x003bfc87 <stg_ap_v_info+195>: mov 0x4c(%esp),%ecx
0x003bfc8b <stg_ap_v_info+199>: add $0xc,%ecx
0x003bfc8e <stg_ap_v_info+202>: mov %eax,0x64(%esp)
0x003bfc92 <stg_ap_v_info+206>: mov 0x58(%esp),%eax
0x003bfc96 <stg_ap_v_info+210>: mov (%ecx,%eax,4),%ecx
0x003bfc99 <stg_ap_v_info+213>: mov 0x64(%esp),%eax
0x003bfc9d <stg_ap_v_info+217>: add $0xc,%eax
0x003bfca0 <stg_ap_v_info+220>: mov %edx,0x70(%esp)
0x003bfca4 <stg_ap_v_info+224>: mov 0x58(%esp),%edx
0x003bfca8 <stg_ap_v_info+228>: mov %ecx,(%eax,%edx,4)
0x003bfcab <stg_ap_v_info+231>: inc %edx
0x003bfcac <stg_ap_v_info+232>: mov 0x64(%esp),%eax
0x003bfcb0 <stg_ap_v_info+236>: mov %edx,%ecx
0x003bfcb2 <stg_ap_v_info+238>: mov 0x70(%esp),%edx
0x003bfcb6 <stg_ap_v_info+242>: cmp %edx,%ecx
0x003bfcb8 <stg_ap_v_info+244>: jb 0x3bfc83 <stg_ap_v_info+191>
0x003bfcba <stg_ap_v_info+246>: xor %ecx,%ecx
0x003bfcbc <stg_ap_v_info+248>: jmp 0x3bfc77 <stg_ap_v_info+179>
0x003bfcbe <stg_ap_v_info+250>: mov %eax,0x40(%esp)
0x003bfcc2 <stg_ap_v_info+254>: mov 0x40(%esp),%eax
0x003bfcc6 <stg_ap_v_info+258>: cmp $0x1,%eax
0x003bfcc9 <stg_ap_v_info+261>: je 0x3bfc32 <stg_ap_v_info+110>
0x003bfccf <stg_ap_v_info+267>: mov %esi,%ecx
0x003bfcd1 <stg_ap_v_info+269>: movswl 0x6(%esi),%edx
0x003bfcd5 <stg_ap_v_info+273>: shl $0x2,%edx
0x003bfcd8 <stg_ap_v_info+276>: add $0xc,%edx
0x003bfcdb <stg_ap_v_info+279>: add %edx,%edi
0x003bfcdd <stg_ap_v_info+281>: cmp 0x5c(%ebx),%edi
0x003bfce0 <stg_ap_v_info+284>: ja 0x3bfd31 <stg_ap_v_info+365>
0x003bfce2 <stg_ap_v_info+286>: lea 0x4(%edi),%eax
0x003bfce5 <stg_ap_v_info+289>: sub %edx,%eax
0x003bfce7 <stg_ap_v_info+291>: mov 0x3e64a4,%edx
0x003bfced <stg_ap_v_info+297>: mov %edx,(%eax)
0x003bfcef <stg_ap_v_info+299>: mov 0x40(%esp),%edx
0x003bfcf3 <stg_ap_v_info+303>: dec %edx
0x003bfcf4 <stg_ap_v_info+304>: mov %dx,0x4(%eax)
0x003bfcf8 <stg_ap_v_info+308>: movswl 0x6(%ecx),%edx
0x003bfcfc <stg_ap_v_info+312>: mov %ecx,0x4c(%esp)
0x003bfd00 <stg_ap_v_info+316>: lea (%edx),%ecx
0x003bfd02 <stg_ap_v_info+318>: mov %cx,0x6(%eax)
0x003bfd06 <stg_ap_v_info+322>: mov 0x4c(%esp),%ecx
0x003bfd0a <stg_ap_v_info+326>: mov 0x8(%ecx),%ecx
0x003bfd0d <stg_ap_v_info+329>: mov %ecx,0x8(%eax)
0x003bfd10 <stg_ap_v_info+332>: xor %ecx,%ecx
0x003bfd12 <stg_ap_v_info+334>: jmp 0x3bfcb6 <stg_ap_v_info+242>
0x003bfd14 <stg_ap_v_info+336>: movswl 0x4(%esi),%eax
0x003bfd18 <stg_ap_v_info+340>: test %eax,%eax
0x003bfd1a <stg_ap_v_info+342>: ja 0x3bfcbe <stg_ap_v_info+250>
0x003bfd1c <stg_ap_v_info+344>: sub $0x4,%esp
0x003bfd1f <stg_ap_v_info+347>: push $0x36
0x003bfd21 <stg_ap_v_info+349>: push $0x0
0x003bfd23 <stg_ap_v_info+351>: mov %eax,0x4c(%esp)
0x003bfd27 <stg_ap_v_info+355>: call 0x3986fd <_assertFail>
0x003bfd2c <stg_ap_v_info+360>: add $0xc,%esp
0x003bfd2f <stg_ap_v_info+363>: jmp 0x3bfcc2 <stg_ap_v_info+254>
0x003bfd31 <stg_ap_v_info+365>: mov %edx,0x74(%ebx)
0x003bfd34 <stg_ap_v_info+368>: mov 0x3e64d4,%eax
0x003bfd39 <stg_ap_v_info+373>: mov %eax,0x0(%ebp)
0x003bfd3c <stg_ap_v_info+376>: jmp *-0x8(%ebx)
0x003bfd3f <stg_ap_v_info+379>: add $0x4,%ebp
0x003bfd42 <stg_ap_v_info+382>: inc %esi
0x003bfd43 <stg_ap_v_info+383>: mov %esi,%eax
0x003bfd45 <stg_ap_v_info+385>: and $0xfffffffc,%eax
0x003bfd48 <stg_ap_v_info+388>: jmp *(%eax)
0x003bfd4a <stg_ap_v_info+390>: lea 0x1(%eax),%ecx
0x003bfd4d <stg_ap_v_info+393>: mov 0x0(%ebp,%ecx,4),%ecx
0x003bfd51 <stg_ap_v_info+397>: mov %edx,0x4c(%esp)
0x003bfd55 <stg_ap_v_info+401>: add $0xc,%edx
0x003bfd58 <stg_ap_v_info+404>: mov %ecx,(%edx,%eax,4)
0x003bfd5b <stg_ap_v_info+407>: inc %eax
0x003bfd5c <stg_ap_v_info+408>: mov 0x4c(%esp),%edx
0x003bfd60 <stg_ap_v_info+412>: test %eax,%eax
0x003bfd62 <stg_ap_v_info+414>: jb 0x3bfd4a <stg_ap_v_info+390>
0x003bfd64 <stg_ap_v_info+416>: mov %edx,%esi
0x003bfd66 <stg_ap_v_info+418>: add $0x4,%ebp
0x003bfd69 <stg_ap_v_info+421>: jmp *0x0(%ebp)
0x003bfd6c <stg_ap_v_info+424>: mov %eax,0x40(%esp)
0x003bfd70 <stg_ap_v_info+428>: mov 0x40(%esp),%eax
0x003bfd74 <stg_ap_v_info+432>: cmp $0x1,%eax
0x003bfd77 <stg_ap_v_info+435>: je 0x3bfd3f <stg_ap_v_info+379>
0x003bfd79 <stg_ap_v_info+437>: cmp $0x4,%eax
0x003bfd7c <stg_ap_v_info+440>: jb 0x3bfdc7 <stg_ap_v_info+515>
0x003bfd7e <stg_ap_v_info+442>: mov $0xc,%ecx
0x003bfd83 <stg_ap_v_info+447>: add $0xc,%edi
0x003bfd86 <stg_ap_v_info+450>: cmp 0x5c(%ebx),%edi
0x003bfd89 <stg_ap_v_info+453>: ja 0x3bfdcb <stg_ap_v_info+519>
0x003bfd8b <stg_ap_v_info+455>: lea 0x4(%edi),%edx
0x003bfd8e <stg_ap_v_info+458>: sub %ecx,%edx
0x003bfd90 <stg_ap_v_info+460>: mov 0x3e64a4,%ecx
0x003bfd96 <stg_ap_v_info+466>: mov %ecx,(%edx)
0x003bfd98 <stg_ap_v_info+468>: dec %eax
0x003bfd99 <stg_ap_v_info+469>: mov %ax,0x4(%edx)
0x003bfd9d <stg_ap_v_info+473>: mov %esi,0x8(%edx)
0x003bfda0 <stg_ap_v_info+476>: movw $0x0,0x6(%edx)
0x003bfda6 <stg_ap_v_info+482>: xor %eax,%eax
0x003bfda8 <stg_ap_v_info+484>: jmp 0x3bfd60 <stg_ap_v_info+412>
0x003bfdaa <stg_ap_v_info+486>: movswl -0xa(%eax),%eax
0x003bfdae <stg_ap_v_info+490>: test %eax,%eax
0x003bfdb0 <stg_ap_v_info+492>: ja 0x3bfd6c <stg_ap_v_info+424>
0x003bfdb2 <stg_ap_v_info+494>: sub $0x4,%esp
0x003bfdb5 <stg_ap_v_info+497>: push $0x28
0x003bfdb7 <stg_ap_v_info+499>: push $0x0
0x003bfdb9 <stg_ap_v_info+501>: mov %eax,0x4c(%esp)
0x003bfdbd <stg_ap_v_info+505>: call 0x3986fd <_assertFail>
0x003bfdc2 <stg_ap_v_info+510>: add $0xc,%esp
0x003bfdc5 <stg_ap_v_info+513>: jmp 0x3bfd70 <stg_ap_v_info+428>
0x003bfdc7 <stg_ap_v_info+515>: add %eax,%esi
0x003bfdc9 <stg_ap_v_info+517>: jmp 0x3bfd7e <stg_ap_v_info+442>
0x003bfdcb <stg_ap_v_info+519>: mov %ecx,0x74(%ebx)
0x003bfdce <stg_ap_v_info+522>: mov 0x3e64d4,%eax
0x003bfdd3 <stg_ap_v_info+527>: mov %eax,0x0(%ebp)
0x003bfdd6 <stg_ap_v_info+530>: jmp *-0x8(%ebx)
0x003bfdd9 <stg_ap_v_info+533>: add $0x4,%ebp
0x003bfddc <stg_ap_v_info+536>: jmp *0x3e649c
0x003bfde2 <stg_ap_v_info+542>: lea 0x1(%eax),%ecx
0x003bfde5 <stg_ap_v_info+545>: mov 0x0(%ebp,%ecx,4),%ecx
0x003bfde9 <stg_ap_v_info+549>: mov %edx,0x4c(%esp)
0x003bfded <stg_ap_v_info+553>: add $0xc,%edx
0x003bfdf0 <stg_ap_v_info+556>: mov %ecx,(%edx,%eax,4)
0x003bfdf3 <stg_ap_v_info+559>: inc %eax
0x003bfdf4 <stg_ap_v_info+560>: mov 0x4c(%esp),%edx
0x003bfdf8 <stg_ap_v_info+564>: test %eax,%eax
0x003bfdfa <stg_ap_v_info+566>: jb 0x3bfde2 <stg_ap_v_info+542>
0x003bfdfc <stg_ap_v_info+568>: mov %edx,%esi
0x003bfdfe <stg_ap_v_info+570>: add $0x4,%ebp
0x003bfe01 <stg_ap_v_info+573>: jmp *0x0(%ebp)
0x003bfe04 <stg_ap_v_info+576>: mov %eax,0x40(%esp)
0x003bfe08 <stg_ap_v_info+580>: mov 0x40(%esp),%eax
0x003bfe0c <stg_ap_v_info+584>: cmp $0x1,%eax
0x003bfe0f <stg_ap_v_info+587>: je 0x3bfdd9 <stg_ap_v_info+533>
0x003bfe11 <stg_ap_v_info+589>: mov $0xc,%ecx
0x003bfe16 <stg_ap_v_info+594>: add $0xc,%edi
0x003bfe19 <stg_ap_v_info+597>: cmp 0x5c(%ebx),%edi
0x003bfe1c <stg_ap_v_info+600>: ja 0x3bfe5a <stg_ap_v_info+662>
0x003bfe1e <stg_ap_v_info+602>: lea 0x4(%edi),%edx
0x003bfe21 <stg_ap_v_info+605>: sub %ecx,%edx
0x003bfe23 <stg_ap_v_info+607>: mov 0x3e64a4,%ecx
0x003bfe29 <stg_ap_v_info+613>: mov %ecx,(%edx)
0x003bfe2b <stg_ap_v_info+615>: dec %eax
0x003bfe2c <stg_ap_v_info+616>: mov %ax,0x4(%edx)
0x003bfe30 <stg_ap_v_info+620>: mov %esi,0x8(%edx)
0x003bfe33 <stg_ap_v_info+623>: movw $0x0,0x6(%edx)
0x003bfe39 <stg_ap_v_info+629>: xor %eax,%eax
0x003bfe3b <stg_ap_v_info+631>: jmp 0x3bfdf8 <stg_ap_v_info+564>
0x003bfe3d <stg_ap_v_info+633>: movswl 0x10(%esi),%eax
0x003bfe41 <stg_ap_v_info+637>: test %eax,%eax
0x003bfe43 <stg_ap_v_info+639>: ja 0x3bfe04 <stg_ap_v_info+576>
0x003bfe45 <stg_ap_v_info+641>: sub $0x4,%esp
0x003bfe48 <stg_ap_v_info+644>: push $0x18
0x003bfe4a <stg_ap_v_info+646>: push $0x0
0x003bfe4c <stg_ap_v_info+648>: mov %eax,0x4c(%esp)
0x003bfe50 <stg_ap_v_info+652>: call 0x3986fd <_assertFail>
0x003bfe55 <stg_ap_v_info+657>: add $0xc,%esp
0x003bfe58 <stg_ap_v_info+660>: jmp 0x3bfe08 <stg_ap_v_info+580>
0x003bfe5a <stg_ap_v_info+662>: mov %ecx,0x74(%ebx)
0x003bfe5d <stg_ap_v_info+665>: mov 0x3e64d4,%eax
0x003bfe62 <stg_ap_v_info+670>: mov %eax,0x0(%ebp)
0x003bfe65 <stg_ap_v_info+673>: jmp *-0x8(%ebx)
0x003bfe68 <stg_ap_v_info+676>: sub $0x8,%esp
<<<<<< here
0x003bfe6b <stg_ap_v_info+679>: push $0x3d75dc
0x003bfe70 <stg_ap_v_info+684>: call 0x3986aa <barf> BOOOOOM!
0x003bfe75 <stg_ap_v_info+689>: add $0xc,%esp
0x003bfe78 <stg_ap_v_info+692>: lea 0x4(%ebp),%eax
0x003bfe7b <stg_ap_v_info+695>: sub $0x8,%esp
0x003bfe7e <stg_ap_v_info+698>: push %eax
0x003bfe7f <stg_ap_v_info+699>: call 0x3b09e5 <checkStackFrame>
0x003bfe84 <stg_ap_v_info+704>: add $0xc,%esp
0x003bfe87 <stg_ap_v_info+707>: jmp 0x3bfbe4 <stg_ap_v_info+32>
0x003bfe8c <stg_ap_v_info+712>: add $0x4,%ebp
0x003bfe8f <stg_ap_v_info+715>: jmp *-0x1(%esi)
0x003bfe92 <stg_ap_v_info+718>: or %al,(%eax)
0x003bfe94 <stg_ap_v_info+720>: add %al,(%eax)
0x003bfe96 <stg_ap_v_info+722>: xchg %ax,%ax
End of assembler dump.
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7323#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list