From aa3b372a9598192a02e084b7ddf1cfa6426019fb Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Mon, 15 Apr 2019 14:00:21 -0700 Subject: [PATCH] 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 --- src/sim/syscall_emul.hh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); -- 2.30.2