New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assert error in V1L_Write() #2207

Closed
joshuaspence opened this Issue Feb 9, 2017 · 1 comment

Comments

Projects
None yet
3 participants
@joshuaspence

I've just come across another Varnish panic, running on Varnish 5.0.0.

Panic at: Thu, 09 Feb 2017 03:29:38 GMT
"Assert error in V1L_Write(), http1/cache_http1_line.c line 251:
  Condition(v1l->niov < v1l->siov) not true.
thread = (cache-worker)
version = varnish-5.0.0 revision 99d036f
ident = Linux,4.4.0-62-generic,x86_64,-junix,-smalloc,-smalloc,-hcritbit,epoll
Backtrace:
  0x4351b6: varnishd() [0x4351b6]
  0x456130: varnishd(V1L_Chunked+0) [0x456130]
  0x4535f2: varnishd() [0x4535f2]
  0x41c554: varnishd(VDP_bytes+0x74) [0x41c554]
  0x471d0d: varnishd() [0x471d0d]
  0x453913: varnishd(V1D_Deliver+0x263) [0x453913]
  0x438156: varnishd(CNT_Request+0x226) [0x438156]
  0x454edf: varnishd(HTTP1_Session+0x4df) [0x454edf]
  0x4556b7: varnishd() [0x4556b7]
  0x44cb61: varnishd() [0x44cb61]
req = 0x7f934dd33020 {
  vxid = 12396836, transport = HTTP/1 {
    state = HTTP1::Proc
  }
  step = R_STP_TRANSMIT,
  req_body = R_BODY_NONE,
  restarts = 0, esi_level = 0,
  sp = 0x7f9611846220 {
    fd = 76, vxid = 12396835,
    t_open = 1486610698.289841,
    t_idle = 1486610698.289841,
    transport = HTTP/1 {
      state = HTTP1::Proc
    }
client = 10.183.50.247 33124,
  },
  worker = 0x7f96f4fb9c90 {
    stack = {0x7f96f4fba000 -> 0x7f96f4fae000},
    ws = 0x7f96f4fb9e78 {
      id = \"wrk\",
      {s, f, r, e} = {0x7f96f4fb9430, 0x7f96f4fb9430, (nil), +2040},
    },
    VCL::method = DELIVER,
    VCL::return = deliver,
    VCL::methods = {RECV, HASH, MISS, DELIVER},
  },
  ws = 0x7f934dd331f8 {
    id = \"req\",
    {s, f, r, e} = {0x7f934dd34ff8, +57312, +57344, +57344},
  },
  http_conn = 0x7f934dd33128 {
    fd = 76,
    doclose = NULL,
    ws = 0x7f934dd331f8,
    {rxbuf_b, rxbuf_e} = {0x7f934dd34ff8, 0x7f934dd3762f},
    {pipeline_b, pipeline_e} = {(nil), (nil)},
    content_length = -1,
    body_status = none,
    first_byte_timeout = 0.000000,
    between_bytes_timeout = 0.000000,
  },
  http[req] = 0x7f934dd33290 {
    ws[req] = 0x7f934dd331f8,
    hdrs {
      REDACTED
    },
  },
  http[resp] = 0x7f934dd33b80 {
    ws[req] = 0x7f934dd331f8,
    hdrs {
      REDACTED
    },
  },
  vcl = {
    name = \"vcl_fe9ac166-f297-4773-8519-d77f48a8097a\"
    busy = 128
    discard = 0,
    state = auto,
    temp = warm,
    conf = {
      srcname = {
        \"/etc/varnish/default.vcl\",
        \"Builtin\",
        \"/etc/varnish/includes/directors.vcl\",
        \"/etc/varnish/includes/probes.vcl\",
        \"/etc/varnish/includes/backends.vcl\",
        \"/etc/varnish/includes/backends/gaf_admin.vcl\",
        \"/etc/varnish/includes/backends/gaf_appserver.vcl\",
        \"/etc/varnish/includes/backends/gaf_assets.vcl\",
        \"/etc/varnish/includes/acls.vcl\",
        \"/etc/varnish/includes/backendselection.vcl\",
        \"/etc/varnish/varnish.vcl\",
        \"/etc/varnish/includes/subroutines.vcl\",
        \"/etc/varnish/includes/subroutines/determine_authentication_status.vcl\",
        \"/etc/varnish/includes/subroutines/normalize_cookies.vcl\",
        \"/etc/varnish/includes/subroutines/normalize_host.vcl\",
        \"/etc/varnish/includes/subroutines/normalize_url.vcl\",
        \"/etc/varnish/includes/subroutines/parse_accept_language.vcl\",
        \"/etc/varnish/includes/subroutines/sanitize_cookies.vcl\",
        \"/etc/varnish/includes/subroutines/sanitize_query_parameters.vcl\",
      },
    },
  },
  objcore[REQ] = 0x7f90e9307c40 {
    refcnt = 3,
    flags = {pass},
    exp_flags = {refd},
    boc = 0x7f911b1c50e0 {
      refcnt = 3,
      state = stream,
      vary = (nil),
      stevedore_priv = (nil),
    },
    exp = {1486610698.610978, 120.000000, 10.000000, 0.000000}
    objhead = 0x7f92ef3af470,
    stevedore = 0x7f96f2cb6540 (malloc Transient) {
      Simple = 0x7f913ad27200
      Obj 0x7f90e164f068 {priv=0x7f90e164f060, ptr=0x7f913ad27200, len=443, space=448}
      LEN = 0x0...0
      VXID = 0x00bd2925
      FLAGS = 0x02
      GZIPBITS = 0x0000000000000050000000000000005000000000000000000000000000000000
      LASTMODIFIED = 0x41d626f842800000
      VARY = {len=0, ptr=0x7f913ad27278}
      HEADERS = {len=0, ptr=0x7f913ad272ab}
      Body 0x7f92c8c31158 {priv=0x7f92c8c31150, ptr=0x7f9548779000, len=14166, space=16384}
    },
  },
  flags = {
  },
},

"

@bsdphk bsdphk closed this in a6696fc Feb 15, 2017

bsdphk added a commit that referenced this issue Mar 23, 2017

If the client workspace is almost, but not quite exhaused, we may
not be able to get enough iovec's to do Chunked transmission.

Fixes #2275

And #2207 was probably misdiagnosed, but the fix is correct anyhow.

bsdphk added a commit that referenced this issue Mar 23, 2017

Change/simplify the V1L logic for chunked encoding.
This reverts the patch for #2207, which as martin points out, is not
a good idea after all.

hermunn added a commit that referenced this issue Apr 3, 2017

If the client workspace is almost, but not quite exhaused, we may
not be able to get enough iovec's to do Chunked transmission.

Fixes #2275

And #2207 was probably misdiagnosed, but the fix is correct anyhow.

Conflicts:
	bin/varnishd/http1/cache_http1_line.c
@hermunn

This comment has been minimized.

Show comment
Hide comment
@hermunn

hermunn Apr 3, 2017

Contributor

Backport review: The fix 8e77985 has been backported as adb8de0.

Contributor

hermunn commented Apr 3, 2017

Backport review: The fix 8e77985 has been backported as adb8de0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment