[6.0] 18f8a2480 detail fetch processor state in panics

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Thu Aug 16 08:52:58 UTC 2018


commit 18f8a24809ca0160493dff4ef14f8d95e7b633db
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Fri May 18 14:33:20 2018 +0200

    detail fetch processor state in panics
    
    Ref #2683

diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index dea26a630..1dc3d1f32 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -355,9 +355,44 @@ pan_wrk(struct vsb *vsb, const struct worker *wrk)
 }
 
 static void
-pan_busyobj(struct vsb *vsb, const struct busyobj *bo)
+pan_vfp(struct vsb *vsb, const struct vfp_ctx *vfc)
 {
 	struct vfp_entry *vfe;
+
+	VSB_printf(vsb, "vfc = %p {\n", vfc);
+	VSB_indent(vsb, 2);
+	VSB_printf(vsb, "failed = %d,\n", vfc->failed);
+	VSB_printf(vsb, "req = %p,\n", vfc->req);
+	VSB_printf(vsb, "resp = %p,\n", vfc->resp);
+	VSB_printf(vsb, "wrk = %p,\n", vfc->wrk);
+	VSB_printf(vsb, "oc = %p,\n", vfc->oc);
+
+	if (!VTAILQ_EMPTY(&vfc->vfp)) {
+		VSB_printf(vsb, "filters = {\n");
+		VSB_indent(vsb, 2);
+		VTAILQ_FOREACH(vfe, &vfc->vfp, list) {
+			VSB_printf(vsb, "%s = %p {\n",
+				   vfe->vfp->name, vfe);
+			VSB_indent(vsb, 2);
+			VSB_printf(vsb, "priv1 = %p,\n", vfe->priv1);
+			VSB_printf(vsb, "priv2 = %zd,\n", vfe->priv2);
+			VSB_printf(vsb, "closed = %d\n", vfe->closed);
+			VSB_indent(vsb, -2);
+			VSB_printf(vsb, "},\n");
+		}
+		VSB_indent(vsb, -2);
+		VSB_printf(vsb, "},\n");
+	}
+
+	VSB_printf(vsb, "obj_flags = 0x%x,\n", vfc->obj_flags);
+	VSB_indent(vsb, -2);
+	VSB_printf(vsb, "},\n");
+};
+
+
+static void
+pan_busyobj(struct vsb *vsb, const struct busyobj *bo)
+{
 	const char *p;
 
 	VSB_printf(vsb, "busyobj = %p {\n", bo);
@@ -380,13 +415,8 @@ pan_busyobj(struct vsb *vsb, const struct busyobj *bo)
 	if (VALID_OBJ(bo->htc, HTTP_CONN_MAGIC))
 		pan_htc(vsb, bo->htc);
 
-	if (!VTAILQ_EMPTY(&bo->vfc->vfp)) {
-		VSB_printf(vsb, "filters =");
-		VTAILQ_FOREACH(vfe, &bo->vfc->vfp, list)
-			VSB_printf(vsb, " %s=%d",
-			    vfe->vfp->name, (int)vfe->closed);
-		VSB_printf(vsb, "\n");
-	}
+	if (bo->vfc)
+		pan_vfp(vsb, bo->vfc);
 
 	VDI_Panic(bo->director_req, vsb, "director_req");
 	if (bo->director_resp == bo->director_req)


More information about the varnish-commit mailing list