Child panics on OpenSolaris

Paul Wright wrighty+varnishmisc at gmail.com
Wed Feb 17 12:10:58 CET 2010


On 17 February 2010 10:57, Poul-Henning Kamp <phk at phk.freebsd.dk> wrote:
> In message <282e72051002170230k7ae8e0c8hc2d5226ca9288d51 at mail.gmail.com>, Paul
> Wright writes:
>
>>I've compiled with the additional -mt flag, here's my current
>>compilation process:
>
> Please pull a brand new -trunk, I have added a check for errno
> working and I would like to make sure that passes for you also.

I have pulled the latest revision and can confirm that unlink("/")
failed as expected.  I ran it briefly and saw this panic:

Child (28554) died signal=6
Child (28554) Panic message: Assert error in http_copyheader(),
cache_http.c line 647:
  Condition(n < to->shd) not true.
thread = (cache-worker)
ident = -smalloc,-hcritbit,poll
Backtrace:
  447adb: /opt/sbin/varnishd'pan_backtrace+0x1b [0x447adb]
  447de5: /opt/sbin/varnishd'pan_ic+0x1c5 [0x447de5]
  440791: /opt/sbin/varnishd'http_copyheader+0x1c1 [0x440791]
  4423b1: /opt/sbin/varnishd'http_FilterFields+0xdc1 [0x4423b1]
  429c4d: /opt/sbin/varnishd'cnt_fetch+0x11fd [0x429c4d]
  42cf3a: /opt/sbin/varnishd'CNT_Session+0x78a [0x42cf3a]
  44a7ef: /opt/sbin/varnishd'wrk_do_cnt_sess+0x1bf [0x44a7ef]
  449d62: /opt/sbin/varnishd'wrk_thread_real+0x882 [0x449d62]
  44a315: /opt/sbin/varnishd'wrk_thread+0x135 [0x44a315]
  fffffd7ff653acf5: /lib/amd64/libc.so.1'_thrp_setup+0x8d [0xfffffd7ff653acf5]
sp = 18c9b78 {
  fd = 38, id = 38, xid = 789049749,
  client = 82.71.124.65:58190,
  step = STP_FETCH,
  handling = pass,
  err_code = 206, err_reason = (null),
  restarts = 0, esis = 0
  ws = 18c9be8 {
    id = "sess",
    {s,f,r,e} = {18ca8f0,+884,0,+65536},
  },
  http[req] = {
    ws = 18c9be8[sess]
      "GET",
      "/xml/rss.top20.000.xml",
      "HTTP/1.1",
      "Host: www.firebox.com",
      "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5;
en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6",
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
      "Accept-Language: en-gb,en;q=0.5",
      "Accept-Encoding: gzip,deflate",
      "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
      "Keep-Alive: 115",
      "Connection: keep-alive",
      "X-Moz: livebookmarks",
      "Cookie: user_session=XXXX;
locale=company_id%3A0%2Ccurrency_id%3A0%2Clanguage_id%3A0%2Ccountry%3AUnited+Kingdom;
xp_list=52%3D1;
__utma=64137912.1325032789.1266225177.1266397371.1266400910.11;
__utmc=64137912;
__utmz=64137912.1266225177.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)",
      "Range: bytes=15136-",
      "If-Range: "14b800b-678d-47fc91860e540"",
      "Cache-Control: max-age=0",
      "X-Forwarded-For: 82.71.124.65",
  },
  worker = fffffd7ff69fad30 {
    ws = fffffd7ff69fae78 {
      id = "wrk",
      {s,f,r,e} = {fffffd7ff69e8c40,+323,0,+65536},
    },
    http[bereq] = {
      ws = fffffd7ff69fae78[wrk]
        "GET",
        "/xml/rss.top20.000.xml",
        "HTTP/1.1",
        "Host: www.firebox.com",
        "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5;
en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6",
        "Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: en-gb,en;q=0.5",
        "Accept-Encoding: gzip,deflate",
        "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
        "X-Moz: livebookmarks",
        "Cookie: user_session=XXXX;
locale=company_id%3A0%2Ccurrency_id%3A0%2Clanguage_id%3A0%2Ccountry%3AUnited+Kingdom;
xp_list=52%3D1;
__utma=64137912.1325032789.1266225177.1266397371.1266400910.11;
__utmc=64137912;
__utmz=64137912.1266225177.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)",
        "Range: bytes=15136-",
        "If-Range: "14b800b-678d-47fc91860e540"",
        "X-Forwarded-For: 82.71.124.65",
        "X-Varnish: 789049749",
    },
    http[beresp] = {
      ws = fffffd7ff69fae78[wrk]
        "HTTP/1.1",
        "206",
        "Partial Content",
        "Date: Wed, 17 Feb 2010 10:48:30 GMT",
        "Server: Apache",
        "Last-Modified: Wed, 17 Feb 2010 10:13:01 GMT",
        "ETag: "14b800b-678d-47fc91860e540"",
        "Accept-Ranges: bytes",
        "Content-Length: 11373",
        "Content-Range: bytes 15136-26508/26509",
        "Connection: close",
        "Content-Type: application/xml",
    },
    },
    vcl = {
      srcname = {
        "input",
        "Default",
      },
    },
  obj = 33336a0 {
    xid = 789049749,
    ws = 33336c0 {
      id = "obj",
      {s,f,r,e} = {33338a5,33338a5,0,+220},
    },
    http[obj] = {
      ws = 33336c0[obj]
        "HTTP/1.1",
        "206",
        "Partial Content",
        "Date: Wed, 17 Feb 2010 10:48:30 GMT",
        "Server: Apache",
        "Last-Modified: Wed, 17 Feb 2010 10:13:01 GMT",
        "ETag: "14b800b-678d-47fc91860e540"",
    },
    len = 0,
    store = {
    },
  },
},


>>Child (14052) 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)) =3D=3D 0) not true.
>>errno =3D 131 (Connection reset by peer)
>
>
> Now, _this_ errno I can actually belive, because that matches
> the packet traces we have seen, and it is a plausible scenario.
>
> The fact that Solaris docs does not mention ECONNRESET as a legal
> error return for ioctl is a minor detail in that context.
>
> The difference here is that the traditional BSD stack does not
> return ECONNRESET until you try to move data on the socket,
> giving you much simpler error checking on socket-state changes
> (ioctl, fcntl, setsockopt, getsockopt etc)
>
> So now that we have reached the root-cause, I need to go through
> and do complex error-checking for all the socket-state calls.
>
> Hopefully done later today...

Grand.

Paul.



More information about the varnish-misc mailing list