rubberduck-vba / Rubberduck

Every programmer needs a rubberduck. COM add-in for the VBA & VB6 IDE (VBE).
https://rubberduckvba.com
GNU General Public License v3.0
1.91k stars 299 forks source link

Excel [RD] crashes on emptying a class file #5904

Open rsd opened 2 years ago

rsd commented 2 years ago

Rubberduck version information

Rubberduck version 2.5.2.5906 loading:
Operating System: Microsoft Windows NT 10.0.22000.0 x64
Host Product: Microsoft Office x64
Host Version: 16.0.14701.20166
Host Executable: EXCEL.EXE;

Description Excel [RD] crashes on emptying a class file.

To Reproduce Steps to reproduce the behavior:

  1. Go to a class file that you want to empty (e.g. to replace from pasted code).
  2. Press CONTROL + A to select everything.
  3. Press DELETE to remove the content.
  4. Excel/RD with crash.

Expected behavior The Class to be emptied and Excel not crash.

Logfile

2021-11-27 12:11:45.1229;TRACE-2.5.2.5906;Rubberduck.Common.LogLevelHelper;
    Rubberduck version 2.5.2.5906 loading:
    Operating System: Microsoft Windows NT 10.0.22000.0 x64
    Host Product: Microsoft Office x64
    Host Version: 16.0.14701.20166
    Host Executable: EXCEL.EXE;
2021-11-27 12:11:45.1519;TRACE-2.5.2.5906;Rubberduck.App;Checking for legacy Smart Indenter settings.;
2021-11-27 12:11:45.1939;TRACE-2.5.2.5906;Rubberduck.UI.CustomComWrappers.Wrapper_IOleClientSite;IOleInPlaceSite::OnPosRectChange() called;
2021-11-27 12:11:45.2149;TRACE-2.5.2.5906;Rubberduck.UI.CustomComWrappers.Wrapper_IOleClientSite;IOleInPlaceSite::OnPosRectChange() called;
2021-11-27 12:11:45.2149;TRACE-2.5.2.5906;Rubberduck.UI.CustomComWrappers.Wrapper_IOleClientSite;IOleInPlaceSite::OnPosRectChange() called;
2021-11-27 12:11:45.2329;TRACE-2.5.2.5906;Rubberduck.UI.CustomComWrappers.Wrapper_IOleClientSite;IOleInPlaceSite::OnPosRectChange() called;
2021-11-27 12:11:45.2489;TRACE-2.5.2.5906;Rubberduck.VBEditor.WindowsApi.SubclassManager;Subclassed hWnd 0x000713B6 as CodePane.;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.IndentCurrentModuleCommand was registered with id 49382;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.Refactorings.CodePaneRefactorRenameCommand was registered with id 49429;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.Refactorings.RefactorEncapsulateFieldCommand was registered with id 49345;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.Refactorings.RefactorExtractMethodCommand was registered with id 49524;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.Refactorings.RefactorMoveCloserToUsageCommand was registered with id 49596;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.CodeExplorerCommand was registered with id 49564;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.ExportAllCommand was registered with id 49398;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.FindSymbolCommand was registered with id 49648;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.IndentCurrentProcedureCommand was registered with id 49562;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.InspectionResultsCommand was registered with id 49314;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.ReparseCommand was registered with id 49392;
2021-11-27 12:11:45.5099;TRACE-2.5.2.5906;Rubberduck.Common.Hotkeys.Hotkey;Hotkey for the associated command Rubberduck.UI.Command.ComCommands.TestExplorerCommand was registered with id 49334;
2021-11-27 12:11:45.5419;INFO-2.5.2.5906;Rubberduck.UI.Command.VersionCheckCommand;Executing version check...;
2021-11-27 12:11:46.0569;INFO-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82
2021-11-27 12:12:11.1209;TRACE-2.5.2.5906;Rubberduck.VBEditor.WindowsApi.SubclassManager;CodePane subclass for hWnd 0x000713B6 associated itself with its VBE object.;
2021-11-27 12:12:11.1689;TRACE-2.5.2.5906;Rubberduck.VBEditor.WindowsApi.SubclassManager;Subclassed hWnd 0x000713E6 as CodePane.;
2021-11-27 12:12:11.2359;TRACE-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;CancellationTokenSource was already disposed for OnSelectionChange.;
2021-11-27 12:12:11.2359;INFO-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82
2021-11-27 12:12:11.2359;INFO-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82
2021-11-27 12:12:11.6759;TRACE-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;CancellationTokenSource was already disposed for OnSelectionChange.;
2021-11-27 12:12:11.6759;INFO-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82
2021-11-27 12:12:11.6779;INFO-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82;System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Rubberduck.UI.Command.MenuItems.CommandBars.RubberduckCommandBar.<OnSelectionChange>d__9.MoveNext() in C:\projects\rubberduck\Rubberduck.Core\UI\Command\MenuItems\CommandBars\RubberduckCommandBar.cs:line 82
2021-11-27 12:12:12.1299;TRACE-2.5.2.5906;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;CancellationTokenSource was already disposed for OnSelectionChange.;
rsd commented 2 years ago

I noticed that, if I delete some part of the class first, like a few methods, it won't crash after that. But If I delete just a small part (e.g. 1 method at the end) it will crash.

I would [wild] guess that RD is keeping reference to the symbols in real time and deleting all at once was too much information to keep up.

A9G-Data-Droid commented 1 year ago

I'm getting a similar CancellationToken has been disposed error but it happens right when I open the VBE for the first time. I'm not opening a new issue because I think the root cause is the same and I think that empty class file is not the cause. I don't have any empty classes in the project I opened.

RD does continue working but it pops an unhandled exception window, which is super annoying.

2023-09-07 07:32:53.9177;TRACE-2.5.9.6291;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;CancellationTokenSource was already disposed for OnSelectionChange.;
2023-09-07 07:32:54.0087;ERROR-2.5.9.6291;Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase;ShowParserErrorsCommandMenuItem.EvaluateCanExecute(RubberduckParserState) threw an exception.;System.ObjectDisposedException: The CancellationTokenSource associated with this CancellationToken has been disposed.
   at System.Threading.CancellationToken.ThrowObjectDisposedException()
   at System.Threading.Tasks.Task.AssignCancellationToken(CancellationToken cancellationToken, Task antecedent, TaskContinuation continuation)
   at System.Threading.Tasks.Task.TaskConstructorCore(Object action, Object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler)
   at System.Threading.Tasks.Task..ctor(Delegate action, Object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler)
   at System.Threading.Tasks.Task`1..ctor(Func`1 valueSelector, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler)
   at System.Threading.Tasks.Task`1.StartNew(Task parent, Func`1 function, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler, StackCrawlMark& stackMark)
   at System.Threading.Tasks.Task.Run[TResult](Func`1 function, CancellationToken cancellationToken)
   at Rubberduck.UI.Command.MenuItems.CommandBars.AppCommandBarBase.<EvaluateCanExecuteAsync>d__11.MoveNext()

Version 2.5.9.6294 OS: Microsoft Windows NT 10.0.19045.0, x64 Host Product: Microsoft Office x64 Host Version: 16.0.16626.20208 Host Executable: EXCEL.EXE