Repository navigation
VS tsserver crash in openExternalProjects: Error processing request. Debug Failure. False expression. #35630
Copy link
Copy link
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issue
Milestone
Description
New in 3.7
This LS crash is the current top hitter in Visual Studio. I have not found a corresponding auto-filed bug, which implies it's not impacting VS Code.
Seen in Visual Studio versions: ["16.5.29521.150","16.5.29504.125","16.4.29519.181","16.4.29519.161","16.4.29411.138","16.3.29503.13","16.3.29519.87","16.3.29411.108","16.3.29326.143","16.3.29509.3"]
TypeScript version: ["3.7.2","3.7.1-rc","3.7.0-beta","3.7.3"]
Command: openExternalProjects
Message: Error processing request. Debug Failure. False expression.
Stack trace:
declareSymbol(tsserver.js:29174:22)
declareSourceFileMember(tsserver.js:30473:19)
declareSymbolAndAddToSymbolTable(tsserver.js:30420:28)
bindThisPropertyAssignment(tsserver.js:31334:25)
bindWorker(tsserver.js:30985:29)
bind(tsserver.js:30867:13)
visitNode(tsserver.js:17584:24)
Object.forEachChild(tsserver.js:17998:21)
bindEachChild(tsserver.js:29481:16)
bindChildrenWorker(tsserver.js:29576:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindEach(tsserver.js:29473:21)
visitNodes(tsserver.js:17589:24)
Object.forEachChild(tsserver.js:17978:21)
bindEachChild(tsserver.js:29481:16)
bindChildrenWorker(tsserver.js:29576:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindEach(tsserver.js:29473:21)
visitNodes(tsserver.js:17589:24)
Object.forEachChild(tsserver.js:17978:21)
bindEachChild(tsserver.js:29481:16)
bindChildrenWorker(tsserver.js:29576:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindEach(tsserver.js:29473:21)
visitNodes(tsserver.js:17589:24)
Object.forEachChild(tsserver.js:17978:21)
bindEachChild(tsserver.js:29481:16)
bindChildrenWorker(tsserver.js:29576:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindEach(tsserver.js:29473:21)
visitNodes(tsserver.js:17589:24)
Object.forEachChild(tsserver.js:17978:21)
bindEachChild(tsserver.js:29481:16)
bindChildrenWorker(tsserver.js:29576:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindExpressionStatement(tsserver.js:30068:13)
bindChildrenWorker(tsserver.js:29530:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
bindLabeledStatement(tsserver.js:30084:13)
bindChildrenWorker(tsserver.js:29533:21)
bindChildren(tsserver.js:29451:17)
bind(tsserver.js:30878:21)
unknown_function(tsserver.js:29457:94)
bindEach(tsserver.js:29473:21)
bindEachFunctionsFirst(tsserver.js:29457:13)
bindChildrenWorker(tsserver.js:29567:21)
bindChildren(tsserver.js:29451:17)
bindContainer(tsserver.js:29397:17)
bind(tsserver.js:30881:21)
bindSourceFile(tsserver.js:29030:17)
Object.bindSourceFile(tsserver.js:28967:9)
initializeTypeChecker(tsserver.js:64332:20)
Object.createTypeChecker(tsserver.js:33586:9)
Object.getTypeChecker(tsserver.js:95558:79)
synchronizeHostData(tsserver.js:130590:21)
Object.getProgram(tsserver.js:130672:13)
ExternalProject.Project.updateGraphWorker(tsserver.js:135023:53)
ExternalProject.Project.updateGraph(tsserver.js:134966:42)
ExternalProject.updateGraph(tsserver.js:135963:59)
ProjectService.openExternalProject(tsserver.js:138655:29)
ProjectService.openExternalProjects(tsserver.js:138406:26)
Session.handlers.ts.createMapFromTemplate._a.(tsserver.js:139167:46)
unknown_function(tsserver.js:140854:88)
IOSession.Session.executeWithRequestId(tsserver.js:140845:28)
IOSession.Session.executeCommand(tsserver.js:140854:33)
IOSession.Session.onMessage(tsserver.js:140877:35)
Interface.(tsserver.js:142192:27)
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
suppressed_frame()
ADO link: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1034740
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issue
Activity
minestarks commentedon Dec 11, 2019
Sample user report:
https://developercommunity.visualstudio.com/content/problem/852813/javascript-intellisense-not-working-after-update-1.html
[-][Telemetry] servererror: Error processing request. Debug Failure. False expression.[/-][+]VS tsserver crash in openExternalProjects: Error processing request. Debug Failure. False expression.[/+]RyanCavanaugh commentedon Dec 11, 2019
Made a repro from the call stack
minestarks commentedon Dec 11, 2019
Ryan Cavanaugh (@RyanCavanaugh) Nathan Shively-Sanders (@sandersn) this may be a dupe, but I'm not sure since the callstack is slightly different. Could you confirm? https://developercommunity.visualstudio.com/content/problem/851128/using-typescript-37-for-intellisense.html
sandersn commentedon Dec 11, 2019
New and exciting call stack for the code:
The cause (and fix) is almost certainly the same, the module code path just gets further than the global path before crashing.
sandersn commentedon Dec 11, 2019
Mine Starks (@minestarks) the important parts --
bindThisPropertyAssignmentanddeclareSymbolAndAddToSymbolTable-- are the same. It's a dupe.sandersn commentedon Dec 11, 2019
We forget to handle dynamic names in the source file binding case. There's nothing sensible we can do, so dynamic names should in a top-level this-property assignment should be skipped.
sandersn commentedon Dec 11, 2019
Fix is ready.
sandersn commentedon Dec 12, 2019
This is now in 3.7 as well.
minestarks commentedon Dec 17, 2019
Nathan Shively-Sanders (@sandersn) what about this bug? Confirmed dupe or would you need more info? The callstack doesn't have
declareSymbolAndAddToSymbolTable, butbindThisPropertyAssignmentis there.sandersn commentedon Dec 17, 2019
It's likely related but I need to look at the code in bindThisPropertyPropertyAssignment again.
sandersn commentedon Dec 17, 2019
Yes, it's extremely likely to be related:
!hasDynamicName.!hasDynamicNameassert in declareSymbol.I'm looking at tsserver.js for 3.7.2 and 3.7.3, though, and the line numbers don't match up with the quoted line number in the bug; 31331 should be 1 of the 3 calls to
declareSymbol, but isn't in either version. Any idea how to interpret line numbers in the stack of that bug?minestarks commentedon Dec 18, 2019
Here's a callstack confirmed to be from 3.7.3. I think this lines up?
sandersn commentedon Dec 18, 2019
Nope :(
My locations show more 16 lines -- I'm using the version published to NPM, which might be different from 3.7.3 in VS? That would be weird.
minestarks commentedon Dec 18, 2019
That would be weird, wouldn't it? I'm looking at this. It claims to correspond to the 3.7.3 tag. The VS side is built in a different pipeline so maybe the output is slightly different? Scary but possible in theory
galkin commentedon Dec 22, 2019
Wesley Wigham (@weswigham),
Only this issue has 3.7.4 milestone label, so I'm posting my question here.
NPM has 3.7.4 version, but github have not tag/release. Could you fix this?
weswigham commentedon Dec 22, 2019
Daniel Rosenwasser (@DanielRosenwasser) you wanna proof the draft GitHub release?