microsoft / DockerTools

Tools For Docker, including Visual Studio Provisioning and Publishing
Other
173 stars 26 forks source link

Visual Studio locking up when loading docker compose project #380

Closed clintsinger closed 1 year ago

clintsinger commented 1 year ago

I have recently run into an issue where my project is causing visual studio to hang when loading the project. It does seem to be related to the docker compose project. If I comment out the services in the compose file the project will load. I have sent many crash dumps to Microsoft from this hang.

I have tried reformatting my machine and reinstalling all of the tooling. I have tried it in a Virtual Machine as well and get the same issue.

Nothing changed with the project so I'm thinking it was due to an update with the tooling. The problem is that I'm trying to recall which update it could be. I do believe that Docker was updated.

Also, it isn't every project that hangs visual studio. I created a new project and added docker compose to it. That project appears to be working fine.

Versions: Docker Desktop 4.19.0 (106363)

Microsoft Visual Studio Professional 2022 Version 17.5.5 VisualStudio.17.Release/17.5.5+33627.172 Microsoft .NET Framework Version 4.8.09032

dbreshears commented 1 year ago

Without seeing the call stack, I do suspect this hang is an issue we fixed in 17.6 preview and related to using depends_on in the Compose file. Here is one such issue:
https://developercommunity.visualstudio.com/t/VS-2022-hangs-when-loading-solution-cont/10348742

You can pickup the preview and try today but 17.6 should release tomorrow if all goes as planned.

Devin

clintsinger commented 1 year ago

The reported issue sounds like it could be the reason for the hang.

FYI, if I uninstall Docker Desktop from my computer then I'm able to open up the project in Visual Studio without issue. So definitely something to do with Docker.

Since 17.6 is out soon, I'll wait for it to be released and try again.

Also, when visual studio hangs, do you know where the dump files are stored that are sent to Microsoft?

clintsinger commented 1 year ago

I dumped the live version of the file found the following:

MethodDesc:   00007ffd108e91f8
Method Name:  Microsoft.Docker.DependsOnConditionsConverter.ReadYaml(YamlDotNet.Core.IParser, System.Type)
Class:        00007ffd108f5728
MethodTable:  00007ffd108e9210
mdToken:      000000000600005d
Module:       00007ffd10756de0
IsJitted:     yes
CodeAddr:     00007ffd10803840

That looks a lot like a "depends_on" issue...

dbreshears commented 1 year ago

Yep, that's the issue. Without Docker Desktop, I suspect we are not parsing the compose file which is leading to the hang. Apologize for the issue but should be back to working tomorrow and certainly let us know if not.

clintsinger commented 1 year ago

I have updated to 17.6 and the issue appears to be resolved.

clintsinger commented 1 year ago

As an aside, I have noticed that performance when running docker containers has taken a dramatic turn for the worst since updating to 17.6. It appears to only be when running my docker compose project. Visual studio has hung for a long periods of time when starting debugging (even to go as far as the white screen of death), line coloring doesn't keep up sometimes, the containers themselves take a long time to start compared to previously and other general performance issues.

When I run my non docker compose projects I don't notice any of these issues.

dbreshears commented 1 year ago

@clintsinger, can you open a new issue on our Developer community site for this https://developercommunity.visualstudio.com/VisualStudio/report. We would probably need a dump file for when this is hanging or a repro project and that site makes it easier to upload files, etc..