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