Skip to content

Null Dereference when Using Interactive Window Before Main NodeJs Package is loaded #917

@mjbvz

Description

@mjbvz

Repo

  1. Launch VS (restored state should have Node.js interactive window open already)
  2. Quickly type something into the interactive window
  3. Press enter.

Expected
Repl stuff

Actual
Null deref in GetStartupProject:

>   Microsoft.NodejsTools.dll!Microsoft.VisualStudioTools.CommonPackage.GetStartupProject(System.IServiceProvider serviceProvider) Line 178 C#
    Microsoft.NodejsTools.dll!Microsoft.NodejsTools.Repl.VsNodejsReplSite.GetStartupProject() Line 26   C#
    Microsoft.NodejsTools.dll!Microsoft.NodejsTools.Repl.NodejsReplEvaluator.GetNodeExePath() Line 228  C#
    Microsoft.NodejsTools.dll!Microsoft.NodejsTools.Repl.NodejsReplEvaluator.Connect() Line 180 C#
    Microsoft.NodejsTools.dll!Microsoft.NodejsTools.Repl.NodejsReplEvaluator.EnsureConnected() Line 169 C#
    Microsoft.NodejsTools.dll!Microsoft.NodejsTools.Repl.NodejsReplEvaluator.ExecuteText(string text) Line 135  C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.ExecuteActiveCode.AnonymousMethod__196_0() Line 2330  C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.UIThread(System.Action action) Line 3272  C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.ExecuteActiveCode() Line 2299 C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.Submit() Line 1943    C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.PreEditorCommandFilterExec(ref System.Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, System.IntPtr pvaIn, System.IntPtr pvaOut) Line 1567 C#
    Microsoft.NodejsTools.InteractiveWindow.dll!Microsoft.NodejsTools.Repl.ReplWindow.CommandFilter.Exec(ref System.Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, System.IntPtr pvaIn, System.IntPtr pvaOut) Line 1344 C#

The root cause is that NodejsPackage.Instance is null at this point.

This crashes the interactive window and requires a VS restart.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions