Closed
Description
go version devel +87054c4 Wed Apr 22 02:50:48 2015 +0000 linux/amd64
A program silently crashed here (from a core file):
(gdb) bt
#0 runtime.sigtramp () at /ssd/src/go10/src/runtime/sys_linux_amd64.s:232
#1 0x0000000000469690 in runtime.sigtramp () at /ssd/src/go10/src/runtime/sys_linux_amd64.s:246
#2 0x0000000000000001 in ?? ()
#3 0x0000000000000000 in ?? ()
(gdb) disass
Dump of assembler code for function runtime.sigtramp:
0x0000000000469620 <+0>: sub $0x40,%rsp
0x0000000000469624 <+4>: mov %fs:0xfffffffffffffff8,%r10
0x000000000046962d <+13>: cmp $0x0,%r10
0x0000000000469631 <+17>: jne 0x469645 <runtime.sigtramp+37>
0x0000000000469633 <+19>: mov %rdi,(%rsp)
0x0000000000469637 <+23>: lea -0x1d60e(%rip),%rax # 0x44c030 <runtime.badsignal>
0x000000000046963e <+30>: callq *%rax
0x0000000000469640 <+32>: add $0x40,%rsp
0x0000000000469644 <+36>: retq
0x0000000000469645 <+37>: mov %r10,0x28(%rsp)
0x000000000046964a <+42>: mov 0xb8(%r10),%rax
=> 0x0000000000469651 <+49>: mov 0x48(%rax),%rax
0x0000000000469655 <+53>: mov %rax,%fs:0xfffffffffffffff8
0x000000000046965e <+62>: mov %rdi,(%rsp)
0x0000000000469662 <+66>: mov %rsi,0x8(%rsp)
0x0000000000469667 <+71>: mov %rdx,0x10(%rsp)
0x000000000046966c <+76>: mov %r10,0x18(%rsp)
0x0000000000469671 <+81>: callq 0x44abd0 <runtime.sighandler>
0x0000000000469676 <+86>: mov 0x28(%rsp),%r10
0x000000000046967b <+91>: mov %r10,%fs:0xfffffffffffffff8
0x0000000000469684 <+100>: add $0x40,%rsp
0x0000000000469688 <+104>: retq
0x0000000000469689 <+105>: add %al,(%rax)
0x000000000046968b <+107>: add %al,(%rax)
0x000000000046968d <+109>: add %al,(%rax)
0x000000000046968f <+111>: add %bh,0xf(%rax)
End of assembler dump.
(gdb) info registers
rax 0x0 0
rbx 0x0 0
rcx 0xc20807ab40 833358375744
rdx 0xc2097ebac0 833382955712
rsi 0xc2097ebbf0 833382956016
rdi 0xb 11
rbp 0x8 0x8
rsp 0xc2097eba78 0xc2097eba78
r8 0x10 16
r9 0x0 0
r10 0xc20807ab40 833358375744
r11 0x216 534
r12 0x1 1
r13 0xeccc98a8a 63565302410
r14 0xeccc98a8b 63565302411
r15 0xa3b0c0 10727616
rip 0x469651 0x469651 <runtime.sigtramp+49>
eflags 0x10202 [ IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
It means that g != nil but g.m == nil. The goroutine descriptor looks valid:
(gdb) p /x $r10
$1 = 0xc20807ab40
(gdb) x/100g 0xc20807ab40
0xc20807ab40: 0x000000c208953000 0x000000c208954000
0xc20807ab50: 0x000000c208953280 0xffffffffffffffff
0xc20807ab60: 0x0000000000000000 0x0000000000000000
0xc20807ab70: 0x0000000000000000 0x0000000000465f90
0xc20807ab80: 0x000000c20807ab40 0x0000000000000000
0xc20807ab90: 0x0000000000000000 0x0000000000000000
0xc20807aba0: 0x000000000045ace0 0x0000000000000000
0xc20807abb0: 0x000000000051c0f5 0x0000000000000000
0xc20807abc0: 0x0000000000000002 0x0000000000000017
0xc20807abd0: 0x0000000000000000 0x000000000084ddb0
0xc20807abe0: 0x000000000000000c 0x000000c20807a8c0
0xc20807abf0: 0x0000000001000000 0x0000000000000000
0xc20807ac00: 0x0000000000000000 0x0000000000000000
0xc20807ac10: 0x0000000000000000 0x0000000000000000
0xc20807ac20: 0x0000000000000000 0x0000000000000000
0xc20807ac30: 0x0000000000000000 0x0000000000000000
0xc20807ac40: 0x000000000040a1b6 0x000000000040a1f0
0xc20807ac50: 0x0000000000000000 0x0000000000000000
0xc20807ac60: 0x0000000000000000 0x0000000000002d40
0xc20807ac70: 0x000000000000015f 0x0000000000000000
0xc20807ac80: 0x000000c208e1f000 0x000000c208e20000
0xc20807ac90: 0x000000c208e1f280 0xffffffffffffffff
0xc20807aca0: 0x0000000000000000 0x0000000000000000
0xc20807acb0: 0x000000c208e1f950 0x0000000000465f90
0xc20807acc0: 0x000000c20807ac80 0x0000000000000000
0xc20807acd0: 0x0000000000000000 0x0000000000000000
0xc20807ace0: 0x000000000045ad20 0x0000000000000000
0xc20807acf0: 0x000000000051c0f5 0x0000000000000000
0xc20807ad00: 0x0000000000000002 0x0000000000000018
0xc20807ad10: 0x0000000000000000 0x000000000084ddb0
0xc20807ad20: 0x000000000000000c 0x000000c20807bb80
0xc20807ad30: 0x0000000001000000 0x000000c2099c4000
0xc20807ad40: 0x0000000000000000 0x0000000000000000
0xc20807ad50: 0x0000000000000000 0x0000000000000000
0xc20807ad60: 0x0000000000000000 0x0000000000000000
0xc20807ad70: 0x0000000000000000 0x0000000000000000
0xc20807ad80: 0x000000000040a1b6 0x000000000040a1f0
0xc20807ad90: 0x0000000000000000 0x0000000000000000
0xc20807ada0: 0x0000000000000000 0x0000000000006620
0xc20807adb0: 0x0000000000000322 0x0000000000000000
0xc20807adc0: 0x000000c208aae000 0x000000c208aaf000
0xc20807add0: 0x000000c208aae280 0xffffffffffffffff
0xc20807ade0: 0x0000000000000000 0x0000000000000000
0xc20807adf0: 0x000000c208aae640 0x000000000051c0f5
0xc20807ae00: 0x000000c20807adc0 0x0000000000000000
0xc20807ae10: 0x0000000000000000 0x0000000000000000
This is goroutine 17:
(gdb) info goroutines
* 17 syscall runtime.goexit
I don't any obvious place where we setg(g) with g.m==nil.
Core file and the binary are here:
https://drive.google.com/file/d/0B20Uwp8Hs1oCdVpieWdfZy1PN3M/view?usp=sharing