Thomas Schwinge, le Tue 22 Jul 2008 16:54:47 +0200, a écrit : > On Tue, Jul 22, 2008 at 02:33:34PM +0100, Samuel Thibault wrote: > > It looks like the hangs we're encountering on flubber/gnubber and which > > I'm having on the buildd are due to syslog() blocking somewhere. > > Interesting...
I got the hang again, this time with a debugging-enabled compilation: #0 0x01091381 in _hurd_intr_rpc_msg_in_trap () from /lib/libc.so.0.3 #1 0x011f8276 in io_read () from /lib/libhurduser.so.0.3 #2 0x0109508e in readfd.8793 () from /lib/libc.so.0.3 #3 0x0109c177 in _hurd_ctty_input () from /lib/libc.so.0.3 #4 0x010953d4 in _hurd_fd_read () from /lib/libc.so.0.3 #5 0x0114419d in read () from /lib/libc.so.0.3 #6 0x0804a29e in main (argc=0, argv=0x1021e94) at syslogd.c:664 nready = poll (fdarray, nfds, -1); ... for (i = 0; i < nfds; i++) if (fdarray[i].revents & (POLLIN | POLLPRI)) { int result; size_t len; if (fdarray[i].fd == -1) continue; else if (fdarray[i].fd == fklog) { 664: result = read (fdarray[i].fd, &kline[kline_len], sizeof (kline) - kline_len - 1); So it looks like poll spuriously returned POLLIN | POLLPRI. Samuel