From c9bd100aafb63c5fb59f105878bf7a5c0bb9017b Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 12 Mar 2026 11:37:44 +0100 Subject: [PATCH 1/3] Swift: Disable stack protector pass --- swift/tools/tracing-config.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index a29e7b3b9536..0cc46c2241bd 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -133,6 +133,7 @@ function RegisterExtractorPack(id) strip_unsupported_args(compilerArguments.argv) replace_resource_dir(compilerPath, compilerArguments.argv) + table.insert(compilerArguments.argv, "-disable-stack-protector") return { trace = true, From 759c0f5b3da903f0767779c9a6a74f367feb09b9 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 12 Mar 2026 11:42:51 +0100 Subject: [PATCH 2/3] Test --- swift/ql/test/extractor-tests/expressions/expressions.swift | 2 ++ swift/tools/tracing-config.lua | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/swift/ql/test/extractor-tests/expressions/expressions.swift b/swift/ql/test/extractor-tests/expressions/expressions.swift index 5e2a7646ae09..e38bf4befe37 100644 --- a/swift/ql/test/extractor-tests/expressions/expressions.swift +++ b/swift/ql/test/extractor-tests/expressions/expressions.swift @@ -187,3 +187,5 @@ func makeTuple(_ t: repeat each T) -> (repeat each T) { } let _ = makeTuple("A", 2) + +//codeql-extractor-options: -disable-stack-protector diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index 0cc46c2241bd..a29e7b3b9536 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -133,7 +133,6 @@ function RegisterExtractorPack(id) strip_unsupported_args(compilerArguments.argv) replace_resource_dir(compilerPath, compilerArguments.argv) - table.insert(compilerArguments.argv, "-disable-stack-protector") return { trace = true, From a139a6f5bbbf10aba99a179bfa94196369235924 Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Thu, 12 Mar 2026 13:31:47 +0100 Subject: [PATCH 3/3] Swift: disable stack protection in extractor to fix Linux crash The FunctionStackProtection SIL pass crashes on Linux when processing standard library functions like withUnsafePointer(to:_:). This is a known upstream Swift compiler bug (swiftlang/swift#69768). The extractor does not need stack protection since it only extracts semantic information from the AST and never produces executable code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- swift/extractor/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swift/extractor/main.cpp b/swift/extractor/main.cpp index 8019d1bfc660..b8f720b62464 100644 --- a/swift/extractor/main.cpp +++ b/swift/extractor/main.cpp @@ -81,6 +81,9 @@ static void turnOffSilVerifications(swift::SILOptions& options) { options.VerifyExclusivity = false; options.VerifyNone = true; options.VerifySILOwnership = false; + // Stack protection is not needed for extraction and causes a crash on Linux + // (https://github.com/swiftlang/swift/issues/69768) + options.EnableStackProtection = false; } codeql::TrapDomain invocationTrapDomain(codeql::SwiftExtractorState& state);