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 _______________________________________________ varnish-misc mailing list varnish-misc@projects.linpro.no http://projects.linpro.no/mailman/listinfo/varnish-misc