Pure-D / serve-d

D LSP server (dlang language server protocol server)
MIT License
208 stars 50 forks source link

server-d process stuck in endless loop #336

Open ryuukk opened 1 year ago

ryuukk commented 1 year ago

I'm not sure what causes it exactly, but in my project, after a while, serve-d becomes stuck and eat CPU

After i managed to attach a debugger and here are 2 call stacks from 2 runs:

serve-d.exe;;7FF6BD934F30
serve-d.exe;;7FF6BD928D5D
serve-d.exe;;7FF6BD830F9A
serve-d.exe;;7FF6BD877981
serve-d.exe;;7FF6BD828B83
serve-d.exe;core.internal.array.appending._d_arrayappendcTXImpl!(std.experimental.lexer.TokenStructure!(ubyte, "import dparse.lexer:TokenTriviaFields,TriviaToken; mixin TokenTriviaFields;")[], std.experimental.lexer.TokenStructure!(ubyte, "import dparse.lexer:TokenTriviaFields,TriviaToken; mixin TokenTriviaFields;"))._d_arrayappendcTX();7FF6BCDC5237
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A855
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.SpecifiedFunctionBody.accept();7FF6BD17A3C6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC6D
serve-d.exe;dparse.ast.FunctionBody.accept();7FF6BD114A23
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ADFD
serve-d.exe;dparse.ast.FunctionDeclaration.accept();7FF6BD117FE2
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10AE8D
serve-d.exe;dparse.ast.Declaration.accept();7FF6BD10CBB9
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A8ED
serve-d.exe;dparse.ast.Module.accept();7FF6BD17CD29
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10B5DD
serve-d.exe;workspaced.com.dcdext.DCDExtComponent.highlightRelated();7FF6BCCDAEE7
serve-d.exe;served.commands.highlight.fallbackDocumentHighlight();7FF6BC926387
serve-d.exe;served.commands.highlight.provideDocumentHighlight();7FF6BC925A5B
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.__lambda22(__T759, __T760, __T761, __T762)(name, symbol, arguments, uda)();7FF6BCA752AD
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw.__lambda3(__T292, __T293, __T294)(name, symbol, uda)();7FF6BCA7515D
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw.iterateExtensionMethodsByUDA!(served.utils.events.protocolMethod, (name, symbol, uda)
{
if (uda.method == method)
{
debug (PerfTraceLog)
{
mixin(traceStatistics(uda.method ~ ":" ~ name));
}

alias symbolArgs = Parameters!symbol;
static if (symbolArgs.length == 0)
{
auto arguments = tuple();
}
else
{
static if (symbolArgs.length == 1)
{
auto arguments = tuple(implParseParam!(symbolArgs[0])(params));
}
else
{
static if (availableExtraArgs.length > 0 && (symbolArgs.length <= 1 + availableExtraArgs.length))
{
auto arguments = tuple(implParseParam!(symbolArgs[0])(params), forward!(availableExtraArgs[0 .. symbolArgs.length + -1]));
}
else
{
static assert(0, "Function for " ~ name ~ " can't have more than one argument");
}
}
}
callback(name, symbol, arguments, uda);
return true;
}
else
return false;
}
, false).iterateExtensionMethodsByUDA();7FF6BCA6C953
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw();7FF6BCA6B74A
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest();7FF6BC95CF5E
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).gotRequest.__lambda2();7FF6BC95DE8B
serve-d.exe;;7FF6BD86A13F
serve-d.exe;;7FF6BD8809FA
serve-d.exe;;7FF6BD8353D9

A different one after a retry:

