[master] a7808f1 Don't attempt to dump bad WS structs

Poul-Henning Kamp phk at varnish-cache.org
Mon Dec 9 17:43:22 CET 2013


commit a7808f14993a8a47bc98933cf1786467228bf761
Author: Poul-Henning Kamp <phk at varnish-cache.org>
Date:   Mon Dec 9 17:42:43 2013 +0100

    Don't attempt to dump bad WS structs

diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 97775ae..8f8f8fd 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -109,22 +109,26 @@ pan_ws(const struct ws *ws, int indent)
 {
 
 	VSB_printf(pan_vsp, "%*sws = %p {", indent, "", ws);
-	if (WS_Overflowed(ws))
-		VSB_printf(pan_vsp, " OVERFLOW");
-	VSB_printf(pan_vsp, "\n%*sid = \"%s\",\n", indent + 2, "", ws->id);
-	VSB_printf(pan_vsp, "%*s{s,f,r,e} = {%p", indent + 2, "", ws->s);
-	if (ws->f > ws->s)
-		VSB_printf(pan_vsp, ",+%ld", (long) (ws->f - ws->s));
-	else
-		VSB_printf(pan_vsp, ",%p", ws->f);
-	if (ws->r > ws->s)
-		VSB_printf(pan_vsp, ",+%ld", (long) (ws->r - ws->s));
-	else
-		VSB_printf(pan_vsp, ",%p", ws->r);
-	if (ws->e > ws->s)
-		VSB_printf(pan_vsp, ",+%ld", (long) (ws->e - ws->s));
-	else
-		VSB_printf(pan_vsp, ",%p", ws->e);
+	if (VALID_OBJ(ws, WS_MAGIC)) {
+		if (WS_Overflowed(ws))
+			VSB_printf(pan_vsp, " OVERFLOW");
+		VSB_printf(pan_vsp, "\n%*sid = \"%s\",\n", indent + 2, "", ws->id);
+		VSB_printf(pan_vsp, "%*s{s,f,r,e} = {%p", indent + 2, "", ws->s);
+		if (ws->f > ws->s)
+			VSB_printf(pan_vsp, ",+%ld", (long) (ws->f - ws->s));
+		else
+			VSB_printf(pan_vsp, ",%p", ws->f);
+		if (ws->r > ws->s)
+			VSB_printf(pan_vsp, ",+%ld", (long) (ws->r - ws->s));
+		else
+			VSB_printf(pan_vsp, ",%p", ws->r);
+		if (ws->e > ws->s)
+			VSB_printf(pan_vsp, ",+%ld", (long) (ws->e - ws->s));
+		else
+			VSB_printf(pan_vsp, ",%p", ws->e);
+	} else {
+		VSB_printf(pan_vsp, " BAD_MAGIC(0x%08x) ", ws->magic);
+	}
 	VSB_printf(pan_vsp, "},\n");
 	VSB_printf(pan_vsp, "%*s},\n", indent, "" );
 }



More information about the varnish-commit mailing list