fsharp icon indicating copy to clipboard operation
fsharp copied to clipboard

I can make Visual Studio disappear by using "Other flags" in the properties window

Open abelbraaksma opened this issue 3 years ago • 1 comments

If you write --version in the "Other flags" (motivation: I wanted to see the FSC version on each compile), and if you then switch to any source file, the whole of Visual Studio disappears.

Repro steps

Minimal repro zip file: CrashVisualStudio.zip

  • Create a new solution + project in VS 2022
  • Go to Project Properties and set "Other flags" to --version
  • Switch back to the main source (i.e., Ctrl+Tab or by clicking)
  • Boom! The big disappearing act is complete: it crashes without any warning.

Second repro:

  • Assume the above fsproj change is saved
  • Try to open the solution of project in VS 2022
  • Bring focus to any source file in that project
  • Boom! VS disappears again: it crashes without any warning.

See video capture (sorry for the delay, I hit Ctrl-S to save, as that is often another way of crashing):

img

Expected behavior

Not sure if --version is valid here, but valid or not, Visual Studio (version 2022) should not disappear.

Actual behavior

Visual Studio crashes without a crash report. Sometimes there's an auto-restart which will hang, most of the times this restart does not happen. Sometimes child processes are killed, sometimes they remain around (like MSBuild.exe).

Known workarounds

Don't use "additional compiler options" aka "other flags".

Related information

I only tested this on a Windows 10 machine, I could check a Windows 11 machine for good measure. Didn't test with VS Code, only VS 2022 Community Edition.

abelbraaksma avatar Jul 22 '22 10:07 abelbraaksma

Yeah this is not a good experience.

KevinRansom avatar Jul 26 '22 20:07 KevinRansom

Can reproduce, jumping on that.

psfinaki avatar Aug 15 '22 14:08 psfinaki

Okay so this is happening because of #10099. I am currently figuring out the original reasoning and thinking if we can remove just remove some mess here instead of adding more conditions to the code. Either way hope to have some kind of fix in upcoming days :)

psfinaki avatar Aug 15 '22 16:08 psfinaki

@psfinaki, sounds like fsc --version now gives an error because the option isn't there anymore? I mean, I didn't see that on the commandline. Though, a more generic way forward is probably that any option that raises an error shouldn't immediately crash the whole VS, but maybe just be dismissed when the user tries to save it, or ignored (instead show the error when he tries to build).

abelbraaksma avatar Aug 16 '22 02:08 abelbraaksma

@psfinaki, sounds like fsc --version now gives an error because the option isn't there anymore? I mean, I didn't see that on the commandline. Though, a more generic way forward is probably that any option that raises an error shouldn't immediately crash the whole VS, but maybe just be dismissed when the user tries to save it, or ignored (instead show the error when he tries to build).

It should be there:

> dotnet .\artifacts\bin\fsc\Release\net6.0\fsc.dll --version
Microsoft (R) F# Compiler version 12.0.4.0 for F# 6.0

It just likely does something weird like explicit exit, which crashes VS and/or msbuild process.

vzarytovskii avatar Aug 16 '22 10:08 vzarytovskii

Yep, it should be there, it just shouldn't crash VS, similar to how --help doesn't crash it. The fix is coming

psfinaki avatar Aug 16 '22 13:08 psfinaki

@abelbraaksma see the attached PR - I even added a video clip to match your video clip! :)

psfinaki avatar Aug 16 '22 15:08 psfinaki

Just (finally) tested it locally with latest from main. Works. Thanks so much!

abelbraaksma avatar Aug 31 '22 23:08 abelbraaksma