Skip to content

LSP crashes on file that uses attached macro #85705

@DevPrice

Description

@DevPrice

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

No one assigned

    Labels

    bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwaretriage neededThis issue needs more specific labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions