[Mono-bugs] [Bug 571131] Build fails only on 64bit xen instance with illegal operation

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Jan 15 19:25:04 EST 2010


http://bugzilla.novell.com/show_bug.cgi?id=571131

http://bugzilla.novell.com/show_bug.cgi?id=571131#c4


--- Comment #4 from Miguel de Icaza <miguel at novell.com> 2010-01-16 00:25:02 UTC ---
converting method System.StackOverflowException:.ctor ()
creating vars
created temp 0 (R16) of type System.StackOverflowException&
        this:  arg R16 <-
creating locals
locals done
method to IR System.StackOverflowException:.ctor ()
converting (in B2: stack: 0) IL_0000: ldarg.0   
converting (in B2: stack: 1) IL_0001: ldstr     "The requested operation caused
a stack overflow."
converting (in B2: stack: 2) IL_0006: call      0x060006df
INLINE START 0xa08758 System.StackOverflowException:.ctor () -> Locale:GetText
(string)
created temp 1 (R19) of type System.String
method to IR Locale:GetText (string)
created temp 2 (R20) of type System.String
converting (in B7: stack: 0) IL_0000: ldarg.0   
converting (in B7: stack: 1) IL_0001: ret       
INLINE END System.StackOverflowException:.ctor () -> Locale:GetText (string)
converting (in B2: stack: 2) IL_000b: call      0x060013aa
INLINE START 0xa4d030 System.StackOverflowException:.ctor () ->
System.SystemException:.ctor (string)
method to IR System.SystemException:.ctor (string)
created temp 3 (R23) of type System.Object
created temp 4 (R24) of type System.String
converting (in B12: stack: 0) IL_0000: ldarg.0   
converting (in B12: stack: 1) IL_0001: ldarg.1   
converting (in B12: stack: 2) IL_0002: call      0x06000619
INLINE ABORTED System.SystemException:.ctor (string)
converting (in B2: stack: 0) IL_0010: ret       
REGION BB0 IL_0000 ID_FFFFFFFF
REGION BB3 IL_0000 ID_FFFFFFFF
REGION BB2 IL_0010 ID_FFFFFFFF
REGION BB1 IL_0000 ID_FFFFFFFF

AFTER METHOD-TO-IR 0: [IN: , OUT:  BB3(0) ]

AFTER METHOD-TO-IR 3: [IN:  BB0(0), OUT:  BB2(0) ]

AFTER METHOD-TO-IR 2: [IN:  BB3(0), OUT:  BB1(0) ]
 move R17 <- R16
 aot_const R18 <-
 nop
 move R20 <- R18
 move R21 <- R20
 move R19 <- R21
 nop
 move R22 <- R19
 move R27 <- R17
 move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c
 br [B1]

AFTER METHOD-TO-IR 1: [IN:  BB2(0), OUT:  ]
CCOPY/2: R17 -> R16
remove_block_if_useless, removed BB3
br removal triggered 2 -> 1

HANDLE-GLOBAL-VREGS BLOCK 0:

HANDLE-GLOBAL-VREGS BLOCK 2:
 move R17 <- R16
 aot_const R18 <-
 move R20 <- R18
 move R21 <- R20
 move R19 <- R21
 move R22 <- R19
 move R27 <- R16
 move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c
 nop

HANDLE-GLOBAL-VREGS BLOCK 1:
CONVERTED R19(1) TO VREG.
CONVERTED R20(2) TO VREG.
CONVERTED R23(3) TO VREG.
CONVERTED R24(4) TO VREG.
        Reverse copyprop in BB2 on  move R22 <- R19
        Reverse copyprop in BB2 on  move R22 <- R21
        Reverse copyprop in BB2 on  move R22 <- R20
        Reverse copyprop in BB2 on  move R22 <- R18

BEFORE LOWER-VTYPE-OPTS  0: [IN: , OUT:  BB2(1) ]

AFTER LOWER-VTYPE-OPTS  0: [IN: , OUT:  BB2(1) ]

BEFORE LOWER-VTYPE-OPTS  2: [IN:  BB0(0), OUT:  BB1(2) ]
 aot_const R22 <-
 move R27 <- R16
 move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c

AFTER LOWER-VTYPE-OPTS  2: [IN:  BB0(0), OUT:  BB1(2) ]
 aot_const R22 <-
 move R27 <- R16
 move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c

BEFORE LOWER-VTYPE-OPTS  1: [IN:  BB2(1), OUT:  ]

AFTER LOWER-VTYPE-OPTS  1: [IN:  BB2(1), OUT:  ]
COSTLY: System.StackOverflowException:.ctor () R16 G0 C1 %r15

SPILL BLOCK 0:

SPILL BLOCK 2:
 aot_const R22 <-
         i   22 -1 -1 -1
        1  aot_const R22 <-
 move R27 <- R16
         ii  27 16 -1 -1
        1  nop
 move R28 <- R22
         ii  28 22 -1 -1
        1  move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c
             -1 -1 -1 -1
        1  voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi
<- R28] clobbers: c

SPILL BLOCK 1:
DUMP BLOCK 0:
DUMP BLOCK 2:
 aot_const R22 <-
 load_membase R27 <- [%rsp + 0x0]
 liverange_end R16
 move R28 <- R22
 voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi <- R28]
clobbers: c
DUMP BLOCK 1:

