HANG running any Go program
Created by: FiloSottile
- DynamoRIO version: 7.0.0-rc1
- Operating system: 64-bit Linux (within a Debian Docker container)
- Application: any Go program, including "Hello world", compiled with
GOOS=linux CGO_ENABLED=0
package main
func main() {
println("Hello, World!")
}
$ drrun -debug -root $DYNAMORIO_HOME -- /usr/local/src/flagscov/hello_world
<Starting application /usr/local/src/flagscov/hello_world (18)>
<Paste into GDB to debug DynamoRIO clients:
set confirm off
add-symbol-file '/usr/local/share/DynamoRIO-Linux-7.0.0-RC1/lib64/debug/libdynamorio.so' 0x00007f3f0ff72a68
>
<Initial options = -no_dynamic_options -code_api -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct >
<Application tried to execute from dr memory 0x000000004a4cede0.
This may be a result of an unsuccessful attack or a potential application vulnerability.>
^\SIGQUIT: quit
PC=0x4086f6 m=0 sigcode=128
goroutine 0 [idle]:
runtime.notesleep(0x4bb4e0)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/lock_futex.go:149 +0x76
runtime.stoplockedm()
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:2165 +0x8a
runtime.schedule()
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:2565 +0x2d9
runtime.park_m(0xc000000300)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:2676 +0xae
runtime.mcall(0x0)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/asm_amd64.s:299 +0x5b
goroutine 1 [chan receive, locked to thread]:
runtime.gopark(0x470ba8, 0xc00005c058, 0xc00001170d, 0x3)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:302 +0xeb
runtime.goparkunlock(0xc00005c058, 0x170d, 0x3)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:308 +0x53
runtime.chanrecv(0xc00005c000, 0x0, 0xc000000301, 0x411498)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/chan.go:520 +0x2be
runtime.chanrecv1(0xc00005c000, 0x0)
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/chan.go:402 +0x2b
runtime.gcenable()
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/mgc.go:217 +0x6f
runtime.main()
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/proc.go:164 +0x119
runtime.goexit()
/Users/valsorda/homebrew/Cellar/go/1.11/libexec/src/runtime/asm_amd64.s:1333 +0x1
rax 0x4bae20
rbx 0x4
rcx 0xffffffffffffffff
rdx 0x989680
rdi 0x0
rsi 0x1
rbp 0x7ffd5c30a598
rsp 0x7ffd5c30a570
r8 0xc000042700
r9 0xc000000f00
r10 0x8
r11 0x282
r12 0x426910
r13 0x11
r14 0x476d78
r15 0x0
rip 0x4086f6
rflags 0x246
cs 0x33
fs 0x0
gs 0x0
<Stopping application /usr/local/src/flagscov/hello_world (18)>
The SIGQUIT information might or might not be useful, depending how confused the Go runtime that's printing it is.