This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug go/48242] gotest needs timeout mechanism
- From: "ro at CeBiTec dot Uni-Bielefeld.DE" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 4 Apr 2011 17:23:04 +0000
- Subject: [Bug go/48242] gotest needs timeout mechanism
- Auto-submitted: auto-generated
- References: <bug-48242-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48242
--- Comment #4 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2011-04-04 17:23:00 UTC ---
When I attach gdb to the hanging process (on Solaris 8/x86), I find:
[Switching to Thread 4 (LWP 1)]
0xbf6cac1b in _sigsuspend () from /usr/lib/libc.so.1
(gdb) where
#0 0xbf6cac1b in _sigsuspend () from /usr/lib/libc.so.1
#1 0xbeaa6a44 in sigsuspend () from /usr/lib/libthread.so.1
#2 0xbf71a0c5 in sigsuspend () from /usr/lib/libc.so.1
#3 0xbee2c61c in stop_for_gc ()
at /vol/gcc/src/hg/trunk/local/libgo/runtime/go-go.c:302
#4 0xbea979bf in __sighndlr () from /usr/lib/libthread.so.1
#5 <signal handler called>
#6 0xbf6c9891 in _poll () from /usr/lib/libc.so.1
#7 0xbf6dd41f in select () from /usr/lib/libc.so.1
#8 0xbefff522 in libgo_syscalls.syscall.Select (nfds=0, r=0x0, w=0x0, e=0x0,
timeout=0x9e000390)
at /vol/gcc/src/hg/trunk/local/libgo/syscalls/sysfile_posix.go:213
#9 0xbf00015a in libgo_syscalls.syscall.Sleep (nsec=1000000000)
at /vol/gcc/src/hg/trunk/local/libgo/syscalls/sleep_select.go:11
#10 0xbeef85ac in time.sysSleep (t=1000000000)
at /vol/gcc/src/hg/trunk/local/libgo/go/time/sys.go:57
#11 0xbeefd993 in time.sleeper (sleeperId=1)
at /vol/gcc/src/hg/trunk/local/libgo/go/time/sleep.go:128
#12 0xbeef80d8 in time.$thunk0 (__go_thunk_parameter=0x9e010de0)
at /vol/gcc/src/hg/trunk/local/libgo/go/time/sleep.go:109
#13 0xbee2c957 in start_go_thread (thread_arg=0x9e01c7c0)
at /vol/gcc/src/hg/trunk/local/libgo/runtime/go-go.c:167
#14 0xbea978fc in _thread_start () from /usr/lib/libthread.so.1
[...]
(gdb)
#8 0xbefff522 in libgo_syscalls.syscall.Select (nfds=0, r=0x0, w=0x0, e=0x0,
timeout=0x9e000390)
at /vol/gcc/src/hg/trunk/local/libgo/syscalls/sysfile_posix.go:213
213 n = libc_select(nfds, (*byte)(unsafe.Pointer(r)),
(gdb) p timeout
$1 = (struct syscall.Timeval *) 0x9e000390
(gdb) p *$1
$2 = {Sec = 1, Usec = 0}
I.e. the timeout is long past, but still the select hangs.
Rainer