Mailing List Archive

#1630: Varnish crashes with long regex condition
#1630: Varnish crashes with long regex condition
-------------------------+----------------------
Reporter: huguesalary | Type: defect
Status: new | Priority: normal
Milestone: | Component: varnishd
Version: 4.0.2 | Severity: normal
Keywords: |
-------------------------+----------------------
I just upgraded to from 3 (.0.5/6) to 4.0.2 on my debian system.

I converted my old varnish 3 code to 4.0.2. The varnish 3 code has been
working flawlessly for more than 2 years.

Now, in my varnish 4 VCL, everything works fine except for a very specific
piece of code that crashes varnish.

Some useful info:
{{{
$ uname -a
Linux proxy_newvarnish 3.13-1-amd64 #1 SMP Debian 3.13.10-1 (2014-04-15)
x86_64 GNU/Linux

$ varnishd -V
varnishd (varnish-4.0.2 revision bfe7cd1)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2014 Varnish Software AS

$ varnishd -a :80 \
-T localhost:6082 \
-f /etc/varnish/magento.vcl \
-S /etc/varnish/secret \
-p http_req_hdr_len=32768 \
-p thread_pools=8 \
-p thread_pool_min=100 \
-p thread_pool_max=2000 \
-p pcre_match_limit=1000000 \
-p pcre_match_limit_recursion=1000000 \
-p workspace_client=5M \
-p
debug=+req_state,+workspace,+waiter,+waitinglist,+syncvsl,+hashedge,+vclrel,+lurker,+esi_chop
-s memory=malloc,256m
}}}

