Commit a247f448 authored by Dridi Boukelmoune's avatar Dridi Boukelmoune

Only handle signals if we still have a VUT

This can happen if a signal is caught after `VUT_Fini` was called, but
at this point we should no longer manipulate the VUT being dismantled.

Original test case by Geoff, slightly modified.

Closes #2650
parent 86f9768f
......@@ -494,7 +494,9 @@ profile_error(const char *s)
static void
vut_sighandler(int sig)
{
VUT_Signaled(vut, sig);
if (vut != NULL)
VUT_Signaled(vut, sig);
}
int
......
......@@ -124,8 +124,9 @@ sighup(struct VUT *v)
static void
vut_sighandler(int sig)
{
CHECK_OBJ_NOTNULL(vut, VUT_MAGIC);
VUT_Signaled(vut, sig);
if (vut != NULL)
VUT_Signaled(vut, sig);
}
int
......
......@@ -1124,8 +1124,9 @@ sighup(struct VUT *v)
static void
vut_sighandler(int sig)
{
CHECK_OBJ_NOTNULL(vut, VUT_MAGIC);
VUT_Signaled(vut, sig);
if (vut != NULL)
VUT_Signaled(vut, sig);
}
static char *
......
varnishtest "Cleanly stop a VUT app via vtc process -stop"
varnish v1 -vcl {
backend be {
.host = "${bad_backend}";
}
} -start
process p1 {
exec varnishncsa -n ${v1_name} -P ${tmpdir}/ncsa.pid -w ${tmpdir}/ncsa.log
} -start
delay 1
process p1 -expect-exit 0 -stop -wait
# Expect empty stderr output
shell -match {^0\b} "wc -c ${tmpdir}/p1/stderr"
......@@ -195,8 +195,9 @@ sighup(struct VUT *v)
static void
vut_sighandler(int sig)
{
CHECK_OBJ_NOTNULL(vut, VUT_MAGIC);
VUT_Signaled(vut, sig);
if (vut != NULL)
VUT_Signaled(vut, sig);
}
static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment