Hello, I am testing Varnish (r4576 <http://varnish-cache.org/changeset/4576>) in Solaris 10 5.10 Generic_120011-14 sun4v sparc SUNW,Sun-Fire-T2000. We are planning to use a cache like Varnish or Squid and I have followed the instructions in http://letsgetdugg.com/2009/12/04/varnish-on-solaris/<http://letsgetdugg.com/2009/12/04/varnish-on-solaris/> I have the same LINGER crash like in #660<http://varnish-cache.org/ticket/660>that has the same root cause in #649 <http://varnish-cache.org/ticket/649>
I have trying to fix the bug and I have found *the problem is that solaris setsockopt returns sometimes EINVAL* when it is no invalid parameters, problem found in Java JVM in Solaris: * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6378870<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6378870> * http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=7141b1811572e415779f4a711a96?bug_id=6850464<http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=7141b1811572e415779f4a711a96?bug_id=6850464> I think the solution is to changed the definition of "TCP_Check" in * libvarnish.h* only for Solaris* /* In Solaris OS, errno == EINVAL is OK because setsockopt(3SOCKET) call returns EINVAL when the connection is reset. */ #if defined (__SVR4) && defined (__sun) #define TCP_Check(a) ((a) == 0 || errno == ECONNRESET || errno == ENOTCONN || errno == EINVAL) #else #define TCP_Check(a) ((a) == 0 || errno == ECONNRESET || errno == ENOTCONN) #endif Do you think it is ok to commit it to trunk ? Thank you *
_______________________________________________ varnish-dev mailing list [email protected] http://lists.varnish-cache.org/mailman/listinfo/varnish-dev
