[Varnish] #1815: Child died on pipe request

Varnish varnish-bugs at varnish-cache.org
Mon Feb 22 18:21:48 CET 2016

#1815: Child died on pipe request
 Reporter:  jferjan      |       Owner:  Dridi
     Type:  defect       |      Status:  assigned
 Priority:  normal       |   Milestone:
Component:  varnishd     |     Version:  4.0.3
 Severity:  major        |  Resolution:
 Keywords:  pipe, panic  |
Changes (by Dridi):

 * status:  new => assigned


 This doesn't look like a duplicate because in #1730 the assertion triggers
 after a failed getfd, whereas in this case it's before.

 I have tried to reproduce it and AFAICT the only VCL way to end up with a
 NULL {{{(struct busyobj).director}}} is to either set the
 {{{req.backend_hint}}} or {{{bereq.backend}}} to NULL which is not allowed
 by the VCL compiler unless you use a VMOD? When setting a NULL
 {{{bereq.backend}}} Varnish seems to recover and pick the default backend.

 I narrowed it down to this:

 $ cat bin/varnishtest/tests/r01815.vtc
 varnishtest "backend unreachable on piped request"

 server s1 {
 } -start

 varnish v1 -vcl+backend {
         import ${vmod_debug};

         sub vcl_recv {
                 set req.backend_hint = debug.no_backend();
 } -start

 client c1 {
         txreq -req PROPFIND
         expect resp.status == 200
 } -run

 It looks an awful lot like #1501 for piped requests :)

 jferjan, are you using a director? Can you share your VCL or confirm it
 may be a director failing to pick a backend?

 phk, it looks like something Varnish should handle properly with either a
 synthetic 500 response or picking the default backend.


Ticket URL: <https://www.varnish-cache.org/trac/ticket/1815#comment:3>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator

More information about the varnish-bugs mailing list