On 7.05.21 г. 16:38, Steven Rostedt wrote:
From: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx> When I loaded two trace.dat files (host and guest), but the mapping of which host thread is associated to which guest vCPU was missing from the file, it caused a SEGFAULT. That's because in fillTaskGraph(), the lamGetPidCPU() calls ksmodule_get_cpu_front() which returns a negative number and does not set index. But the next line checks data[index] where index is some random number, and the application crashes. By checking the return of ksmodule_get_cpu_front(), and if it is negative do not reference data[index] and just let eFront be nullptr, the application shows no mapping, but at least it does not crash. Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
I am applying this one. Thanks Steven! Y.
--- You can reproduce this with: http://rostedt.org/private/trace-no-map.tar.bz2 diff --git a/src/KsPlotTools.cpp b/src/KsPlotTools.cpp index 225dc34..abef5f8 100644 --- a/src/KsPlotTools.cpp +++ b/src/KsPlotTools.cpp @@ -1280,7 +1280,7 @@ void Graph::fillTaskGraph(int sd, int pid) false, _collectionPtr, &index); - if (index >= 0) + if (cpuFront >= 0 && index >= 0) eFront = _histoPtr->data[index];cpuBack = ksmodel_get_cpu_back(_histoPtr, bin,