serve-d.exe;dparse.ast.Expression.accept();7FF6BD16ED98
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ABED
serve-d.exe;dparse.ast.IfCondition.accept();7FF6BD194C8A
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10B0CD
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FA73
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.IfStatement.accept();7FF6BD10FAC5
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A8C8
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A634
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D95
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182D6C
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.Foreach!false.Foreach.accept();7FF6BD1207E7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ACDD
serve-d.exe;dparse.ast.StatementNoCaseNoDefault.accept();7FF6BD182E39
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BCCD
serve-d.exe;dparse.ast.Statement.accept();7FF6BD155183
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC9D
serve-d.exe;dparse.ast.DeclarationOrStatement.accept();7FF6BD154AAC
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A91D
serve-d.exe;dparse.ast.DeclarationsAndStatements.accept();7FF6BD1905C7
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A94D
serve-d.exe;dparse.ast.BlockStatement.accept();7FF6BD11C2D6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A4FD
serve-d.exe;dparse.ast.SpecifiedFunctionBody.accept();7FF6BD17A3C6
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10BC6D
serve-d.exe;dparse.ast.FunctionBody.accept();7FF6BD114A23
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10ADFD
serve-d.exe;dparse.ast.FunctionDeclaration.accept();7FF6BD117FE2
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10AE8D
serve-d.exe;dparse.ast.Declaration.accept();7FF6BD10CBB9
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10A8ED
serve-d.exe;dparse.ast.Module.accept();7FF6BD17CD29
serve-d.exe;dparse.ast.ASTVisitor.visit();7FF6BD10B5DD
serve-d.exe;workspaced.com.dcdext.DCDExtComponent.highlightRelated();7FF6BCCDAEE7
serve-d.exe;served.commands.highlight.fallbackDocumentHighlight();7FF6BC926387
serve-d.exe;served.commands.highlight.provideDocumentHighlight();7FF6BC925A5B
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.__lambda22(__T759, __T760, __T761, __T762)(name, symbol, arguments, uda)();7FF6BCA752AD
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw.__lambda3(__T292, __T293, __T294)(name, symbol, uda)();7FF6BCA7515D
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw.iterateExtensionMethodsByUDA!(served.utils.events.protocolMethod, (name, symbol, uda)
{
if (uda.method == method)
{
debug (PerfTraceLog)
{
mixin(traceStatistics(uda.method ~ ":" ~ name));
}

alias symbolArgs = Parameters!symbol;
static if (symbolArgs.length == 0)
{
auto arguments = tuple();
}
else
{
static if (symbolArgs.length == 1)
{
auto arguments = tuple(implParseParam!(symbolArgs[0])(params));
}
else
{
static if (availableExtraArgs.length > 0 && (symbolArgs.length <= 1 + availableExtraArgs.length))
{
auto arguments = tuple(implParseParam!(symbolArgs[0])(params), forward!(availableExtraArgs[0 .. symbolArgs.length + -1]));
}
else
{
static assert(0, "Function for " ~ name ~ " can't have more than one argument");
}
}
}
callback(name, symbol, arguments, uda);
return true;
}
else
return false;
}
, false).iterateExtensionMethodsByUDA();7FF6BCA6C953
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest.emitProtocolRaw!(served.utils.events.protocolMethod, (name, symbol, arguments, uda)
{
if (done)
return ;
trace("Calling request method ", name);
alias RequestResultT = typeof(symbol(arguments.expand));
static if (is(RequestResultT : JsonValue))
{
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
else
{
static if (!is(RequestResultT : _[], _) && isInputRange!RequestResultT)
{
handlePartialIterator(symbol, arguments);
return ;
}
else
{
static if (is(RequestResultT : T[], T))
{
if (numHandlers > 1)
{
handlePartialWork(symbol, arguments);
return ;
}
}
else
{
assert(numHandlers == 1, "Registered more than one " ~ msg.method ~ " handler on non-partial method returning " ~ RequestResultT.stringof);
}
auto requestResult = symbol(arguments.expand);
res.resultJson = requestResult.serializeJson;
done = true;
processRequestObservers(msg, requestResult);
}
}
}
, false).emitProtocolRaw();7FF6BCA6B74A
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).processRequest();7FF6BC95CF5E
serve-d.exe;served.types.LanguageServerRouter!(extension, LanguageServerConfig(128, 4096, EventProcessorConfig(["object", "served", "std", "core", "etc", "io", "workspaced", "fs"]), "serve-d", 30, 5)).gotRequest.__lambda2();7FF6BC95DE8B
serve-d.exe;;7FF6BD86A13F
serve-d.exe;;7FF6BD8809FA
serve-d.exe;;7FF6BD8353D9
ryuukk commented 1 year ago

It may be a problem with sublime text, i'll try to reproduce the freeze again and check sublime's log

And i'll try with vscode as well

WebFreak001 commented 1 year ago

I think it might not be stuck in an endless loop, but rather takes a very long time to process the source code - do you have any complex things such as very nested code or very long code? You would need to find out the file in which this loop started happening to better resolve it. You may not immediately notice it if you don't keep an eye on the serve-d status all the time.

I'll add a rough optimization step that will filter out all {} blocks that don't contain the search token for the highlight code.

ryuukk commented 1 year ago

Code is not very complex, i got a freeze right now, while i was typing at line: 303

image

Notice the syntax check is also frozen

I checked in the log, i still receive jsons from serve-d, but the client doesn't seem to react to it

Could it be a worker thread that is stuck somewhere?

WebFreak001 commented 1 year ago

parsing code is sometimes synchronous, so if it is taking a very long time, it would also hang up all LSP communication. In case of highlighting related things, parsing code is synchronous.

ryuukk commented 1 year ago

I don't think it's slow, i left it for few minutes and still no response, main thread definitely is frozen and stuck on libdparse code

WebFreak001 commented 1 year ago

anyway I optimized some code here to avoid such deep AST visits, try out serve-d master

ryuukk commented 1 year ago

It froze again with your commit.. i suspect problem might be in workspace-d

In this while loop:

https://github.com/Pure-D/serve-d/blob/a5929bbb8c24995202ca14754b8de294c9c1d49e/workspace-d/source/workspaced/com/dcdext.d#L2188-L2272

That's at least where the debugger says it stopped at

serve-d.exe;;7FF6BD93BDEC
serve-d.exe;;7FF6BD93B2BA
serve-d.exe;;7FF6BD931E5E
serve-d.exe;;7FF6BD931520
serve-d.exe;;7FF6BD92F3BA
serve-d.exe;;7FF6BD934FB1
serve-d.exe;;7FF6BD928D5D
serve-d.exe;;7FF6BD830F9A
serve-d.exe;;7FF6BD877981
serve-d.exe;;7FF6BD828B83
serve-d.exe;core.internal.array.appending._d_arrayappendcTXImpl!(std.experimental.lexer.TokenStructure!(ubyte, "import dparse.lexer:TokenTriviaFields,TriviaToken; mixin TokenTriviaFields;")[], std.experimental.lexer.TokenStructure!(ubyte, "import dparse.lexer:TokenTriviaFields,TriviaToken; mixin TokenTriviaFields;"))._d_arrayappendcTX();7FF6BCDC5237
serve-d.exe;workspaced.com.dcdext.IfFinder.visit();7FF6BCD9A763

Stuck appending some tokens then dunno where it goes

image

ryuukk commented 1 year ago

I disabled syntax check with: "d.enableLinting" : false, and it no longer seems to freeze, so that's definitely something in that loop that is stuck in endless loop

I'll try to debug this further an other day, i am to finish this project i am working on for this week

ryuukk commented 1 year ago

I found the part of my code that trigger the freeze, i'll try to reduce the code so i can share it (can't share the whole thing since it's private)