LOCAL REGALLOC: BASIC BLOCK 2:
        1  aot_const R22 <-
        2  load_membase R27 <- [%rsp + 0x0]
        3  liverange_end R16
        4  move R28 <- R22
        5  voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi
<- R28] clobbers: c
liveness: R22 [1 - 1]
liveness: R27 [2 - 2]
liveness: R28 [4 - 4]
processing:     5  voidcall [System.SystemException:.ctor (string)] [%rdi <-
R27] [%rsi <- R28] clobbers: c
        assigned arg reg %rdi to R27
        assigned arg reg %rsi to R28
        5  voidcall [System.SystemException:.ctor (string)] [%rdi <- R27] [%rsi
<- R28] clobbers: c
processing:     4  move R28 <- R22
        assigned dreg %rsi to dest R28
        freeable %rsi (R28) (born in 4)
        assigned sreg1 %rsi to R22
        4  move %rsi <- %rsi
processing:     3  liverange_end R16
        3  liverange_end R16
processing:     2  load_membase R27 <- [%rsp + 0x0]
        assigned dreg %rdi to dest R27
        freeable %rdi (R27) (born in 2)
        2  load_membase %rdi <- [%rsp + 0x0]
processing:     1  aot_const R22 <-
        assigned dreg %rsi to dest R22
        freeable %rsi (R22) (born in 1)
        1  aot_const %rsi <-
Basic block 0 starting at offset 0x8
Basic block 2 starting at offset 0x8
R16 END=0x13
Basic block 1 starting at offset 0x20
Method System.StackOverflowException:.ctor () emitted at 0x414f2e90 to
0x414f2eb5 (code length 37) [mscorlib.dll]

/tmp/.3VRY6U:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <tem_StackOverflowException__ctor>:
<BB>:2
   0:   48 83 ec 08             sub    $0x8,%rsp
   4:   48 89 3c 24             mov    %rdi,(%rsp)
   8:   49 8b 35 00 00 00 00    mov    0x0(%rip),%rsi        # f
<tem_StackOverflowException__ctor+0xf>
   f:   48 8b 3c 24             mov    (%rsp),%rdi
  13:   49 bb 00 00 00 00 00    mov    $0x0,%r11
  1a:   00 00 00 
  1d:   41 ff d3                callq  *%r11
<BB>:1
  20:   48 83 c4 08             add    $0x8,%rsp
  24:   c3                      retq   

Oddly, this does not seem to be what ends up in the file, this seems to be what
ends up in the file:
00000000000dbb70 <System_StackOverflowException__ctor>:
   dbb70:       48 83 ec 08             sub    $0x8,%rsp
   dbb74:       48 89 3c 24             mov    %rdi,(%rsp)
   dbb78:       49 8b 35 d9 93 29 00    mov    0x2993d9(%rip),%rsi        #
374f58 <__bss_start+0x2d58>
   dbb7f:       48 8b 3c 24             mov    (%rsp),%rdi
   dbb83:       e8 98 0a 00 00          callq  dc620
<System_SystemException__ctor_string>
   dbb88:       00 00                   add    %al,(%rax)
   dbb8a:       00 00                   add    %al,(%rax)
   dbb8c:       00 41 ff                add    %al,-0x1(%rcx)
   dbb8f:       d3 48 83                rorl   %cl,-0x7d(%rax)
   dbb92:       c4 08 c3 00             (bad)(bad) 

When running with GDB:
Program received signal SIGILL, Illegal instruction.
0x00007ffff4de5bc1 in System.StackOverflowException:.ctor (this=...,
message=0x7ffff7e55f80) from
/tmp/mono-2.7/mcs/class/lib/net_2_0/mscorlib.dll.so
(gdb) x/20i 0x00007ffff4de5bc1-33
0x7ffff4de5ba0 <System.StackOverflowException:.ctor>:    sub    $0x18,%rsp
0x7ffff4de5ba4 <System.StackOverflowException:.ctor+4>:    mov    %rdi,(%rsp)
0x7ffff4de5ba8 <System.StackOverflowException:.ctor+8>:    mov   
%rsi,0x8(%rsp)
0x7ffff4de5bad <System.StackOverflowException:.ctor+13>:    mov   
0x8(%rsp),%rsi
0x7ffff4de5bb2 <System.StackOverflowException:.ctor+18>:    callq 
0x7ffff4de6620 <System.SystemException:.ctor>
0x7ffff4de5bb7 <System.StackOverflowException:.ctor+23>:    add    %al,(%rax)
0x7ffff4de5bb9 <System.StackOverflowException:.ctor+25>:    add    %al,(%rax)
0x7ffff4de5bbb <System.StackOverflowException:.ctor+27>:    add   
%al,-0x1(%rcx)
0x7ffff4de5bbe <System.StackOverflowException:.ctor+30>:    rorl  
%cl,-0x7d(%rax)
0x7ffff4de5bc1 <System.StackOverflowException:.ctor+33>:    (bad)(bad) 

The dump after the callq instruction looks like this:
0x7ffff4de5bb7 <System.StackOverflowException:.ctor+23>:    0x00    0x00   
0x00    0x00    0x00    0x41    0xff    0xd3
0x7ffff4de5bbf <System.StackOverflowException:.ctor+31>:    0x48    0x83   
0xc4    0x18    0xc3    0x00    0x00    0x00

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list