From: Jason Lowe-Power Date: Mon, 15 Apr 2019 21:00:21 +0000 (-0700) Subject: sim-se: Fix invalid delete of params on clone X-Git-Tag: v19.0.0.0~479 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aa3b372a9598192a02e084b7ddf1cfa6426019fb;p=gem5.git sim-se: Fix invalid delete of params on clone The params pointer is kept by the SimObject and should not be deleted until gem5 exits. Added a to do to remember this object is leaked. Change-Id: I46cc23a09e4e9b6bc2fdcd961148324c41820815 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18068 Tested-by: kokoro Maintainer: Brandon Potter Reviewed-by: Brandon Potter --- diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index 130791d20..fb6e9a168 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -1562,7 +1562,9 @@ cloneFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) pp->useArchPT = p->useArchPT; pp->kvmInSE = p->kvmInSE; Process *cp = pp->create(); - delete pp; + // TODO: there is no way to know when the Process SimObject is done with + // the params pointer. Both the params pointer (pp) and the process + // pointer (cp) are normally managed in python and are never cleaned up. Process *owner = ctc->getProcessPtr(); ctc->setProcessPtr(cp);