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