llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.97k stars 11.54k forks source link

clangd segfault #100588

Closed FalcoGer closed 1 month ago

FalcoGer commented 1 month ago

I am using clangd with coc in nvim. I find that clangd crashes after a few seconds of seemingly working normally. I deleted ~/.cache/clangd/ but it didn't help.

Even when not including any headers and working on a simple file, it will crash.

This bug started to occur a few days ago, but I had not fired up nvim for c++ for a few weeks, so I don't know when it started.

To make it crash in this particular case, I opened a file delete.cpp and simply typed

int main()
{
  delete nullptr;
  return 0;
}

and added and removed characters before it crashed shortly thereafter.

Logs

I[17:46:23.191] Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302)
I[17:46:23.191] Features: linux+grpc
I[17:46:23.191] PID: 426184
I[17:46:23.191] Working directory: /home/paul/Desktop/test
I[17:46:23.191] argv[0]: clangd
I[17:46:23.191] argv[1]: --enable-config
I[17:46:23.191] argv[2]: --clang-tidy
I[17:46:23.191] argv[3]: --all-scopes-completion
I[17:46:23.191] argv[4]: --background-index
I[17:46:23.191] argv[5]: --completion-style=bundled
I[17:46:23.191] argv[6]: --function-arg-placeholders
I[17:46:23.191] argv[7]: --header-insertion=iwyu
I[17:46:23.191] argv[8]: --header-insertion-decorators
I[17:46:23.191] argv[9]: --limit-results=500
I[17:46:23.191] argv[10]: --log=verbose
V[17:46:23.191] User config file is /home/paul/.config/clangd/config.yaml
I[17:46:23.191] Starting LSP over stdin/stdout
V[17:46:23.192] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"7.0.5"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/inlayHint","textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":true},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","decorator","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":false},"documentChanges":true,"failureHandling":"undo","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"coc.nvim","version":"0.0.82"},"initializationOptions":{},"locale":"en_US","processId":426015,"rootPath":"/home/paul/Desktop/test","rootUri":"file:///home/paul/Desktop/test","trace":"off","workspaceFolders":[{"name":"test","uri":"file:///home/paul/Desktop/test"}]}}

I[17:46:23.192] <-- initialize(0)
I[17:46:23.194] --> reply:initialize(0) 1 ms
V[17:46:23.194] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyRename","clangd.applyTweak"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inactiveRegionsProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","usedAsMutablePointer","constructorOrDestructor","userDefined","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","modifier","operator","bracket","label","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302) linux+grpc x86_64-pc-linux-gnu"}}}

V[17:46:23.196] <<< {"jsonrpc":"2.0","method":"initialized","params":{}}

I[17:46:23.196] <-- initialized
V[17:46:23.199] <<< {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}}

I[17:46:23.199] <-- workspace/didChangeConfiguration
V[17:46:23.200] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"auto main() -> int\n{\n    const int x = 45;\n    delete nullptr;\n    return 0;\n}\n","uri":"file:///home/paul/Desktop/test/delete.cpp","version":8}}}

I[17:46:23.200] <-- textDocument/didOpen
V[17:46:23.201] config note at /home/paul/.config/clangd/config.yaml:3:0: Parsing config fragment
V[17:46:23.202] config note at /home/paul/.config/clangd/config.yaml:1:0: Parsed 1 fragments from file
V[17:46:23.202] Config fragment: compiling /home/paul/.config/clangd/config.yaml:3 -> 0x000074B4CC01FE10 (trusted=true)
I[17:46:23.202] config warning at /home/paul/.config/clangd/config.yaml:124:6: Latency of clang-tidy check 'cert-msc24-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:127:6: Latency of clang-tidy check 'cert-msc33-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:140:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-destructor' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:141:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-move-operations' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:142:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-swap' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:144:6: Latency of clang-tidy check 'cppcoreguidelines-use-default-member-init' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None
I[17:46:23.203] --> textDocument/publishDiagnostics
V[17:46:23.203] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"message":"Latency of clang-tidy check 'cert-msc24-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":18,"line":123},"start":{"character":6,"line":123}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cert-msc33-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":18,"line":126},"start":{"character":6,"line":126}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-destructor' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":43,"line":139},"start":{"character":6,"line":139}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-move-operations' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":48,"line":140},"start":{"character":6,"line":140}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-swap' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":37,"line":141},"start":{"character":6,"line":141}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-use-default-member-init' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":47,"line":143},"start":{"character":6,"line":143}},"relatedInformation":[],"severity":2,"source":"clangd-config"}],"uri":"file:///home/paul/.config/clangd/config.yaml"}}

I[17:46:23.203] Failed to find compilation database for /home/paul/Desktop/test/delete.cpp
I[17:46:23.203] ASTWorker building file /home/paul/Desktop/test/delete.cpp version 8 with command clangd fallback
[/home/paul/Desktop/test]
/usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp
V[17:46:23.205] Ignored diagnostic. argument unused during compilation: '-L/usr/lib/llvm-19/lib'
V[17:46:23.206] Driver produced command: cc1 -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name delete.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/paul/Desktop/test -fcoverage-compilation-dir=/home/paul/Desktop/test -resource-dir /usr/lib/llvm-19/lib/clang/19 -internal-isystem /usr/include/c++/v1 -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -pedantic-errors -std=c++23 -fdeprecated-macro -fexperimental-library -ferror-limit 19 -fopenmp -stack-protector 1 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -no-round-trip-args -fvirtual-function-elimination -fwhole-program-vtables -fsplit-lto-unit -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/paul/Desktop/test/delete.cpp
V[17:46:23.206] Building first preamble for /home/paul/Desktop/test/delete.cpp version 8
I[17:46:23.218] Built preamble of size 240532 for file /home/paul/Desktop/test/delete.cpp version 8 in 0.01 seconds
I[17:46:23.219] --> workspace/semanticTokens/refresh(0)
V[17:46:23.219] >>> {"id":0,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}

V[17:46:23.219] indexed preamble AST for /home/paul/Desktop/test/delete.cpp version 8:
  symbol slab: 0 symbols, 120 bytes
  ref slab: 0 symbols, 0 refs, 128 bytes
  relations slab: 0 relations, 24 bytes
V[17:46:23.220] <<< {"id":0,"jsonrpc":"2.0","result":null}

I[17:46:23.220] <-- reply(0)
I[17:46:23.223] Indexing c++23 standard library in the context of /home/paul/Desktop/test/delete.cpp
V[17:46:23.252] indexed file AST for /home/paul/Desktop/test/delete.cpp version 8:
  symbol slab: 1 symbols, 4448 bytes
  ref slab: 1 symbols, 1 refs, 4248 bytes
  relations slab: 0 relations, 24 bytes
V[17:46:23.252] Build dynamic index for main-file symbols with estimated memory usage of 11520 bytes
I[17:46:23.252] --> textDocument/publishDiagnostics
V[17:46:23.252] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"delete_operand","message":"Cannot delete expression of type 'std::nullptr_t'","range":{"end":{"character":10,"line":3},"start":{"character":4,"line":3}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"readability-identifier-naming","codeDescription":{"href":"https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html"},"message":"Invalid case style for local constant 'x' (fix available)","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"relatedInformation":[],"severity":2,"source":"clang-tidy"}],"uri":"file:///home/paul/Desktop/test/delete.cpp","version":8}}

V[17:46:24.356] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":0,"line":6},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}}

I[17:46:24.356] <-- textDocument/inlayHint(1)
V[17:46:24.356] ASTWorker running InlayHints on version 8 of /home/paul/Desktop/test/delete.cpp
I[17:46:24.356] --> reply:textDocument/inlayHint(1) 0 ms
V[17:46:24.356] >>> {"id":1,"jsonrpc":"2.0","result":[{"label":[{"value":"// main"}],"paddingLeft":true,"paddingRight":false,"position":{"character":1,"line":5}}]}

V[17:46:25.094] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[{"code":"readability-identifier-naming","codeDescription":{"href":"https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html"},"message":"Invalid case style for local constant 'x' (fix available)","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"relatedInformation":[],"severity":2,"source":"clang-tidy"}],"triggerKind":1},"range":{"end":{"character":14,"line":2},"start":{"character":14,"line":2}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}}

I[17:46:25.094] <-- textDocument/codeAction(2)
V[17:46:25.095] ASTWorker running codeAction on version 8 of /home/paul/Desktop/test/delete.cpp
I[17:46:25.095] --> reply:textDocument/codeAction(2) 0 ms
V[17:46:25.095] >>> {"id":2,"jsonrpc":"2.0","result":[{"command":{"arguments":[{"newName":"X","position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}],"command":"clangd.applyRename","title":"change 'x' to 'X'"},"kind":"refactor","title":"change 'x' to 'X'"}]}

V[17:46:25.652] <<< {"id":3,"jsonrpc":"2.0","method":"workspace/executeCommand","params":{"arguments":[{"newName":"X","position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}],"command":"clangd.applyRename"}}

I[17:46:25.652] <-- workspace/executeCommand(3)
V[17:46:25.653] ASTWorker running Rename on version 8 of /home/paul/Desktop/test/delete.cpp
I[17:46:25.653] --> workspace/applyEdit(1)
V[17:46:25.653] >>> {"id":1,"jsonrpc":"2.0","method":"workspace/applyEdit","params":{"edit":{"changes":{"file:///home/paul/Desktop/test/delete.cpp":[{"newText":"X","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}}}]}}}}

V[17:46:25.669] <<< {"id":1,"jsonrpc":"2.0","result":{"applied":true}}

I[17:46:25.669] <-- reply(1)
I[17:46:25.669] --> reply:workspace/executeCommand(3) 16 ms
V[17:46:25.669] >>> {"id":3,"jsonrpc":"2.0","result":"Rename applied."}

V[17:46:25.670] <<< {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"rangeLength":1,"text":"X"}],"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp","version":9}}}

I[17:46:25.670] <-- textDocument/didChange
I[17:46:25.720] Failed to find compilation database for /home/paul/Desktop/test/delete.cpp
I[17:46:25.721] ASTWorker building file /home/paul/Desktop/test/delete.cpp version 9 with command clangd fallback
[/home/paul/Desktop/test]
/usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp
V[17:46:25.723] Ignored diagnostic. argument unused during compilation: '-L/usr/lib/llvm-19/lib'
V[17:46:25.724] Driver produced command: cc1 -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name delete.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/paul/Desktop/test -fcoverage-compilation-dir=/home/paul/Desktop/test -resource-dir /usr/lib/llvm-19/lib/clang/19 -internal-isystem /usr/include/c++/v1 -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -pedantic-errors -std=c++23 -fdeprecated-macro -fexperimental-library -ferror-limit 19 -fopenmp -stack-protector 1 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -no-round-trip-args -fvirtual-function-elimination -fwhole-program-vtables -fsplit-lto-unit -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/paul/Desktop/test/delete.cpp
V[17:46:25.725] Reusing preamble version 8 for version 9 of /home/paul/Desktop/test/delete.cpp
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
V[17:46:25.867] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}}

I[17:46:25.868] <-- textDocument/documentLink(4)
V[17:46:25.975] <<< {"id":5,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":0,"line":6},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}}

I[17:46:25.975] <-- textDocument/inlayHint(5)
V[17:46:26.111] <<< {"id":6,"jsonrpc":"2.0","method":"textDocument/documentHighlight","params":{"position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}}

I[17:46:26.111] <-- textDocument/documentHighlight(6)
 #0 0x000074b4f58bb06f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xebb06f)
 #1 0x000074b4f58b8d79 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xeb8d79)
 #2 0x000074b4f58bb7c0 (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xebb7c0)
 #3 0x000074b4f3845320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
 #4 0x000074b4f5858a58 llvm::StringMapImpl::LookupBucketFor(llvm::StringRef, unsigned int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xe58a58)
 #5 0x00005e81547995e6 (/usr/lib/llvm-19/bin/clangd+0x66c5e6)
 #6 0x00005e8154797aa8 (/usr/lib/llvm-19/bin/clangd+0x66aaa8)
 #7 0x00005e8154db834f (/usr/lib/llvm-19/bin/clangd+0xc8b34f)
 #8 0x00005e8154519016 (/usr/lib/llvm-19/bin/clangd+0x3ec016)
 #9 0x00005e81545bb029 (/usr/lib/llvm-19/bin/clangd+0x48e029)
#10 0x00005e81545be41d (/usr/lib/llvm-19/bin/clangd+0x49141d)
#11 0x00005e81545b7230 (/usr/lib/llvm-19/bin/clangd+0x48a230)
#12 0x00005e81545b6d8b (/usr/lib/llvm-19/bin/clangd+0x489d8b)
#13 0x00005e815471fee1 (/usr/lib/llvm-19/bin/clangd+0x5f2ee1)
#14 0x000074b4f389ca94 start_thread ./nptl/pthread_create.c:447:8
#15 0x000074b4f3929c3c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0
Signalled during AST worker action: Update
  Filename: delete.cpp
  Directory: /home/paul/Desktop/test
  Command Line: /usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp
  Version: 9
Segmentation fault (core dumped)

System information

Output of clangd --version:

Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302)
Features: linux+grpc
Platform: x86_64-pc-linux-gnu

Editor/LSP plugin:

neovim with coc.nvim.

coc configuration to generate the above log was

    "languageserver": {
        "clangd": {
            "command": "sh",
            "filetypes": [
                "c",
                "cpp"
            ],
            "rootPatterns": [
                "compile_flags.txt",
                "compile_commands.json"
            ],
            "args": [
                "-c",
                "clangd --enable-config --clang-tidy --all-scopes-completion --background-index --completion-style=bundled --function-arg-placeholders --header-insertion=iwyu --header-insertion-decorators --limit-results=500 --log=verbose 2>/tmp/clangd.log"
            ]
        },

but also crashes when using a more normal variant

    "languageserver": {
        "clangd": {
            "command": "clangd",
            "filetypes": [
                "c",
                "cpp"
            ],
            "rootPatterns": [
                "compile_flags.txt",
                "compile_commands.json"
            ],
            "args": [
                "--enable-config",
                "--clang-tidy",
                "--all-scopes-completion",
                "--background-index",
                "--completion-style=bundled",
                "--function-arg-placeholders",
                "--header-insertion=iwyu",
                "--header-insertion-decorators",
                "--limit-results=500"
            ]
        },

My clangd configuration file ~/.config/clangd/config.yaml is this

# https://clangd.llvm.org/config.html

CompileFlags:
  Add: [
    -std=c++23,
    -stdlib=libc++,
    -flto=full,
    -fvirtual-function-elimination,
    -L/usr/lib/llvm-19/lib,
    -fexperimental-library,
    -fopenmp,
    -Wall,
    -Wextra,
    -Wpedantic,
    -Wdouble-promotion,
    -Wformat=2,
    -Wformat-nonliteral,
    -Wformat-y2k,
    -Wnull-dereference,
    -Wimplicit-fallthrough,
    -Wmissing-include-dirs,
    #-Wswitch-default,
    #-Wswitch-enum,
    -Wswitch-bool,
    -Wcovered-switch-default,
    -Wunused-parameter,
    -Wuninitialized,
    -Walloca,
    -Wconversion,
    -Wfloat-conversion,
    -Wsign-conversion,
    -Wfloat-equal,
    -Wshadow-all,
    -Wundef,
    -Wunused-macros,
    -Wcast-qual,
    -Wcast-align,
    -Wmissing-declarations,
    -Wredundant-decls,
    -Wstack-protector,
    -fstack-protector,
    -pedantic-errors,
    -Werror=pedantic,
    -Werror=char-subscripts,
    -Werror=null-dereference,
    -Werror=dangling-gsl,
    -Werror=init-self,
    -Werror=switch,
    #-Werror=switch-enum,
    -Werror=implicit-fallthrough,
    -Werror=misleading-indentation,
    -Werror=missing-braces,
    -Werror=sequence-point,
    -Werror=return-type,
    -Werror=multichar
  ]

Index:
  StandardLibrary: Yes
  Background: Build

Completion:
  AllScopes: true

Hover:
  ShowAKA: true

InlayHints:
  Designators: true
  Enabled: true
  ParameterNames: true
  DeducedTypes: true
  BlockEnd: true

# https://clang.llvm.org/extra/clang-tidy/#suppressing-undesired-diagnostics
Diagnostics:
  UnusedIncludes: Strict
  ClangTidy:
    FastCheckFilter: None
    Add: [
      abseil-*,
      bugprone*,
      boost-*,
      concurrency-*,
      cppcoreguidelines-*,
      modernize-*,
      performance-*,
      portability-*,
      readability-*,
      cert-*,
      clang-analyzer-*,
      google-*,
      hicpp-*,
      linuxkernel-*,
      llvm-*,
      misc-*,
      openmp-*,
      mpi-*
    ]
    Remove: [
      readability-avoid-const-params-in-decls, # const in parameter in function declarations is useful for header files.
      misc-unused-parameters, # caught by -Wunused-parameter
      cppcoreguidelines-avoid-do-while, # annoying, do-while might be useful.
      google-objc-*, # not doing objc
      # bugprone-easily-swappable-parameters, # annoying. setPos(int x, int y) is flagged

      # keep it in, use c++ random number generation facilities.
      # cert-msc50-cpp, # allow the use of std::rand()

      google-readability-todo, # todos don't need a username or bug number in my code
      portability-restrict-system-includes, # disallows the use of headers specific to one OS
      fuchsia-*, # disallows many features that are standard in c++ (operator overloading, default arguments)
      cert-dcl03-c, # alias for misc-static-assert
      cert-dcl16-c, # alias for readability-uppercase-literal-suffix
      cert-dcl37-c, # alias for bugprone-reserved-identifier
      cert-dcl51-cpp, # alias for bugprone-reserved-identifier
      cert-dcl54-cpp, # alias for misc-new-delete-overloads
      cert-dcl59-cpp, # alias for google-build-namespaces
      cert-err09-cpp, # alias for misc-throw-by-value-catch-by-reference
      cert-err61-cpp, # alias for misc-throw-by-value-catch-by-reference
      cert-exp42-c, # alias for bugprone-suspicious-memory-comparison
      cert-fio38-c, # alias for misc-non-copyable-objects
      cert-flp37-c, # alias for bugprone-suspicious-memory-comparison
      cert-msc24-c, # alias for bugprone-unsafe-functions
      cert-msc30-c, # alias for cert-msc50-cpp
      cert-msc32-c, # alias for cert-msc51-cpp
      cert-msc33-c, # alias for bugprone-unsafe-functions
      cert-msc54-cpp, # alias for bugprone-signal-handler
      cert-oop11-cpp, # alias for performance-move-constructor-init
      cert-oop54-cpp, # alias for bugprone-unhandled-self-assignment
      cert-pos44-c, # alias for bugprone-bad-signal-to-kill-thread
      cert-pos47-c, # alias for concurrency-thread-canceltype-asynchronous
      cert-sig30-c, # alias for bugprone-signal-handler
      cert-str34-c, # alias for bugprone-signed-char-misuse
      bugprone-narrowing-conversions, # alias for cppcoreguidelines-narrowing-conversions
      cppcoreguidelines-avoid-c-arrays, # alias for modernize-avoid-c-arrays
      cppcoreguidelines-avoid-magic-numbers, # alias for readability-magic-numbers
      cppcoreguidelines-c-copy-assignment-signature, # alias for misc-unconventional-assign-operator
      cppcoreguidelines-explicit-virtual-functions, # alias for modernize-use-override
      cppcoreguidelines-noexcept-destructor, # alias for performance-noexcept-destructor
      cppcoreguidelines-noexcept-move-operations, # alias for performance-noexcept-move-constructor
      cppcoreguidelines-noexcept-swap, # alias for performance-noexcept-swap
      cppcoreguidelines-non-private-member-variables-in-classes, # alias for misc-non-private-member-variables-in-classes
      cppcoreguidelines-use-default-member-init, # alias for modernize-use-default-member-init
      google-readability-braces-around-statements, # alias for readability-braces-around-statements
      google-readability-function-size, # alias for readability-function-size
      google-readability-namespace-comments, # alias for llvm-namespace-comment
      hicpp-avoid-c-arrays, # alias for modernize-avoid-c-arrays
      hicpp-avoid-goto, # alias for cppcoreguidelines-avoid-goto
      hicpp-braces-around-statements, # alias for readability-braces-around-statements
      hicpp-deprecated-headers, # alias for modernize-deprecated-headers
      hicpp-explicit-conversions, # alias for google-explicit-constructor
      hicpp-function-size, # alias for readability-function-size
      hicpp-invalid-access-moved, # alias for bugprone-use-after-move
      hicpp-member-init, # alias for cppcoreguidelines-pro-type-member-init
      hicpp-move-const-arg, # alias for performance-move-const-arg
      hicpp-named-parameter, # alias for readability-named-parameter
      hicpp-new-delete-operators, # alias for misc-new-delete-overloads
      hicpp-no-array-decay, # alias for cppcoreguidelines-pro-bounds-array-to-pointer-decay
      hicpp-no-malloc, # alias for cppcoreguidelines-no-malloc
      hicpp-noexcept-move, # alias for performance-noexcept-move-constructor
      hicpp-special-member-functions, # alias for cppcoreguidelines-special-member-functions
      hicpp-static-assert, # alias for misc-static-assert
      hicpp-undelegated-constructor, # alias for bugprone-undelegated-constructor
      hicpp-uppercase-literal-suffix, # alias for readability-uppercase-literal-suffix
      hicpp-use-auto, # alias for modernize-use-auto
      hicpp-use-emplace, # alias for modernize-use-emplace
      hicpp-use-equals-default, # alias for modernize-use-equals-default
      hicpp-use-equals-delete, # alias for modernize-use-equals-delete
      hicpp-use-noexcept, # alias for modernize-use-noexcept
      hicpp-use-nullptr, # alias for modernize-use-nullptr
      hicpp-use-override, # alias for modernize-use-override
      hicpp-vararg, # alias for cppcoreguidelines-pro-type-vararg
      llvm-else-after-return, # alias for readability-else-after-return
      llvm-qualified-auto # alias for readability-qualified-auto
    ]
    CheckOptions:
      modernize-use-auto.MinTypeNameLength: 10
      modernize-use-auto.RemoveStars: 0
      hicpp-multiway-paths-covered.WarnOnMissingElse: true
      hicpp-signed-bitwise.IgnorePositiveIntegerLiterals: true
      llvm-namespace-comment.ShortNamespaceLines: 10
      misc-non-private-member-variables-in-classes.IgnorePublicMemberVariables: true
      misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: false
      portability-simd-intrinsics.Suggest: true
      misc-const-correctness.AnalyzeValues: true
      misc-const-correctness.AnalyzeReferences: true
      misc-const-correctness.WarnPointersAsValues: true
      misc-const-correctness.TransformValues: true
      misc-const-correctness.TransformReferences: true
      misc-const-correctness.TransformPointersAsValues: true
      readability-redundant-inline-specifier.StrictMode: true
      readability-identifier-length.MinimumVariableNameLength: 0
      readability-identifier-length.IgnoredVariableNames: "^([XYZxyzit]|id|it)$"
      readability-identifier-length.MinimumLoopCounterNameLength: 3
      readability-identifier-length.IgnoredLoopCounterNames: "^([ijkxyz_]|idx|it)$"
      readability-identifier-length.MinimumExceptionNameLength: 2
      readability-identifier-length.IgnoredExceptionVariableNames: "^(e|ex)$"
      readability-identifier-length.MinimumParameterNameLength: 3
      readability-identifier-length.IgnoredParameterNames: "^([XYZxyzit]|id)$"
      readability-identifier-naming.AbstractClassCase: CamelCase
      readability-identifier-naming.ClassCase: CamelCase
      readability-identifier-naming.ClassConstantCase: UPPER_CASE
      readability-identifier-naming.ClassMemberCase: camelBack
      readability-identifier-naming.ClassMethodCase: CamelCase
      readability-identifier-naming.ConstantCase: UPPER_CASE
      readability-identifier-naming.ConstantMemberCase: UPPER_CASE
      readability-identifier-naming.ConstantParameterCase: UPPER_CASE
      readability-identifier-naming.ConstantPointerParameterCase: camelBack
      readability-identifier-naming.ConstantPointerParameterPrefix: "ptr_"
      readability-identifier-naming.ConstexprFunctionCase: camelBack
      readability-identifier-naming.ConstexprMethodCase: camelBack
      readability-identifier-naming.ConstexprVariableCase: UPPER_CASE
      readability-identifier-naming.EnumCase: CamelCase
      readability-identifier-naming.EnumPrefix: "E"
      readability-identifier-naming.EnumConstantCase: UPPER_CASE
      readability-identifier-naming.FunctionCase: camelBack
      readability-identifier-naming.GlobalConstantCase: UPPER_CASE
      readability-identifier-naming.GlobalConstantPointerCase: UPPER_CASE
      readability-identifier-naming.GlobalConstantPointerPrefix: "gptr_"
      readability-identifier-naming.GlobalFunctionCase: camelBack
      readability-identifier-naming.GlobalPointerCase: camelBack
      readability-identifier-naming.GlobalPointerPrefix: "gptr_"
      readability-identifier-naming.GlobalVariableCase: camelBack
      readability-identifier-naming.GlobalVariablePrefix: "g_"
      readability-identifier-naming.InlineNamespaceCase: CamelCase
      readability-identifier-naming.LocalConstantCase: UPPER_CASE
      readability-identifier-naming.LocalConstantPointerCase: camelBack
      readability-identifier-naming.LocalConstantPointerPrefix: "ptr_"
      readability-identifier-naming.LocalPointerCase: camelBack
      readability-identifier-naming.LocalPointerPrefix: "ptr_"
      readability-identifier-naming.LocalVariableCase: camelBack
      readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
      readability-identifier-naming.MemberCase: camelBack
      readability-identifier-naming.MethodCase: CamelCase
      readability-identifier-naming.NamespaceCase: CamelCase
      readability-identifier-naming.ParameterCase: camelBack
      readability-identifier-naming.ParameterPackCase: camelBack
      readability-identifier-naming.PointerParameterCase: camelBack
      readability-identifier-naming.PointerParameterPrefix: "ptr_"
      readability-identifier-naming.PrivateMemberCase: camelBack
      readability-identifier-naming.PrivateMemberPrefix: "m_"
      readability-identifier-naming.PrivateMethodCase: camelBack
      readability-identifier-naming.ProtectedMemberCase: camelBack
      readability-identifier-naming.ProtectedMemberPrefix: "m_"
      readability-identifier-naming.ProtectedMethodCase: camelBack
      readability-identifier-naming.PublicMemberCase: camelBack
      readability-identifier-naming.PublicMemberPrefix: "m_"
      readability-identifier-naming.PublicMethodCase: camelBack
      readability-identifier-naming.ScopedEnumConstantCase: UPPER_CASE
      readability-identifier-naming.StaticConstantCase: UPPER_CASE
      readability-identifier-naming.StaticVariableCase: camelBack
      readability-identifier-naming.StructCase: CamelCase
      readability-identifier-naming.TemplateParameterCase: CamelCase
      readability-identifier-naming.TypeAliasCase: CamelCase
      readability-identifier-naming.TypedefCase: CamelCase
      readability-identifier-naming.TypeTemplateParameterCase: CamelCase
      readability-identifier-naming.UnionCase: CamelCase
      readability-identifier-naming.ValueTemplateParameterCase: camelBack
      readability-identifier-naming.VariableCase: camelBack
      readability-identifier-naming.VirtualMethodCase: camelBack

Operating system:

Ubuntu Mate 24.04 (noble), x86_64

Linux paul-laptop.lan 6.8.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun  7 15:25:01 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
llvmbot commented 1 month ago

@llvm/issue-subscribers-clangd

Author: None (FalcoGer)

I am using clangd with coc in nvim. I find that clangd crashes after a few seconds of seemingly working normally. I deleted `~/.cache/clangd/` but it didn't help. Even when not including any headers and working on a simple file, it will crash. This bug started to occur a few days ago, but I had not fired up nvim for c++ for a few weeks, so I don't know when it started. To make it crash in this particular case, I opened a file `delete.cpp` and simply typed ``` int main() { delete nullptr; return 0; } ``` and added and removed characters before it crashed shortly thereafter. **Logs** ```text I[17:46:23.191] Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302) I[17:46:23.191] Features: linux+grpc I[17:46:23.191] PID: 426184 I[17:46:23.191] Working directory: /home/paul/Desktop/test I[17:46:23.191] argv[0]: clangd I[17:46:23.191] argv[1]: --enable-config I[17:46:23.191] argv[2]: --clang-tidy I[17:46:23.191] argv[3]: --all-scopes-completion I[17:46:23.191] argv[4]: --background-index I[17:46:23.191] argv[5]: --completion-style=bundled I[17:46:23.191] argv[6]: --function-arg-placeholders I[17:46:23.191] argv[7]: --header-insertion=iwyu I[17:46:23.191] argv[8]: --header-insertion-decorators I[17:46:23.191] argv[9]: --limit-results=500 I[17:46:23.191] argv[10]: --log=verbose V[17:46:23.191] User config file is /home/paul/.config/clangd/config.yaml I[17:46:23.191] Starting LSP over stdin/stdout V[17:46:23.192] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"7.0.5"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/inlayHint","textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":true},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","decorator","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":false},"documentChanges":true,"failureHandling":"undo","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"coc.nvim","version":"0.0.82"},"initializationOptions":{},"locale":"en_US","processId":426015,"rootPath":"/home/paul/Desktop/test","rootUri":"file:///home/paul/Desktop/test","trace":"off","workspaceFolders":[{"name":"test","uri":"file:///home/paul/Desktop/test"}]}} I[17:46:23.192] <-- initialize(0) I[17:46:23.194] --> reply:initialize(0) 1 ms V[17:46:23.194] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyRename","clangd.applyTweak"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inactiveRegionsProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","usedAsMutablePointer","constructorOrDestructor","userDefined","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","modifier","operator","bracket","label","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302) linux+grpc x86_64-pc-linux-gnu"}}} V[17:46:23.196] <<< {"jsonrpc":"2.0","method":"initialized","params":{}} I[17:46:23.196] <-- initialized V[17:46:23.199] <<< {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}} I[17:46:23.199] <-- workspace/didChangeConfiguration V[17:46:23.200] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"auto main() -> int\n{\n const int x = 45;\n delete nullptr;\n return 0;\n}\n","uri":"file:///home/paul/Desktop/test/delete.cpp","version":8}}} I[17:46:23.200] <-- textDocument/didOpen V[17:46:23.201] config note at /home/paul/.config/clangd/config.yaml:3:0: Parsing config fragment V[17:46:23.202] config note at /home/paul/.config/clangd/config.yaml:1:0: Parsed 1 fragments from file V[17:46:23.202] Config fragment: compiling /home/paul/.config/clangd/config.yaml:3 -> 0x000074B4CC01FE10 (trusted=true) I[17:46:23.202] config warning at /home/paul/.config/clangd/config.yaml:124:6: Latency of clang-tidy check 'cert-msc24-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:127:6: Latency of clang-tidy check 'cert-msc33-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:140:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-destructor' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:141:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-move-operations' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:142:6: Latency of clang-tidy check 'cppcoreguidelines-noexcept-swap' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] config warning at /home/paul/.config/clangd/config.yaml:144:6: Latency of clang-tidy check 'cppcoreguidelines-use-default-member-init' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None I[17:46:23.203] --> textDocument/publishDiagnostics V[17:46:23.203] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"message":"Latency of clang-tidy check 'cert-msc24-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":18,"line":123},"start":{"character":6,"line":123}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cert-msc33-c' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":18,"line":126},"start":{"character":6,"line":126}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-destructor' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":43,"line":139},"start":{"character":6,"line":139}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-move-operations' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":48,"line":140},"start":{"character":6,"line":140}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-noexcept-swap' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":37,"line":141},"start":{"character":6,"line":141}},"relatedInformation":[],"severity":2,"source":"clangd-config"},{"message":"Latency of clang-tidy check 'cppcoreguidelines-use-default-member-init' is not known. It will only run if ClangTidy.FastCheckFilter is Loose or None","range":{"end":{"character":47,"line":143},"start":{"character":6,"line":143}},"relatedInformation":[],"severity":2,"source":"clangd-config"}],"uri":"file:///home/paul/.config/clangd/config.yaml"}} I[17:46:23.203] Failed to find compilation database for /home/paul/Desktop/test/delete.cpp I[17:46:23.203] ASTWorker building file /home/paul/Desktop/test/delete.cpp version 8 with command clangd fallback [/home/paul/Desktop/test] /usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp V[17:46:23.205] Ignored diagnostic. argument unused during compilation: '-L/usr/lib/llvm-19/lib' V[17:46:23.206] Driver produced command: cc1 -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name delete.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/paul/Desktop/test -fcoverage-compilation-dir=/home/paul/Desktop/test -resource-dir /usr/lib/llvm-19/lib/clang/19 -internal-isystem /usr/include/c++/v1 -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -pedantic-errors -std=c++23 -fdeprecated-macro -fexperimental-library -ferror-limit 19 -fopenmp -stack-protector 1 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -no-round-trip-args -fvirtual-function-elimination -fwhole-program-vtables -fsplit-lto-unit -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/paul/Desktop/test/delete.cpp V[17:46:23.206] Building first preamble for /home/paul/Desktop/test/delete.cpp version 8 I[17:46:23.218] Built preamble of size 240532 for file /home/paul/Desktop/test/delete.cpp version 8 in 0.01 seconds I[17:46:23.219] --> workspace/semanticTokens/refresh(0) V[17:46:23.219] >>> {"id":0,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null} V[17:46:23.219] indexed preamble AST for /home/paul/Desktop/test/delete.cpp version 8: symbol slab: 0 symbols, 120 bytes ref slab: 0 symbols, 0 refs, 128 bytes relations slab: 0 relations, 24 bytes V[17:46:23.220] <<< {"id":0,"jsonrpc":"2.0","result":null} I[17:46:23.220] <-- reply(0) I[17:46:23.223] Indexing c++23 standard library in the context of /home/paul/Desktop/test/delete.cpp V[17:46:23.252] indexed file AST for /home/paul/Desktop/test/delete.cpp version 8: symbol slab: 1 symbols, 4448 bytes ref slab: 1 symbols, 1 refs, 4248 bytes relations slab: 0 relations, 24 bytes V[17:46:23.252] Build dynamic index for main-file symbols with estimated memory usage of 11520 bytes I[17:46:23.252] --> textDocument/publishDiagnostics V[17:46:23.252] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"delete_operand","message":"Cannot delete expression of type 'std::nullptr_t'","range":{"end":{"character":10,"line":3},"start":{"character":4,"line":3}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"readability-identifier-naming","codeDescription":{"href":"https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html"},"message":"Invalid case style for local constant 'x' (fix available)","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"relatedInformation":[],"severity":2,"source":"clang-tidy"}],"uri":"file:///home/paul/Desktop/test/delete.cpp","version":8}} V[17:46:24.356] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":0,"line":6},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}} I[17:46:24.356] <-- textDocument/inlayHint(1) V[17:46:24.356] ASTWorker running InlayHints on version 8 of /home/paul/Desktop/test/delete.cpp I[17:46:24.356] --> reply:textDocument/inlayHint(1) 0 ms V[17:46:24.356] >>> {"id":1,"jsonrpc":"2.0","result":[{"label":[{"value":"// main"}],"paddingLeft":true,"paddingRight":false,"position":{"character":1,"line":5}}]} V[17:46:25.094] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[{"code":"readability-identifier-naming","codeDescription":{"href":"https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html"},"message":"Invalid case style for local constant 'x' (fix available)","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"relatedInformation":[],"severity":2,"source":"clang-tidy"}],"triggerKind":1},"range":{"end":{"character":14,"line":2},"start":{"character":14,"line":2}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}} I[17:46:25.094] <-- textDocument/codeAction(2) V[17:46:25.095] ASTWorker running codeAction on version 8 of /home/paul/Desktop/test/delete.cpp I[17:46:25.095] --> reply:textDocument/codeAction(2) 0 ms V[17:46:25.095] >>> {"id":2,"jsonrpc":"2.0","result":[{"command":{"arguments":[{"newName":"X","position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}],"command":"clangd.applyRename","title":"change 'x' to 'X'"},"kind":"refactor","title":"change 'x' to 'X'"}]} V[17:46:25.652] <<< {"id":3,"jsonrpc":"2.0","method":"workspace/executeCommand","params":{"arguments":[{"newName":"X","position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}],"command":"clangd.applyRename"}} I[17:46:25.652] <-- workspace/executeCommand(3) V[17:46:25.653] ASTWorker running Rename on version 8 of /home/paul/Desktop/test/delete.cpp I[17:46:25.653] --> workspace/applyEdit(1) V[17:46:25.653] >>> {"id":1,"jsonrpc":"2.0","method":"workspace/applyEdit","params":{"edit":{"changes":{"file:///home/paul/Desktop/test/delete.cpp":[{"newText":"X","range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}}}]}}}} V[17:46:25.669] <<< {"id":1,"jsonrpc":"2.0","result":{"applied":true}} I[17:46:25.669] <-- reply(1) I[17:46:25.669] --> reply:workspace/executeCommand(3) 16 ms V[17:46:25.669] >>> {"id":3,"jsonrpc":"2.0","result":"Rename applied."} V[17:46:25.670] <<< {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":15,"line":2},"start":{"character":14,"line":2}},"rangeLength":1,"text":"X"}],"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp","version":9}}} I[17:46:25.670] <-- textDocument/didChange I[17:46:25.720] Failed to find compilation database for /home/paul/Desktop/test/delete.cpp I[17:46:25.721] ASTWorker building file /home/paul/Desktop/test/delete.cpp version 9 with command clangd fallback [/home/paul/Desktop/test] /usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp V[17:46:25.723] Ignored diagnostic. argument unused during compilation: '-L/usr/lib/llvm-19/lib' V[17:46:25.724] Driver produced command: cc1 -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name delete.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/paul/Desktop/test -fcoverage-compilation-dir=/home/paul/Desktop/test -resource-dir /usr/lib/llvm-19/lib/clang/19 -internal-isystem /usr/include/c++/v1 -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -pedantic-errors -std=c++23 -fdeprecated-macro -fexperimental-library -ferror-limit 19 -fopenmp -stack-protector 1 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -no-round-trip-args -fvirtual-function-elimination -fwhole-program-vtables -fsplit-lto-unit -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/paul/Desktop/test/delete.cpp V[17:46:25.725] Reusing preamble version 8 for version 9 of /home/paul/Desktop/test/delete.cpp PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace. V[17:46:25.867] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}} I[17:46:25.868] <-- textDocument/documentLink(4) V[17:46:25.975] <<< {"id":5,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":0,"line":6},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}} I[17:46:25.975] <-- textDocument/inlayHint(5) V[17:46:26.111] <<< {"id":6,"jsonrpc":"2.0","method":"textDocument/documentHighlight","params":{"position":{"character":14,"line":2},"textDocument":{"uri":"file:///home/paul/Desktop/test/delete.cpp"}}} I[17:46:26.111] <-- textDocument/documentHighlight(6) #0 0x000074b4f58bb06f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xebb06f) #1 0x000074b4f58b8d79 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xeb8d79) #2 0x000074b4f58bb7c0 (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xebb7c0) #3 0x000074b4f3845320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320) #4 0x000074b4f5858a58 llvm::StringMapImpl::LookupBucketFor(llvm::StringRef, unsigned int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.0+0xe58a58) #5 0x00005e81547995e6 (/usr/lib/llvm-19/bin/clangd+0x66c5e6) #6 0x00005e8154797aa8 (/usr/lib/llvm-19/bin/clangd+0x66aaa8) #7 0x00005e8154db834f (/usr/lib/llvm-19/bin/clangd+0xc8b34f) #8 0x00005e8154519016 (/usr/lib/llvm-19/bin/clangd+0x3ec016) #9 0x00005e81545bb029 (/usr/lib/llvm-19/bin/clangd+0x48e029) #10 0x00005e81545be41d (/usr/lib/llvm-19/bin/clangd+0x49141d) #11 0x00005e81545b7230 (/usr/lib/llvm-19/bin/clangd+0x48a230) #12 0x00005e81545b6d8b (/usr/lib/llvm-19/bin/clangd+0x489d8b) #13 0x00005e815471fee1 (/usr/lib/llvm-19/bin/clangd+0x5f2ee1) #14 0x000074b4f389ca94 start_thread ./nptl/pthread_create.c:447:8 #15 0x000074b4f3929c3c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0 Signalled during AST worker action: Update Filename: delete.cpp Directory: /home/paul/Desktop/test Command Line: /usr/lib/llvm-19/bin/clang -std=c++23 -stdlib=libc++ -flto=full -fvirtual-function-elimination -L/usr/lib/llvm-19/lib -fexperimental-library -fopenmp -Wall -Wextra -Wpedantic -Wdouble-promotion -Wformat=2 -Wformat-nonliteral -Wformat-y2k -Wnull-dereference -Wimplicit-fallthrough -Wmissing-include-dirs -Wswitch-bool -Wcovered-switch-default -Wunused-parameter -Wuninitialized -Walloca -Wconversion -Wfloat-conversion -Wsign-conversion -Wfloat-equal -Wshadow-all -Wundef -Wunused-macros -Wcast-qual -Wcast-align -Wmissing-declarations -Wredundant-decls -Wstack-protector -fstack-protector -pedantic-errors -Werror=pedantic -Werror=char-subscripts -Werror=null-dereference -Werror=dangling-gsl -Werror=init-self -Werror=switch -Werror=implicit-fallthrough -Werror=misleading-indentation -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=multichar -resource-dir=/usr/lib/llvm-19/lib/clang/19 -- /home/paul/Desktop/test/delete.cpp Version: 9 Segmentation fault (core dumped) ``` **System information** Output of `clangd --version`: ```text Ubuntu clangd version 19.0.0 (++20240722081722+d2f42c737234-1~exp1~20240722201851.302) Features: linux+grpc Platform: x86_64-pc-linux-gnu ``` Editor/LSP plugin: neovim with coc.nvim. coc configuration to generate the above log was ```json "languageserver": { "clangd": { "command": "sh", "filetypes": [ "c", "cpp" ], "rootPatterns": [ "compile_flags.txt", "compile_commands.json" ], "args": [ "-c", "clangd --enable-config --clang-tidy --all-scopes-completion --background-index --completion-style=bundled --function-arg-placeholders --header-insertion=iwyu --header-insertion-decorators --limit-results=500 --log=verbose 2>/tmp/clangd.log" ] }, ``` but also crashes when using a more normal variant ```json "languageserver": { "clangd": { "command": "clangd", "filetypes": [ "c", "cpp" ], "rootPatterns": [ "compile_flags.txt", "compile_commands.json" ], "args": [ "--enable-config", "--clang-tidy", "--all-scopes-completion", "--background-index", "--completion-style=bundled", "--function-arg-placeholders", "--header-insertion=iwyu", "--header-insertion-decorators", "--limit-results=500" ] }, ``` My clangd configuration file `~/.config/clangd/config.yaml` is this ```yaml # https://clangd.llvm.org/config.html CompileFlags: Add: [ -std=c++23, -stdlib=libc++, -flto=full, -fvirtual-function-elimination, -L/usr/lib/llvm-19/lib, -fexperimental-library, -fopenmp, -Wall, -Wextra, -Wpedantic, -Wdouble-promotion, -Wformat=2, -Wformat-nonliteral, -Wformat-y2k, -Wnull-dereference, -Wimplicit-fallthrough, -Wmissing-include-dirs, #-Wswitch-default, #-Wswitch-enum, -Wswitch-bool, -Wcovered-switch-default, -Wunused-parameter, -Wuninitialized, -Walloca, -Wconversion, -Wfloat-conversion, -Wsign-conversion, -Wfloat-equal, -Wshadow-all, -Wundef, -Wunused-macros, -Wcast-qual, -Wcast-align, -Wmissing-declarations, -Wredundant-decls, -Wstack-protector, -fstack-protector, -pedantic-errors, -Werror=pedantic, -Werror=char-subscripts, -Werror=null-dereference, -Werror=dangling-gsl, -Werror=init-self, -Werror=switch, #-Werror=switch-enum, -Werror=implicit-fallthrough, -Werror=misleading-indentation, -Werror=missing-braces, -Werror=sequence-point, -Werror=return-type, -Werror=multichar ] Index: StandardLibrary: Yes Background: Build Completion: AllScopes: true Hover: ShowAKA: true InlayHints: Designators: true Enabled: true ParameterNames: true DeducedTypes: true BlockEnd: true # https://clang.llvm.org/extra/clang-tidy/#suppressing-undesired-diagnostics Diagnostics: UnusedIncludes: Strict ClangTidy: FastCheckFilter: None Add: [ abseil-*, bugprone*, boost-*, concurrency-*, cppcoreguidelines-*, modernize-*, performance-*, portability-*, readability-*, cert-*, clang-analyzer-*, google-*, hicpp-*, linuxkernel-*, llvm-*, misc-*, openmp-*, mpi-* ] Remove: [ readability-avoid-const-params-in-decls, # const in parameter in function declarations is useful for header files. misc-unused-parameters, # caught by -Wunused-parameter cppcoreguidelines-avoid-do-while, # annoying, do-while might be useful. google-objc-*, # not doing objc # bugprone-easily-swappable-parameters, # annoying. setPos(int x, int y) is flagged # keep it in, use c++ random number generation facilities. # cert-msc50-cpp, # allow the use of std::rand() google-readability-todo, # todos don't need a username or bug number in my code portability-restrict-system-includes, # disallows the use of headers specific to one OS fuchsia-*, # disallows many features that are standard in c++ (operator overloading, default arguments) cert-dcl03-c, # alias for misc-static-assert cert-dcl16-c, # alias for readability-uppercase-literal-suffix cert-dcl37-c, # alias for bugprone-reserved-identifier cert-dcl51-cpp, # alias for bugprone-reserved-identifier cert-dcl54-cpp, # alias for misc-new-delete-overloads cert-dcl59-cpp, # alias for google-build-namespaces cert-err09-cpp, # alias for misc-throw-by-value-catch-by-reference cert-err61-cpp, # alias for misc-throw-by-value-catch-by-reference cert-exp42-c, # alias for bugprone-suspicious-memory-comparison cert-fio38-c, # alias for misc-non-copyable-objects cert-flp37-c, # alias for bugprone-suspicious-memory-comparison cert-msc24-c, # alias for bugprone-unsafe-functions cert-msc30-c, # alias for cert-msc50-cpp cert-msc32-c, # alias for cert-msc51-cpp cert-msc33-c, # alias for bugprone-unsafe-functions cert-msc54-cpp, # alias for bugprone-signal-handler cert-oop11-cpp, # alias for performance-move-constructor-init cert-oop54-cpp, # alias for bugprone-unhandled-self-assignment cert-pos44-c, # alias for bugprone-bad-signal-to-kill-thread cert-pos47-c, # alias for concurrency-thread-canceltype-asynchronous cert-sig30-c, # alias for bugprone-signal-handler cert-str34-c, # alias for bugprone-signed-char-misuse bugprone-narrowing-conversions, # alias for cppcoreguidelines-narrowing-conversions cppcoreguidelines-avoid-c-arrays, # alias for modernize-avoid-c-arrays cppcoreguidelines-avoid-magic-numbers, # alias for readability-magic-numbers cppcoreguidelines-c-copy-assignment-signature, # alias for misc-unconventional-assign-operator cppcoreguidelines-explicit-virtual-functions, # alias for modernize-use-override cppcoreguidelines-noexcept-destructor, # alias for performance-noexcept-destructor cppcoreguidelines-noexcept-move-operations, # alias for performance-noexcept-move-constructor cppcoreguidelines-noexcept-swap, # alias for performance-noexcept-swap cppcoreguidelines-non-private-member-variables-in-classes, # alias for misc-non-private-member-variables-in-classes cppcoreguidelines-use-default-member-init, # alias for modernize-use-default-member-init google-readability-braces-around-statements, # alias for readability-braces-around-statements google-readability-function-size, # alias for readability-function-size google-readability-namespace-comments, # alias for llvm-namespace-comment hicpp-avoid-c-arrays, # alias for modernize-avoid-c-arrays hicpp-avoid-goto, # alias for cppcoreguidelines-avoid-goto hicpp-braces-around-statements, # alias for readability-braces-around-statements hicpp-deprecated-headers, # alias for modernize-deprecated-headers hicpp-explicit-conversions, # alias for google-explicit-constructor hicpp-function-size, # alias for readability-function-size hicpp-invalid-access-moved, # alias for bugprone-use-after-move hicpp-member-init, # alias for cppcoreguidelines-pro-type-member-init hicpp-move-const-arg, # alias for performance-move-const-arg hicpp-named-parameter, # alias for readability-named-parameter hicpp-new-delete-operators, # alias for misc-new-delete-overloads hicpp-no-array-decay, # alias for cppcoreguidelines-pro-bounds-array-to-pointer-decay hicpp-no-malloc, # alias for cppcoreguidelines-no-malloc hicpp-noexcept-move, # alias for performance-noexcept-move-constructor hicpp-special-member-functions, # alias for cppcoreguidelines-special-member-functions hicpp-static-assert, # alias for misc-static-assert hicpp-undelegated-constructor, # alias for bugprone-undelegated-constructor hicpp-uppercase-literal-suffix, # alias for readability-uppercase-literal-suffix hicpp-use-auto, # alias for modernize-use-auto hicpp-use-emplace, # alias for modernize-use-emplace hicpp-use-equals-default, # alias for modernize-use-equals-default hicpp-use-equals-delete, # alias for modernize-use-equals-delete hicpp-use-noexcept, # alias for modernize-use-noexcept hicpp-use-nullptr, # alias for modernize-use-nullptr hicpp-use-override, # alias for modernize-use-override hicpp-vararg, # alias for cppcoreguidelines-pro-type-vararg llvm-else-after-return, # alias for readability-else-after-return llvm-qualified-auto # alias for readability-qualified-auto ] CheckOptions: modernize-use-auto.MinTypeNameLength: 10 modernize-use-auto.RemoveStars: 0 hicpp-multiway-paths-covered.WarnOnMissingElse: true hicpp-signed-bitwise.IgnorePositiveIntegerLiterals: true llvm-namespace-comment.ShortNamespaceLines: 10 misc-non-private-member-variables-in-classes.IgnorePublicMemberVariables: true misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: false portability-simd-intrinsics.Suggest: true misc-const-correctness.AnalyzeValues: true misc-const-correctness.AnalyzeReferences: true misc-const-correctness.WarnPointersAsValues: true misc-const-correctness.TransformValues: true misc-const-correctness.TransformReferences: true misc-const-correctness.TransformPointersAsValues: true readability-redundant-inline-specifier.StrictMode: true readability-identifier-length.MinimumVariableNameLength: 0 readability-identifier-length.IgnoredVariableNames: "^([XYZxyzit]|id|it)$" readability-identifier-length.MinimumLoopCounterNameLength: 3 readability-identifier-length.IgnoredLoopCounterNames: "^([ijkxyz_]|idx|it)$" readability-identifier-length.MinimumExceptionNameLength: 2 readability-identifier-length.IgnoredExceptionVariableNames: "^(e|ex)$" readability-identifier-length.MinimumParameterNameLength: 3 readability-identifier-length.IgnoredParameterNames: "^([XYZxyzit]|id)$" readability-identifier-naming.AbstractClassCase: CamelCase readability-identifier-naming.ClassCase: CamelCase readability-identifier-naming.ClassConstantCase: UPPER_CASE readability-identifier-naming.ClassMemberCase: camelBack readability-identifier-naming.ClassMethodCase: CamelCase readability-identifier-naming.ConstantCase: UPPER_CASE readability-identifier-naming.ConstantMemberCase: UPPER_CASE readability-identifier-naming.ConstantParameterCase: UPPER_CASE readability-identifier-naming.ConstantPointerParameterCase: camelBack readability-identifier-naming.ConstantPointerParameterPrefix: "ptr_" readability-identifier-naming.ConstexprFunctionCase: camelBack readability-identifier-naming.ConstexprMethodCase: camelBack readability-identifier-naming.ConstexprVariableCase: UPPER_CASE readability-identifier-naming.EnumCase: CamelCase readability-identifier-naming.EnumPrefix: "E" readability-identifier-naming.EnumConstantCase: UPPER_CASE readability-identifier-naming.FunctionCase: camelBack readability-identifier-naming.GlobalConstantCase: UPPER_CASE readability-identifier-naming.GlobalConstantPointerCase: UPPER_CASE readability-identifier-naming.GlobalConstantPointerPrefix: "gptr_" readability-identifier-naming.GlobalFunctionCase: camelBack readability-identifier-naming.GlobalPointerCase: camelBack readability-identifier-naming.GlobalPointerPrefix: "gptr_" readability-identifier-naming.GlobalVariableCase: camelBack readability-identifier-naming.GlobalVariablePrefix: "g_" readability-identifier-naming.InlineNamespaceCase: CamelCase readability-identifier-naming.LocalConstantCase: UPPER_CASE readability-identifier-naming.LocalConstantPointerCase: camelBack readability-identifier-naming.LocalConstantPointerPrefix: "ptr_" readability-identifier-naming.LocalPointerCase: camelBack readability-identifier-naming.LocalPointerPrefix: "ptr_" readability-identifier-naming.LocalVariableCase: camelBack readability-identifier-naming.MacroDefinitionCase: UPPER_CASE readability-identifier-naming.MemberCase: camelBack readability-identifier-naming.MethodCase: CamelCase readability-identifier-naming.NamespaceCase: CamelCase readability-identifier-naming.ParameterCase: camelBack readability-identifier-naming.ParameterPackCase: camelBack readability-identifier-naming.PointerParameterCase: camelBack readability-identifier-naming.PointerParameterPrefix: "ptr_" readability-identifier-naming.PrivateMemberCase: camelBack readability-identifier-naming.PrivateMemberPrefix: "m_" readability-identifier-naming.PrivateMethodCase: camelBack readability-identifier-naming.ProtectedMemberCase: camelBack readability-identifier-naming.ProtectedMemberPrefix: "m_" readability-identifier-naming.ProtectedMethodCase: camelBack readability-identifier-naming.PublicMemberCase: camelBack readability-identifier-naming.PublicMemberPrefix: "m_" readability-identifier-naming.PublicMethodCase: camelBack readability-identifier-naming.ScopedEnumConstantCase: UPPER_CASE readability-identifier-naming.StaticConstantCase: UPPER_CASE readability-identifier-naming.StaticVariableCase: camelBack readability-identifier-naming.StructCase: CamelCase readability-identifier-naming.TemplateParameterCase: CamelCase readability-identifier-naming.TypeAliasCase: CamelCase readability-identifier-naming.TypedefCase: CamelCase readability-identifier-naming.TypeTemplateParameterCase: CamelCase readability-identifier-naming.UnionCase: CamelCase readability-identifier-naming.ValueTemplateParameterCase: camelBack readability-identifier-naming.VariableCase: camelBack readability-identifier-naming.VirtualMethodCase: camelBack ``` Operating system: Ubuntu Mate 24.04 (noble), x86_64 ```text Linux paul-laptop.lan 6.8.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:25:01 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux ```
FalcoGer commented 1 month ago

I found the crash report. _usr_lib_llvm-19_bin_clangd.1000.crash.zip

FalcoGer commented 1 month ago

I extracted the core dump from the crash report. CoreDump.zip

FalcoGer commented 1 month ago

Updated to clang 20

clangd --version
Ubuntu clangd version 20.0.0 (++20240729081728+3a2ef3a63487-1~exp1~20240729081847.316)
Features: linux+grpc
Platform: x86_64-pc-linux-gnu

It stopped crashing, but now clangd takes 100% CPU and doesn't react to SIGTERM, it also stops updating the diagnostics. I have also noticed that it doesn't build the index anymore in ~/.cache/clangd/index/

FalcoGer commented 1 month ago

I switched slow check filter from none to loose and it stopped hanging. I guess some checks really are abysmally slow. crash seems to be resolved in clang 20.

HighCommander4 commented 1 month ago

I switched slow check filter from none to loose and it stopped hanging. I guess some checks really are abysmally slow.

If by chance you're able to narrow down which check is the hanging one, it would be worth filing a separate bug report for further investigation.

FalcoGer commented 1 month ago

@HighCommander4 is there a list of which commands are considered slow or not measured yet?

I found out that Loose also hangs, it's only on strict that it is fine.

HighCommander4 commented 1 month ago

@HighCommander4 is there a list of which commands are considered slow or not measured yet?

Yep, see https://github.com/clangd/clangd/issues/1727#issuecomment-2263709216

FalcoGer commented 1 month ago

@HighCommander4

I switched all the checks on individually. When I add boost-* with FastCheckFilter: None it hangs. But when I add the two documented boost checks (boost-use-ranges and boost-use-to-string) individually, it is fine. It seems like there is an undocumented check that is causing the issue and I don't know what it is.

HighCommander4 commented 1 month ago

When I add boost-* with FastCheckFilter: None it hangs. But when I add the two documented boost checks (boost-use-ranges and boost-use-to-string) individually, it is fine.

That is very odd. I don't see any other boost- checks in the source.