From a9e4db76dd5f6f07e1b25569f565eb4c710d39ea Mon Sep 17 00:00:00 2001 From: Igor Zhbanov Date: Wed, 9 Oct 2013 17:34:41 +0400 Subject: [PATCH] Fix for SIGSEGV in systemd-bootchart on short-living processes The function svg_ps_bars() dereferencess NULL pointer in the line endtime = ps->last->sampledata->sampletime; because of partially initialized ps_struct (ps->last == NULL). If some process terminates between scaning /proc directory in the log_sample() function and reading additional information from /proc/PID/... files, the files couldn't be read, the loop will be continued and partially initialized structure returned. --- src/bootchart/store.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/bootchart/store.c b/src/bootchart/store.c index f8c97c2..7f86cfe 100644 --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -275,7 +275,7 @@ schedstat_next: pscount++; /* mark our first sample */ - ps->first = ps->sample; + ps->first = ps->last = ps->sample; ps->sample->runtime = atoll(rt); ps->sample->waittime = atoll(wt); -- 1.7.5.4