! Added at Microsoft Connect
After adding Tools to Toolwindow with AddItem2() method of IVsToolBox Interface and after VisualStudio calls ToolboxSelectionChanged() method of IVsToolboxActiveUserHook I get a AccessViolation Exception and Visual Studio crashes.
Exception occurs in VS2012 and VS2013, not in VS2010.
DebugDump is created and can be submitted if needed.
Greetings
Thomas Ziegler
Beckhoff Automation GmbH
Call Stack:
[Managed to Native Transition] > Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.VsTask.GetCallbackForMultipleParent.AnonymousMethod__2b(System.Threading.Tasks.Task<object>[]) Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.VsTask.GetCallbackForSingleParent.AnonymousMethod__2e(System.Threading.Tasks.Task<object>) mscorlib.dll!System.Threading.Tasks.ContinuationResultTaskFromResultTask<object,object>.InnerInvoke() mscorlib.dll!System.Threading.Tasks.Task.Execute() mscorlib.dll!System.Threading.Tasks.Task.ExecutionContextCallback(object) mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool) mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool) mscorlib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task = Id = 1, Status = Running, Method = "System.Object <GetCallbackForSingleParent>b__2e(System.Threading.Tasks.Task`1[System.Object])", Result = "{Not yet computed}") mscorlib.dll!System.Threading.Tasks.Task.ExecuteEntry(bool) mscorlib.dll!System.Threading.Tasks.TaskScheduler.TryExecuteTask(System.Threading.Tasks.Task) Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.TaskSchedulerService.VsUIThreadScheduler.QueueTask.AnonymousMethod__0() Microsoft.VisualStudio.Shell.11.0.dll!Microsoft.VisualStudio.Shell.InvokableAction.InvokeMethod() Microsoft.VisualStudio.Shell.11.0.dll!Microsoft.VisualStudio.Shell.InvokableBase.Invoke() [Native to Managed Transition]
Screenshot of Exception:
Unmanaged Debugging callstack:
> msenv.dll!CToolbox::MarkForDeletion() msenv.dll!<lambda_c10eba9da0086efc4e1bd6f5f4c56967>::operator()() msenv.dll!std::_Func_impl<std::_Callable_obj<<lambda_eb006cb16179a3cadcb7288aa7840a27>,0>,std::allocator<std::_Func_class<long,std::shared_ptr<Toolbox::CInitTasks::CInitState> const &,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil> >,long,std::shared_ptr<Toolbox::CInitTasks::CInitState> const &,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil>::_Do_call() msenv.dll!<lambda_69010e08bdede7757120e4bce56370f5>::operator()() msenv.dll!std::_Func_class<long,IVsTask *,unsigned long,IVsTask * *,tagVARIANT *,std::_Nil,std::_Nil,std::_Nil>::operator()() msenv.dll!`anonymous namespace'::NativeVsTaskBody::DoWork() [Managed to Native Transition] Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.VsTask.GetCallbackForMultipleParent.AnonymousMethod__2b(System.Threading.Tasks.Task<object>[]) Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.VsTask.GetCallbackForSingleParent.AnonymousMethod__2e(System.Threading.Tasks.Task<object>) mscorlib.dll!System.Threading.Tasks.ContinuationResultTaskFromResultTask<object,object>.InnerInvoke() Line 203 C# mscorlib.dll!System.Threading.Tasks.Task.Execute() Line 2459 C# mscorlib.dll!System.Threading.Tasks.Task.ExecutionContextCallback(object) Line 2815 C# mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool) Line 581 C# mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool) Line 530 C# mscorlib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task = Id = 1, Status = Running, Method = "System.Object <GetCallbackForSingleParent>b__2e(System.Threading.Tasks.Task`1[System.Object])", Result = "{Not yet computed}") Line 2785 C# mscorlib.dll!System.Threading.Tasks.Task.ExecuteEntry(bool) Line 2728 C# mscorlib.dll!System.Threading.Tasks.TaskScheduler.TryExecuteTask(System.Threading.Tasks.Task) Line 447 C# Microsoft.VisualStudio.Shell.UI.Internal.dll!Microsoft.VisualStudio.Services.TaskSchedulerService.VsUIThreadScheduler.QueueTask.AnonymousMethod__0() Microsoft.VisualStudio.Shell.11.0.dll!Microsoft.VisualStudio.Shell.InvokableAction.InvokeMethod() Microsoft.VisualStudio.Shell.11.0.dll!Microsoft.VisualStudio.Shell.InvokableBase.Invoke() [Native to Managed Transition] msenv.dll!CVsUIThreadInvoker::Invoke() rpcrt4.dll!_Invoke@12() rpcrt4.dll!_NdrStubCall2@16() ole32.dll!CStdStubBuffer_Invoke(IRpcStubBuffer * 0x09d22ba8, tagRPCOLEMESSAGE * 0x1d8755c0, IRpcChannelBuffer * 0x099dfb70) Line 1590 C++ ole32.dll!SyncStubInvoke(tagRPCOLEMESSAGE * 0x1d8755c0, const _GUID & {...}, CIDObject * 0x0c88ba68, void * 0x354c2e8c, IRpcChannelBuffer * 0x099dfb70, IRpcStubBuffer * 0x09d22ba8, unsigned long * 0x0039e248) Line 1187 C++ ole32.dll!StubInvoke(tagRPCOLEMESSAGE * 0x1d8755c0, CStdIdentity * 0x0c899230, IRpcStubBuffer * 0x09d22ba8, IRpcChannelBuffer * 0x099dfb70, tagIPIDEntry * 0x80004021, unsigned long * 0x0039e248) Line 1396 C++ ole32.dll!CCtxComChnl::ContextInvoke(tagRPCOLEMESSAGE * 0x00000000, IRpcStubBuffer * 0x09d22ba8, tagIPIDEntry * 0x004972e8, unsigned long * 0x0039e248) Line 1262 C++ ole32.dll!MTAInvoke(tagRPCOLEMESSAGE * 0x1d8755c0, unsigned long 1, IRpcStubBuffer * 0x09d22ba8, IInternalChannelBuffer * 0x099dfb70, tagIPIDEntry * 0x004972e8, unsigned long * 0x0039e248) Line 2105 C++ ole32.dll!STAInvoke(tagRPCOLEMESSAGE * 0x1d8755c0, unsigned long 1, IRpcStubBuffer * 0x09d22ba8, IInternalChannelBuffer * 0x099dfb70, void * 0x35c52734, tagIPIDEntry * 0x004972e8, unsigned long * 0x0039e248) Line 1924 C++ ole32.dll!AppInvoke(CMessageCall * 0xd0908070, CRpcChannelBuffer * 0x099dfb70, IRpcStubBuffer * 0x09d22ba8, void * 0x35c52734, void * 0x1d3dd418, tagIPIDEntry * 0x004972e8, LocalThis * 0x1d3dd410) Line 1086 C++ ole32.dll!ComInvokeWithLockAndIPID(CMessageCall * 0x1d875568, tagIPIDEntry * 0x004972e8) Line 1724 C++ ole32.dll!ComInvoke(CMessageCall * 0x1d875568) Line 1469 C++ ole32.dll!ThreadDispatch(void * 0x1d875568) Line 298 C++ ole32.dll!ThreadWndProc(HWND__ * 0x00220f88, unsigned int 1024, unsigned int 47806, long 495408492) Line 654 C++ user32.dll!_InternalCallWinProc@20() user32.dll!_UserCallWinProcCheckWow@32() user32.dll!_DispatchMessageWorker@8() user32.dll!_DispatchMessageW@4() msenv.dll!MainMessageLoop::ProcessMessage() msenv.dll!CMsoCMHandler::EnvironmentMsgLoop() msenv.dll!CMsoCMHandler::FPushMessageLoop() msenv.dll!SCM::FPushMessageLoop() msenv.dll!SCM_MsoCompMgr::FPushMessageLoop() msenv.dll!CMsoComponent::PushMsgLoop() msenv.dll!VStudioMainLogged() msenv.dll!_VStudioMain() devenv.exe!util_CallVsMain() devenv.exe!CDevEnvAppId::Run() devenv.exe!_WinMain@16() devenv.exe!__tmainCRTStartup() kernel32.dll!@BaseThreadInitThunk@12() ntdll.dll!___RtlUserThreadStart@8() ntdll.dll!__RtlUserThreadStart@8()