Configuration to reproduce the bug:
{{{
sub identify_device
{
if(!req.http.X-Device) # If req.http.X-Device is already set (by
the browser for example), we don't overwrite it (useful for our recaching
script)
{
# By default we consider our device as a desktop
set req.http.X-Device = "desktop";

if (
(req.http.User-Agent ~ "\biPhone.*Mobile|\biPod") ||
(req.http.User-Agent ~ "BlackBerry|\bBB10\b|rim[0-9]+")
||
(req.http.User-Agent ~
"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire
4G|Android.*\bEVO\b|T-Mobile G1|Z520m") ||
(req.http.User-Agent ~ "Nexus One|Nexus
S|Galaxy.*Nexus|Android.*Nexus.*Mobile") ||
(req.http.User-Agent ~
"Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell
Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b") ||
(req.http.User-Agent ~
"Motorola|\bDroid\b.*Build|DROIDX|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925")
||
(req.http.User-Agent ~
"Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212
|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-
C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380
|GT-
S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959
|SCH-
LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960
|SCS-
26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727
|SGH-
i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170
|SGH-ZX10|SGH-
ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535
|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B") ||
(req.http.User-Agent ~ "\bLG\b;|LG[-
]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999)")
||
(req.http.User-Agent ~
"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i")
||
(req.http.User-Agent ~ "Asus.*Galaxy|PadFone.*Mobile")
||
(req.http.User-Agent ~
"Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b")
||
(req.http.User-Agent ~ "PalmSource|Palm") ||
(req.http.User-Agent ~
"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature")
||
(req.http.User-Agent ~ "PANTECH|IM-A850S|IM-A840S|IM-
A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-
A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-
A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA
PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790")
||
(req.http.User-Agent ~
"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250")
||
(req.http.User-Agent ~
"\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b")
||
(req.http.User-Agent ~
"Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"))
{
set req.http.X-Device = "mobile";
}

elsif (
(req.http.User-Agent ~
"\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?") ||
(req.http.User-Agent ~ "\bDolfin\b") ||
(req.http.User-Agent ~
"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+")
||
(req.http.User-Agent ~ "Skyfire") ||
(req.http.User-Agent ~ "IEMobile|MSIEMobile") ||
(req.http.User-Agent ~
"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile") ||
(req.http.User-Agent ~ "bolt") ||
(req.http.User-Agent ~ "teashark") ||
(req.http.User-Agent ~ "Blazer") ||
(req.http.User-Agent ~
"Version.*Mobile.*Safari|Safari.*Mobile") ||
(req.http.User-Agent ~ "Tizen") ||
(req.http.User-Agent ~ "UC.*Browser|UCWEB") ||
(req.http.User-Agent ~ "DiigoBrowser") ||
(req.http.User-Agent ~ "Puffin") ||
(req.http.User-Agent ~ "\bMercury\b") ||
(req.http.User-Agent ~
"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront
|Novarra-Vision|MQQBrowser|MicroMessenger")) {
set req.http.X-Device = "mobile";
}

elsif (
(req.http.User-Agent ~ "Android") ||
(req.http.User-Agent ~ "blackberry|\bBB10\b|rim tablet
os") ||
(req.http.User-Agent ~
"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino") ||
(req.http.User-Agent ~
"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b") ||
(req.http.User-Agent ~ "Windows
CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone
[0-9.]+|WCE;") ||
(req.http.User-Agent ~ "Windows Phone 8.0|Windows Phone
OS|XBLWP7|ZuneWP7") ||
(req.http.User-Agent ~
"\biPhone.*Mobile|\biPod|\biPad") ||
(req.http.User-Agent ~ "MeeGo") ||
(req.http.User-Agent ~ "Maemo") ||
(req.http.User-Agent ~ "J2ME/|\bMIDP\b|\bCLDC\b") ||
(req.http.User-Agent ~ "webOS|hpwOS") ||
(req.http.User-Agent ~ "\bBada\b") ||
(req.http.User-Agent ~ "BREW")) {
set req.http.X-Device = "mobile";
}

elsif (
(req.http.User-Agent ~ "iPad|iPad.*Mobile") ||
(req.http.User-Agent ~
"^.*Android.*Nexus(((?:(?!Mobile))|(?:(\s(7|10).+))).)*$") ||
(req.http.User-Agent ~ "SAMSUNG.*Tablet|Galaxy.*Tab|SC-
01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5110
|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S
|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K
|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W
|SHW-M486W|SHW-
M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|SM-T311|SM-T310|SM-T210
|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-T217|SM-T217A|SM-
T217S|SM-P6000|SM-T3100|SGH-I467|XE500") ||
(req.http.User-Agent ~
"Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b")
||
(req.http.User-Agent ~ "Windows NT [0-9.]+; ARM;") ||
(req.http.User-Agent ~ "HP Slate 7|HP ElitePad 900|hp-
tablet|EliteBook.*Touch") ||
(req.http.User-Agent ~
"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider
SL101|\bK00F\b|TX201LA") ||
(req.http.User-Agent ~ "PlayBook|RIM Tablet") ||
(req.http.User-Agent ~ "HTC Flyer|HTC Jetstream|HTC-
P715a|HTC EVO View 4G|PG41200") ||
(req.http.User-Agent ~
"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617")
||
(req.http.User-Agent ~ "Android.*Nook|NookColor|nook
browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2")
||
(req.http.User-Agent ~ "Android.*;
\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810)\b|W3-810")
||
(req.http.User-Agent ~
"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO")
||
(req.http.User-Agent ~ "\bL-06C|LG-V900|LG-V909\b") ||
(req.http.User-Agent ~
"Android.*\b(F-01D|F-05E|F-10D|M532|Q572)\b") ||
(req.http.User-Agent ~
"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD")
||
(req.http.User-Agent ~
"IdeaTab|S2110|S6000|K3011|A3000|A1000|A2107|A2109|A1107|ThinkPad([
]+)?Tablet") ||
(req.http.User-Agent ~
"Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b")
||
(req.http.User-Agent ~
"Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB") ||
(req.http.User-Agent ~
"AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT")
||
(req.http.User-Agent ~ "M702pro") ||
(req.http.User-Agent ~ "MegaFon V9|\bZTE
V9\b|Android.*\bMT7A\b") ||
(req.http.User-Agent ~ "E-Boda
(Supreme|Impresspeed|Izzycomm|Essential)") ||
(req.http.User-Agent ~
"Allview.*(Viva|Alldro|City|Speed|All
TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)") ||
(req.http.User-Agent ~ "\b(101G9|80G9|A101IT)\b|Qilive
97R|ARCHOS 101G10") ||
(req.http.User-Agent ~
"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark") ||
(req.http.User-Agent ~ "Sony.*Tablet|Xperia Tablet|Sony
Tablet S|SO-
03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201")
||
(req.http.User-Agent ~
"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE
U8GT") ||
(req.http.User-Agent ~
"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010")
||
(req.http.User-Agent ~
"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733")
||
(req.http.User-Agent ~
"Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)") ||
(req.http.User-Agent ~
"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A") ||
(req.http.User-Agent ~ "IQ310|Fly Vision") ||
(req.http.User-Agent ~
"bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus")
||
(req.http.User-Agent ~ "MediaPad|IDEOS
S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim") ||
(req.http.User-Agent ~ "\bN-06D|\bN-08D") ||
(req.http.User-Agent ~ "Pantech.*P4100") ||
(req.http.User-Agent ~
"Broncho.*(N701|N708|N802|a710)") ||
(req.http.User-Agent ~
"TOUCHPAD.*[78910]|\bTOUCHTAB\b") ||
(req.http.User-Agent ~ "z1000|Z99
2G|z99|z930|z999|z990|z909|Z919|z900") ||
(req.http.User-Agent ~
"TB07STA|TB10STA|TB07FTA|TB10FTA") ||
(req.http.User-Agent ~ "Android.*\bNabi") ||
(req.http.User-Agent ~ "Kobo Touch|\bK080\b|\bVox\b
Build|\bArc\b Build") ||
(req.http.User-Agent ~
"DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b")
||
(req.http.User-Agent ~ "NaviPad|TB-
772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025
|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-
9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-
805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-
790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-
760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-
470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-
126SE") ||
(req.http.User-Agent ~ "Playstation.*(Portable|Vita)")
||
(req.http.User-Agent ~
"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2")
||
(req.http.User-Agent ~
"\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b")
||
(req.http.User-Agent ~ "Android.*
\b(S5G|S5K|T5B|T3E|T3C|T3B|T1J|T1F|S5D|T2A|T1H|E1C|T1i|S5E|T1-E|S5F|E1-B|T2Ci|T1-B|T1-D|T5-A|O1-A|E1-A|T1-A|T3A|S5|T4i)\b
") ||
(req.http.User-Agent ~ "Genius Tab G3|Genius Tab
S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB
GII|Genius TAB GIII|Genius Tab S1") ||
(req.http.User-Agent ~ "Android.*\bG1\b") ||
(req.http.User-Agent ~
"Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b") ||
(req.http.User-Agent ~
"Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b") ||
(req.http.User-Agent ~ "Fine7 Genius|Fine7 Shine|Fine7
Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide") ||
(req.http.User-Agent ~
"\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b")
||
(req.http.User-Agent ~
"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026")
||
(req.http.User-Agent ~
"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503")
||
(req.http.User-Agent ~ "TX-A1301|TX-M9002|Q702|kf026")
||
(req.http.User-Agent ~ "TAB-P506|TAB-
navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-
P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025
|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-
PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL
|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10") ||
(req.http.User-Agent ~
"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)")
||
(req.http.User-Agent ~ "HCL.*Tablet|Connect-3G-2.0
|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME
Tablet Y2|ME Tablet Sync") ||
(req.http.User-Agent ~ "DPS Dream 9|DPS Dual 7") ||
(req.http.User-Agent ~ "V97 HD|i75 3G|Visture V4(
HD)?|Visture V5( HD)?|Visture V10") ||
(req.http.User-Agent ~
"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989")
||
(req.http.User-Agent ~
"\bMT8125|MT8389|MT8135|MT8377\b") ||
(req.http.User-Agent ~ "Concorde([ ]+)?Tab|ConCorde
ReadMan") ||
(req.http.User-Agent ~ "GOCLEVER
TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB
A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB
T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB
I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB
A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB
A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB
R83.3|TAB A1042") ||
(req.http.User-Agent ~ "FreeTAB 9000|FreeTAB
7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB
1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB
7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB
1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003") ||
(req.http.User-Agent ~ "Hudl HT7S3") ||
(req.http.User-Agent ~ "T-Hub2") ||
(req.http.User-Agent ~
"Android.*\b97D\b|Tablet(?!.*PC)|ViewPad7|BNTV250A|MID-WCDMA|LogicPD
Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|SmartTabII10|SmartTab10|M758A|ET904"))
{
set req.http.X-Device = "mobile;tablet";
}
}
}

vcl_recv {
call identify_device;
}
}}}

One-liner triggering the bug:
{{{
curl http://yourhost/ --header "User-Agent: Mozilla/5.0 (Linux; Android
4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko)
Chrome/18.0.1025.166 Mobile Safari/535.19"
}}}

dmesg output on my machines:
{{{
[ 5930.438102] varnishd[21356]: segfault at 7ff2c9cb6ee0 ip
00007ff2e55e97ed sp 00007ff2c9cb6ea0 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 5937.141468] varnishd[22171]: segfault at 7ff2c9dbeee0 ip
00007ff2e55e97ed sp 00007ff2c9dbeea0 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 5938.550985] varnishd[23054]: segfault at 7ff2c6bcfee0 ip
00007ff2e55e97ed sp 00007ff2c6bcfea0 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 5957.939599] varnishd[23943]: segfault at 7ff2c830fee0 ip
00007ff2e55e97ed sp 00007ff2c830fea0 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 5960.249944] varnishd[24757]: segfault at 7ff2c9477ff8 ip
00007ff2e55e97d6 sp 00007ff2c9478000 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 6703.908736] varnishd[25667]: segfault at 7ff2c6a97ff8 ip
00007ff2e55e97d6 sp 00007ff2c6a98000 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
[ 6734.907388] varnishd[27194]: segfault at 7ff2c92acff8 ip
00007ff2e55e97d6 sp 00007ff2c92ad000 error 6 in
libpcre.so.3.13.1[7ff2e55d6000+3c000]
}}}

Varnishlog output:
{{{
hugues@proxy_newvarnish:~$ varnishlog
* << Session >> 1
- Begin sess 0 HTTP/1
- SessOpen 172.17.42.1 57981 :80 172.17.0.8 80 1416016309.424483
13
- Link req 2 rxreq
- VSL flush
- End synth

* << Request >> 2
- Begin req 1 rxreq
- Timestamp Start: 1416016309.424564 0.000000 0.000000
- Timestamp Req: 1416016309.424564 0.000000 0.000000
- Debug "vxid 1073741826 STP_RECV sp 0x7fd37080f1a0 obj (nil)
vcl 0x7fd391011128"
- ReqStart 172.17.42.1 57981
- ReqMethod GET
- ReqURL /
- ReqProtocol HTTP/1.1
- ReqHeader Host: www.newvarnish.betabrand.io
- ReqHeader Accept: */*
- ReqHeader User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; en-us;
Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko)
Chrome/18.0.1025.166 Mobile Safari/535.19
- ReqHeader X-Forwarded-For: 98.210.153.225
- ReqUnset X-Forwarded-For: 98.210.153.225
- ReqHeader X-Forwarded-For: 98.210.153.225, 172.17.42.1
- VCL_call RECV
- ReqURL /
- ReqUnset X-Forwarded-For: 98.210.153.225, 172.17.42.1
- ReqHeader X-Forwarded-For: 98.210.153.225, 172.17.42.1,
172.17.42.1
- ReqHeader X-PSA-Blocking-Rewrite: betabrand-pagespeed
- ReqHeader X-Device: desktop
- ReqUnset X-Device: desktop
- ReqHeader X-Device: mobile
- VSL flush
- End synth

Log abandoned
Log reacquired
}}}

And all this info in a gist:
https://gist.github.com/huguesalary/fc59034d3a49745755f4

--
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1630>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+--------------------
Reporter: huguesalary | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution:
Keywords: |
-------------------------+--------------------

Comment (by fgsch):

Likely related to #1576.

Try increasing thread_pool_stack to see if the problem goes away.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+--------------------
Reporter: huguesalary | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution:
Keywords: |
-------------------------+--------------------

Comment (by huguesalary):

increasing thread_pool_stack did the trick.

Is there any sensible value this should be set? Is there any magic formula
to determine the best value?

I currently have it set to 196k.

Thanks!

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+--------------------
Reporter: huguesalary | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution:
Keywords: |
-------------------------+--------------------

Comment (by huguesalary):

So, increasing the thread_pool_stack worked, but it seems like I still
sometimes get a crash, so I might not have increased it enough.

I noticed that thread_pool_stack is marked as experimental in the doc and
was defaulted to -1 in varnish 3, which I assume was "disabling" it.

I tried setting it to -1 on varnish 4 but couldn't get any page of my
website to load, so assumed that -1 in varnish 4 was not valid (although I
did not investigate more).

So here are some questions:
- since this param is marked as experimental is there any way to "disable"
it?
- is there any documentation available describing this param more in
depth? (considering I read: https://www.varnish-
cache.org/docs/4.0/reference/varnishd.html#thread-pool-stack)

Thanks!

-Hugues

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+--------------------
Reporter: huguesalary | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution:
Keywords: |
-------------------------+--------------------

Comment (by paluna):

Using varnishd (varnish-4.0.2 revision bfe7cd1)

I get this annoying crash as well (the exact same segfault message).

It occurs +- 1x/week on a website with 50K hits per day (20% are
smartphones) but I cannot reproduce it at all. I restart the varnish cache
daemon every night, it might occur more frequently if I do not do the
restart every night.

I see some similarities with this ticket. I also use User-Agent regexp's
intensively. But your repro command <curl http://yourhost/ --header "User-
Agent: Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D)
AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile
Safari/535.19"> works fine on my installation.

There are no traces in the web server logs around that timestamp so it
occurs before the request is passed to the backend.

I already changed these settings a month ago but it does not fix it
unfortunately.
VARNISH_PCRE_MATCH_LIMIT=2500
VARNISH_PCRE_MATCH_LIMIT_RECURSION=2500
VARNISH_THREAD_POOL_STACK=72k

The only extra artifacts I have are the Ubuntu .crash file and the
apport.log
https://dl.dropboxusercontent.com/u/5629939/temp/_usr_sbin_varnishd.65534.crash
https://dl.dropboxusercontent.com/u/5629939/temp/apport.log

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------
Changes (by Tollef Fog Heen <tfheen@…>):

* status: new => closed
* owner: => Tollef Fog Heen <tfheen@…>
* resolution: => fixed


Comment:

In [419f983eeec6d0b0b932105495f4e09179260eec]:
{{{
#!CommitTicketReference repository=""
revision="419f983eeec6d0b0b932105495f4e09179260eec"
Enable PCRE JIT-er by default

The JIT-er is generally safe to use, and faster, so use that.

Fixes: #1576, #1630
}}}

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by lkarsten):

Reviewed this for 4.0.4. The dropbox links are dead.

As far as I can tell, crashing on extensive regexes can be worked around
by increasing thread_pool_stack. Backporting JIT change mid-4.0 is no go,
we tried that in 3.0.4.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by paluna):

Thanks lkarsten.

We upgraded to varnish-4.1.0 revision 3041728 in October 2015 and use the
settings as documented below. Setting thread_pool_stack=72k is one of
them.

The situation is acceptable now. The number of crashes decreased to almost
zero (the last Varnish crash goes back to Nov 6, 2015).

In order to be complete I have uploaded a new set of crashdump files for
your info.

Environment:
Ubuntu 14.04.2 LTS
varnishd (varnish-4.1.0 revision 3041728)
command line:
"/usr/sbin/varnishd -P /run/varnishd.pid -a :80 -T localhost:6082 -t
600 -f /etc/varnish/cloud.vcl -S /etc/varnish/secret -p
pcre_match_limit=2500 -p pcre_match_limit_recursion=500 -p
thread_pool_stack=72k -s
file,/var/lib/varnish/cloud/varnish_storage.bin,100M"

This is the last crashdump of 20151106:
https://dl.dropboxusercontent.com/u/5629939/temp/20151106%202312h%20varnishd.7z


Replying to [comment:6 lkarsten]:
> Reviewed this for 4.0.4. The dropbox links are dead.
> As far as I can tell, crashing on extensive regexes can be worked around
by increasing thread_pool_stack. Backporting JIT change mid-4.0 is no go,
we tried that in 3.0.4.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by fgsch):

Can you enable coredumps (e.g. ulimit -c unlimited)?
When it crashes is there anything else under syslog or varnishadm
panic.show?
Are you using any VMODs besides std? Is varnish installed from repo
.varnish-cache.org?

Sharing your VCL might also help.

There is no much info in the crashdump and I cannot reproduce it using
your pcre limits.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by paluna):

Thanks for the suggestions.

I will submit a new (full) crash dump and config files as soon as a new
crash happens again. Note that it only crashes about once a month which
makes it difficult. At that point I will share my main VCL as well.

0. I have now changed the core file size to unlimited for the varnish
processes.

1. I cannot reproduce it either (not in production, not in the dev
environment). The server handles on avg 125K requests/day and I cannot
figure out which http request/response causes the crash; maybe it is not
related to a specific http req/rsp at all, who knows. The varnish daemon
is also restarted once every night at 4am in the production environment.
The varnishlog is empty after the crash because the varnishd has been
restarted.

2. There is nothing else in syslog. I did not run varnishadm panic.show at
the time of the crash.

3. Yes, it is installed from "deb https://repo.varnish-cache.org/ubuntu/
trusty varnish-4.1".

4. The server only imports 1 VMODs, being std.

5. The server config includes a computer generated vcl script with lots of
regexp's to detect mobile devices
https://gist.github.com/pantaluna/029741e2f299415eceec



Replying to [comment:8 fgsch]:
> Can you enable coredumps (e.g. ulimit -c unlimited)?
> When it crashes is there anything else under syslog or varnishadm
panic.show?
> Are you using any VMODs besides std? Is varnish installed from repo
.varnish-cache.org?
>
> Sharing your VCL might also help.
>
> There is no much info in the crashdump and I cannot reproduce it using
your pcre limits.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by paluna):

Hi,

We are now 10 days later and the first varnishd crash has occurred :(

1. I have attached a full core dump and a part of the syslog (there was
nothing else in syslog that was relevant). Archive:
https://dl.dropboxusercontent.com/u/5629939/temp/20151209%200704h%20varnishd%20crash.7z

2. The varnishd cmdline params can be found in the syslog.

3. This is the VCL. Archive:
https://dl.dropboxusercontent.com/u/5629939/temp/20151209%200704h%20varnishd%20vcl.7z

I hope this will help to identify the cause of the accidental crashes.
Thanks for your help.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------
Changes (by slink):

* cc: nils.goroll@… (added)


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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
Re: #1630: Varnish crashes with long regex condition [ In reply to ]
#1630: Varnish crashes with long regex condition
-------------------------+-----------------------------------------
Reporter: huguesalary | Owner: Tollef Fog Heen <tfheen@…>
Type: defect | Status: closed
Priority: normal | Milestone:
Component: varnishd | Version: 4.0.2
Severity: normal | Resolution: fixed
Keywords: |
-------------------------+-----------------------------------------

Comment (by fgsch):

Internal note:

All supported Linux distros with the exception of (Debian) jessie ship
with a pcre version older than 8.32, thus jit is not enabled on those
platforms.

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

_______________________________________________
varnish-bugs mailing list
varnish-bugs@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs