Child panics on OpenSolaris
Nils Goroll
slink at schokola.de
Mon Feb 15 13:31:20 CET 2010
Poul-Henning,
> Child (3504) died signal=6
> Child (3504) Panic message: Assert error in TCP_nonblocking(), tcp.c line 172:
> Condition((ioctl(sock, ((int)((uint32_t)(0x80000000|(((sizeof
> (int))&0xff)<<16)| ('f'<<8)|126))), &i)) == 0) not true.
> errno = 9 (Bad file number)
> thread = (cache-worker)
> ident = -smalloc,-hcritbit,poll
> Backtrace:
> 4457db: /opt/sbin/varnishd'pan_backtrace+0x1b [0x4457db]
> 445ae5: /opt/sbin/varnishd'pan_ic+0x1c5 [0x445ae5]
> fffffd7ff2efdfec: /opt/lib/libvarnish.so.1.0.0'TCP_nonblocking+0x7c
> [0xfffffd7ff2efdfec]
> 419091: /opt/sbin/varnishd'vca_return_session+0x1b1 [0x419091]
> 426aad: /opt/sbin/varnishd'cnt_wait+0x2bd [0x426aad]
> 42bc3a: /opt/sbin/varnishd'CNT_Session+0x4ba [0x42bc3a]
> 44835b: /opt/sbin/varnishd'wrk_do_cnt_sess+0x19b [0x44835b]
> 447954: /opt/sbin/varnishd'wrk_thread_real+0x854 [0x447954]
> 447eb3: /opt/sbin/varnishd'wrk_thread+0x123 [0x447eb3]
Just an idea from checking differences between the code I use and trunk: In
cnt_wait, shouldn't we check pfd[0].revents for POLLERR and POLLHUP? Could it be
that Solaris assumes that delivery an error once should suffice, so further use
of the fd will return EBADF?
Again, I haven't investigated further, sorry for the noise if this turns out to
be stupid.
Nils
More information about the varnish-misc
mailing list