-
Notifications
You must be signed in to change notification settings - Fork 10.6k
Open
Labels
bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.A deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwareBug: A crash, i.e., an abnormal termination of softwaretriage neededThis issue needs more specific labelsThis issue needs more specific labels
Description
Description
I'm trying out Swift for first time and trying to play with macros, but my first macro is crashing the LSP in VS Code (on Windows) with the official extension.
The LSP crashes if and only if any function has the @log macro I've defined. It seems to only happen with BodyMacros.
Minimal reproduction: swift-lsp-crash.zip
Reproduction
HelloSwift module (LSP crashes on this file)
import HelloMacros
@main
struct HelloSwift {
@log
static func main() { }
}HelloMacros module
@attached(body)
public macro log() = #externalMacro(module: "HelloMacrosImpl", type: "LogMacro")HelloMacrosImpl module
import SwiftCompilerPlugin
import SwiftSyntax
import SwiftSyntaxMacros
@main
struct Macros: CompilerPlugin {
let providingMacros: [Macro.Type] = [
LogMacro.self,
]
}
public struct LogMacro: BodyMacro {
public static func expansion(
of node: SwiftSyntax.AttributeSyntax,
providingBodyFor declaration: some SwiftSyntax.DeclSyntaxProtocol & SwiftSyntax.WithOptionalCodeBlockSyntax,
in context: some SwiftSyntaxMacros.MacroExpansionContext,
) throws -> [SwiftSyntax.CodeBlockItemSyntax] {
guard let functionDeclaration = declaration.as(FunctionDeclSyntax.self) else {
throw MacroExpansionErrorMessage("Can only be attached to functions")
}
guard let originalBody = declaration.body else {
throw MacroExpansionErrorMessage("Can only be attached to functions with a body")
}
return ["print(\"Running '\(raw: functionDeclaration.name.text)'...\")"] + originalBody.statements
}
}Stack dump
2025-11-25 18:02:14.479 [info] [org.swift.sourcekit-lsp:default] default 2025-11-25 18:02:14.4770 -0800
sourcekit-lsp launched from <private>
---
Assertion failed: Loc.Value.getPointer() >= Buffer->getBuffer().begin() && Loc.Value.getPointer() <= Buffer->getBuffer().end() && "Location is not from the specified buffer", file C:\Users\swift-ci\jenkins\workspace\swift-6.2-windows-toolchain\swift\lib\Basic\SourceLoc.cpp, line 341
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. While walking into 'HelloSwift' (at C:\Users\UserName\projects\hello-swift\Sources\HelloSwift\HelloSwift.swift:4:1)
1. While walking into body of 'main()' (at C:\Users\UserName\projects\hello-swift\Sources\HelloSwift\HelloSwift.swift:7:5)
Exception Code: 0x80000003
#0 0x00007ffe541b57d5 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x4c57d5)
#1 0x00007fff63df1989 (C:\WINDOWS\System32\ucrtbase.dll+0xc1989)
#2 0x00007fff63dd4ab1 (C:\WINDOWS\System32\ucrtbase.dll+0xa4ab1)
#3 0x00007fff63df2986 (C:\WINDOWS\System32\ucrtbase.dll+0xc2986)
#4 0x00007fff63df2b61 (C:\WINDOWS\System32\ucrtbase.dll+0xc2b61)
#5 0x00007ffe597ff37a sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x5b0f37a)
#6 0x00007ffe5408df6a sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x39df6a)
#7 0x00007ffe54ee94d6 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x11f94d6)
#8 0x00007ffe54eebc70 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x11fbc70)
#9 0x00007ffe55bf7d3c sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07d3c)
#10 0x00007ffe55bf8c21 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f08c21)
#11 0x00007ffe55bf7400 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07400)
#12 0x00007ffe55bf7da6 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07da6)
#13 0x00007ffe55bf9265 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f09265)
#14 0x00007ffe55bf7400 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07400)
#15 0x00007ffe55bf7da6 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07da6)
#16 0x00007ffe55bfb342 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0b342)
#17 0x00007ffe55bf9d3a sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f09d3a)
#18 0x00007ffe55bf7480 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f07480)
#19 0x00007ffe55bf8067 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f08067)
#20 0x00007ffe55bfb0d1 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0b0d1)
#21 0x00007ffe55bfa6a1 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0a6a1)
#22 0x00007ffe55bfae2e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0ae2e)
#23 0x00007ffe55bf84f7 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f084f7)
#24 0x00007ffe55bfc2ab sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0c2ab)
#25 0x00007ffe55bfa332 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0a332)
#26 0x00007ffe55bfae2e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0ae2e)
#27 0x00007ffe55bf84f7 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f084f7)
#28 0x00007ffe55bfc9a6 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1f0c9a6)
#29 0x00007ffe55ac87ba sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x1dd87ba)
#30 0x00007ffe54ee9c59 sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x11f9c59)
#31 0x00007ffe5409940e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x3a940e)
#32 0x00007ffe540ac46e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x3bc46e)
#33 0x00007ffe53e5845e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x16845e)
#34 0x00007ffe53e5848e sourcekitd_set_uid_handlers (C:\Users\UserName\AppData\Local\Programs\Swift\Toolchains\6.2.1+Asserts\usr\bin\sourcekitdInProc.dll+0x16848e)
#35 0x00007fff63d337b0 (C:\WINDOWS\System32\ucrtbase.dll+0x37b0)
#36 0x00007fff652ce8d7 (C:\WINDOWS\System32\KERNEL32.DLL+0x2e8d7)
#37 0x00007fff66c6c53c (C:\WINDOWS\SYSTEM32\ntdll.dll+0x8c53c)
[Info - 6:02:15 PM] Connection to server got closed. Server will restart.
2025-11-25 18:02:15.984 [info] true
2025-11-25 18:02:15.994 [info] [Error - 6:02:15 PM] Server process exited with code 2147483651.
2025-11-25 18:02:16.027 [info] [org.swift.sourcekit-lsp:default] default 2025-11-25 18:02:16.0250 -0800
sourcekit-lsp launched from <private>
---
Expected behavior
The LSP does not crash.
Environment
Swift version 6.2.1 (swift-6.2.1-RELEASE)
Target: x86_64-unknown-windows-msvc
Build config: +assertions
Additional information
No response
Metadata
Metadata
Assignees
Labels
bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.A deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwareBug: A crash, i.e., an abnormal termination of softwaretriage neededThis issue needs more specific labelsThis issue needs more specific labels