From b2e2bd2f9d87f52366047b7c22246292db693d56 Mon Sep 17 00:00:00 2001 From: Alastair Houghton Date: Mon, 1 Sep 2025 17:04:05 +0100 Subject: [PATCH] [Reflection] Fix task reflection to strip signed pointers. The task resume context may be signed, so we should strip the pointer before trying to read through it. rdar://158728756 --- include/swift/RemoteInspection/ReflectionContext.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/swift/RemoteInspection/ReflectionContext.h b/include/swift/RemoteInspection/ReflectionContext.h index c7526d41c6b23..ac475a82930e4 100644 --- a/include/swift/RemoteInspection/ReflectionContext.h +++ b/include/swift/RemoteInspection/ReflectionContext.h @@ -1857,7 +1857,10 @@ class ReflectionContext RemoteAddress(RecordObj->Parent, RemoteAddress::DefaultAddressSpace); } - const auto TaskResumeContext = AsyncTaskObj->ResumeContextAndReserved[0]; + const auto TaskResumeContext = stripSignedPointer( + RemoteAddress(AsyncTaskObj->ResumeContextAndReserved[0], + RemoteAddress::DefaultAddressSpace) + ).getRawAddress(); Info.ResumeAsyncContext = TaskResumeContext; // Walk the async backtrace.