mike-ward/VSColorOutput

This extension hangs VS during Publish

Closed this issue · 3 comments

We got a report from a user seeing VS hanging after they start Publish and we see this stack trace indication that this extension re-enters UI thread:

2a 006fcd08 20438f08 Microsoft_VisualStudio_ProjectSystem_VS!Microsoft.VisualStudio.ProjectSystem.VS.HResult+<>c__DisplayClass37_0.b__0()+0xf [E:\A_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS\Utilities\HResult.cs @ 305]
2b 006fcd08 505a7ca3 Microsoft_VisualStudio_ProjectSystem_VS!Microsoft.VisualStudio.ProjectSystem.VS.HResult.Invoke(System.Func1<Microsoft.VisualStudio.ProjectSystem.VS.HResult>, System.IServiceProvider, Microsoft.VisualStudio.ProjectSystem.IProjectFaultHandlerService, Microsoft.VisualStudio.ProjectSystem.UnconfiguredProject)+0x28 [E:\A\_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS\Utilities\HResult.cs @ 324] 2c 006fcd30 505a77b6 Microsoft_VisualStudio_ProjectSystem_VS_Implementation!Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.PublishableProjectConfig.StopPublish(Int32)+0x8b [E:\A\_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS.Implementation\Package\ProjectConfig.cs @ 3992] *** ERROR: Module load completed but symbols could not be loaded for Microsoft.VisualStudio.Shell.Interop.8.0.dll 2d 006fcd58 64cff3a1 Microsoft_VisualStudio_Shell_Interop_8_0!DomainNeutralILStubClass.IL_STUB_COMtoCLR(Int32)+0x16 2e 006fcdc4 0332d060 clr!COMToCLRDispatchHelper+0x28 [f:\dd\ndp\clr\src\vm\i386\asmhelpers.asm @ 1846] 2f 006fcdf0 656d93e3 CLRStub[StubLinkStub]@5ea4426a0332d060 30 006fce34 656d5066 msenv!CSUIBuilder::DoCancelWithStop+0x5f [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 8247] 31 (Inline) -------- msenv!CSUIBuilder::DoCancel+0x9 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 8213] 32 006fce70 656b3075 msenv!CSlnUpdate::CancelSlnUpdate+0xf4 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 4697] 33 006fce84 658aa0bd msenv!HrExecBuildCmd+0x131 [q:\cmd\18\src\env\msenv\core\slncfg.cpp @ 9138] 34 006fcf88 65596305 msenv!HrShellExec+0xcf4 [q:\cmd\24\src\env\msenv\core\vsshlcmd.cpp @ 3667] 35 006fd004 65596660 msenv!CVSCommandTarget::ExecCmd+0x625 [q:\cmd\24\src\env\msenv\core\vsshlmnu.cpp @ 2650] 36 006fd054 65540ba6 msenv!CVSCommandTarget::Exec+0x84 [q:\cmd\24\src\env\msenv\core\vsshlmnu.cpp @ 2291] 37 006fd0bc 505a7548 msenv!CVShell::ExecuteCommand+0x135 [q:\cmd\39\src\env\msenv\core\ideshell.cpp @ 1252] *** ERROR: Module load completed but symbols could not be loaded for EnvDTE80.dll 38 006fd168 1b4b72ad EnvDTE80!DomainNeutralILStubClass.IL_STUB_CLRtoCOM(System.String, System.String)+0x168 *** WARNING: Unable to verify checksum for VSColorOutput.dll *** ERROR: Module load completed but symbols could not be loaded for VSColorOutput.dll 39 006fd180 1b4b7268 VSColorOutput!VSColorOutput.Output.BuildEvents.BuildEvents.OnBuildProjectDone(System.String, System.String, System.String, System.String, Boolean)+0x2d *** ERROR: Module load completed but symbols could not be loaded for EnvDTE.dll 3a 006fd198 64cff016 EnvDTE!EnvDTE._dispBuildEvents_SinkHelper.OnBuildProjConfigDone(System.String, System.String, System.String, System.String, Boolean)+0x20 3b 006fd1b4 64d022ba clr!CallDescrWorkerInternal+0x34 [f:\dd\ndp\clr\src\vm\i386\asmhelpers.asm @ 763] 3c 006fd208 64d62f21 clr!CallDescrWorkerWithHandler+0x6b [f:\dd\ndp\clr\src\vm\callhelpers.cpp @ 91] 3d 006fd248 64d63026 clr!CallDescrWorkerReflectionWrapper+0x55 [f:\dd\ndp\clr\src\vm\reflectioninvocation.cpp @ 1018] 3e 006fd568 5f007579 clr!RuntimeMethodHandle::InvokeMethod+0x838 [f:\dd\ndp\clr\src\vm\reflectioninvocation.cpp @ 1648] 3f 006fd58c 5f00708a mscorlib_ni!System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])+0xa9 40 006fd5b8 64cff016 mscorlib_ni!System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)+0x6a 41 006fd5d4 64d022ba clr!CallDescrWorkerInternal+0x34 [f:\dd\ndp\clr\src\vm\i386\asmhelpers.asm @ 763] 42 006fd628 64d0850b clr!CallDescrWorkerWithHandler+0x6b [f:\dd\ndp\clr\src\vm\callhelpers.cpp @ 91] 43 006fd6a4 64e59a7f clr!MethodDescCallSite::CallTargetWorker+0x16a [f:\dd\ndp\clr\src\vm\callhelpers.cpp @ 655] 44 (Inline) -------- clr!MethodDescCallSite::Call_RetOBJECTREF+0xffd6f076 [f:\dd\ndp\clr\src\vm\callhelpers.h @ 426] 45 006fde24 64e59631 clr!DispatchInfo::InvokeMemberWorker+0xfa6 [f:\dd\ndp\clr\src\vm\dispatchinfo.cpp @ 1837] 46 006fdef0 64e594be clr!DispatchInfo::InvokeMemberDebuggerWrapper+0xf2 [f:\dd\ndp\clr\src\vm\dispatchinfo.cpp @ 1981] 47 006fe0b4 64e58f12 clr!DispatchInfo::InvokeMember+0x311 [f:\dd\ndp\clr\src\vm\dispatchinfo.cpp @ 2239] 48 006fe17c 64e5901b clr!InternalDispatchImpl_Invoke+0x187 [f:\dd\ndp\clr\src\vm\stdinterfaces.cpp @ 1777] 49 006fe1a8 64e590f9 clr!InternalDispatchImpl_Invoke_CallBack+0x74 [f:\dd\ndp\clr\src\vm\stdinterfaces_wrapper.cpp @ 1417] 4a 006fe200 6553f31e clr!InternalDispatchImpl_Invoke_Wrapper+0xfb 4b 006fe290 6553f181 msenv!CConnectionPtBase::SendEvent+0x5c [q:\cmd\5\src\env\msenv\core\idecpt.cpp @ 173] 4c 006fe2b8 6553f295 msenv!<lambda_c30b3a7ca4a3319055bc6071ee99184e>::operator()+0x4a [q:\cmd\5\src\env\msenv\core\idecpt.cpp @ 233] 4d 006fe300 6553f249 msenv!CCookieTable<VBEventConnection,DefaultCookieTraits<unsigned long,1,4294967295,0,1>,DefaultValueTraits<VBEventConnection> >::for_each<<lambda_c30b3a7ca4a3319055bc6071ee99184e> >+0x3e [q:\cmd\5\src\env\inc\cookietable.h @ 601] 4e 006fe350 6553f1ee msenv!CConnectionPtBase::SendEventToAll+0x57 [q:\cmd\5\src\env\msenv\core\idecpt.cpp @ 238] 4f 006fe36c 65776fe5 msenv!CVBCBControl_ItemCnxtnPt::SendEventToAll+0x16 [q:\cmd\5\src\env\msenv\core\idecptcb.cpp @ 116] 50 006fe404 656d77c6 msenv!CBuildEvents::UpdateProjectCfg_Done+0x12f [q:\cmd\39\src\env\msenv\core\ideevnt.cpp @ 1704] 51 006fe490 656d961b msenv!CSlnUpdate::NotifyUpdateProjectCfg_Done_Internal+0x92 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 6946] 52 (Inline) -------- msenv!CSlnUpdate::NotifyUpdateProjectCfg_Done+0x28 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 6920] 53 006fe4d8 656d4213 msenv!CSUIBuilder::OnEndUpdateAction+0x98 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 8344] 54 006fe4f4 6561824a msenv!CSlnUpdate::HandleMsg+0x85 [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 3743] 55 006fe954 655179a8 msenv!FnwpMainFilter+0x7a8 [q:\cmd\18\src\env\msenv\core\ruby.cpp @ 1136] 56 006fe970 756848eb msenv!CAppManagementWindow::WndProc+0x1e [q:\cmd\50\src\env\msenv\core\appmanagementwindow.cpp @ 168] 57 006fe99c 7566613c user32!_InternalCallWinProc+0x2b [internal\onecoreuapwindows\private\lib\i386\Core\ntuser\client\callproc.asm @ 116] 58 (Inline) -------- user32!InternalCallWinProc+0x1a [internal\onecoreuapwindows\private\inc\core\ntuser\client\callproc.h @ 87] 59 006fea80 75665cda user32!UserCallWinProcCheckWow+0x3ac [windows\core\ntuser\client\clmsg.cxx @ 279] 5a 006feae4 7566e6bf user32!DispatchClientMessage+0xea [windows\core\ntuser\client\wow6432\objfre\i386\client.cxx @ 3442] 5b 006feb20 778c40ed user32!__fnDWORD+0x3f [internal\onecoreuapwindows\inc\ntuser\inc\ntcb.h @ 1250] 5c 006feb58 75992c0c ntdll!KiUserCallbackDispatcher+0x4d [minkernel\ntos\rtl\i386\userdisp.asm @ 524] 5d 006feb5c 75665ab9 win32u!NtUserMessageCall+0xc [windows\core\umode\wow6432\objfre\i386\usrstubs.asm @ 185] 5e 006febc0 756655b3 user32!SendMessageWorker+0x3c9 [windows\core\ntuser\client\clmsg.cxx @ 890] 5f 006febf4 656d883f user32!SendMessageW+0x123 [internal\onecoreuapwindows\private\inc\core\ntuser\client\cltxt.h @ 906] 60 006fec10 505a70a5 msenv!CSUIBuilder::PublishEnd+0x4b [q:\cmd\18\src\env\msenv\core\slnupd2.cpp @ 7617] 61 006fec78 505a700a Microsoft_VisualStudio_Shell_Interop_8_0!DomainNeutralILStubClass.IL_STUB_CLRtoCOM(Int32)+0x85 62 006fec80 392b9e2c Microsoft_VisualStudio_ProjectSystem_VS_Implementation!Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.PublishableProjectConfig+<>c__DisplayClass34_1.<NotifyPublishEnd>b__0()+0x22 [E:\A\_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS.Implementation\Package\ProjectConfig.cs @ 4071] 63 006fecac 505a6f87 Microsoft_VisualStudio_ProjectSystem_VS!Microsoft.VisualStudio.ProjectSystem.VS.HResult.Verify(System.Func1, System.String, ErrorBehavior)+0x24 [E:\A_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS\Utilities\HResult.cs @ 391]
64 006fecdc 1b4bb4c3 Microsoft_VisualStudio_ProjectSystem_VS_Implementation!Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.PublishableProjectConfig.NotifyPublishEnd(Boolean)+0x9f [E:\A_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS.Implementation\Package\ProjectConfig.cs @ 4068]
65 006fed0c 5f06093a Microsoft_VisualStudio_ProjectSystem_VS_Implementation!Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.PublishableProjectConfig+<>c__DisplayClass30_1+<b__2>d.MoveNext()+0x1ab [E:\A_work\1815\s\src\Microsoft.VisualStudio.ProjectSystem.VS.Implementation\Package\ProjectConfig.cs @ 3979]

if (StopOnBuildErrorEnabled && success == false)

This is the issue opened for VS for your reference: https://developercommunity.visualstudio.com/content/problem/583172/webdeploy-to-iis-hangs-visual-studio.html

Thanks for the bug report. Any recommendations on how I should fix this?

When you call IVs or DTE API you need to ensure you are on the Main thread. Your event handler might be called on background thread and you as the owner decide what your code is doing there. To ensure you are on Main thread please use ThreadHelper and it's JoinableTaskFactory API.

rob3c commented

FYI Trying to publish a .NET Core 3.1 project within VS to a local folder hangs unless I disable this extension. (I haven't tried other targets.) I'm using Visual Studio Community 2019 version 16.7.2 and VSColorOutput 2.71.