sim-se: Fix invalid delete of params on clone
authorJason Lowe-Power <jason@lowepower.com>
Mon, 15 Apr 2019 21:00:21 +0000 (14:00 -0700)
committerBrandon Potter <Brandon.Potter@amd.com>
Thu, 3 Oct 2019 13:52:03 +0000 (13:52 +0000)
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 <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18068
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
src/sim/syscall_emul.hh

index 130791d20e358c32287bb8a0ef20695356e5fa46..fb6e9a168b46aa4d2bfeb47bdf4be3d13163c920 100644 (file)
@@ -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);