[Openmp-commits] [llvm] [openmp] [Offload] Implement double free (and other allocation error) reporting (PR #100261)
Johannes Doerfert via Openmp-commits
openmp-commits at lists.llvm.org
Wed Jul 24 17:47:45 PDT 2024
================
@@ -1345,6 +1367,35 @@ Error GenericDeviceTy::dataDelete(void *TgtPtr, TargetAllocTy Kind) {
if (Plugin.getRecordReplay().isRecordingOrReplaying())
return Plugin::success();
+ // Keep track of the deallocation stack if we track allocation traces.
+ if (OMPX_TrackAllocationTraces) {
+ AllocationTraceInfoTy *ATI = nullptr;
+ {
+ auto AllocationTraceMap = AllocationTraces.getExclusiveAccessor();
+ ATI = (*AllocationTraceMap)[TgtPtr];
+ }
+
+ std::string StackTrace;
+ llvm::raw_string_ostream OS(StackTrace);
+ llvm::sys::PrintStackTrace(OS);
+
+ if (!ATI)
+ ErrorReporter::reportDeallocationOfNonAllocatedPtr(TgtPtr, Kind, ATI,
+ StackTrace);
+
+ if (!ATI->DeallocationTrace.empty())
+ ErrorReporter::reportDeallocationOfDeallocatedPtr(TgtPtr, Kind, ATI,
+ StackTrace);
+
+ if (ATI->Kind != Kind)
+ ErrorReporter::reportDeallocationOfWrongPtrKind(TgtPtr, Kind, ATI,
+ StackTrace);
+
+ ATI->DeallocationTrace = StackTrace;
----------------
jdoerfert wrote:
Yes, that's possible. I can guard against that I guess.
https://github.com/llvm/llvm-project/pull/100261
More information about the Openmp-commits
mailing list