• Nils Goroll's avatar
    fix forgotten WS_Release() calls for failing WS_Reserve() · f05a1bc5
    Nils Goroll authored
    This should hopefully fix a panic which has to be caused by forgotten
    WS_Release() calls and which occurred close to VCL code which handles
    re2 sets.
    
    Redacted panic:
    
    Panic at: Fri, 05 Apr 2019 19:15:24 GMT
    Assert error in WS_Reserve(), cache/cache_ws.c line 236:
      Condition(ws->r == NULL) not true.
    version = varnish-trunk revision af2bad23deb2470533158f9d99ad3f4968b8d231, vrt api = 9.0
    ident = Linux,3.13.0-137-generic,x86_64,-junix,-smalloc,-sdefault,-hcritbit,epoll
    now = 3999664.335146 (mono), 1554491669.714933 (real)
    Backtrace:
      0x43c1bb: /usr/sbin/varnishd() [0x43c1bb]
      0x49e182: /usr/sbin/varnishd(VAS_Fail+0x42) [0x49e182]
      0x45d1ac: /usr/sbin/varnishd() [0x45d1ac]
      0x44d792: /usr/sbin/varnishd(VRT_String+0x22) [0x44d792]
      0x44de66: /usr/sbin/varnishd(VRT_SetHdr+0xf6) [0x44de66]
      ...(redacted for customer proprietary information)
    
    See also https://github.com/varnishcache/varnish-cache/issues/2967
    for a general discussion regarding an inconsistency in the WS_Reserve()
    interface
    f05a1bc5
vmod_re2.c 20.8 KB