Open pchemguy opened 2 years ago
Also see Cristian Buse's answer here https://stackoverflow.com/questions/70098835/excel-hangs-at-exit-after-running-rdvba-tests
Thanks for reporting.
This seems to be the same issue as #5898.
This isust likely an issue with how the objects are released on shutdown. The VBE is very uncompromising there and makes assumptions that are only valid with deterministic memory management. This caused us problems before, which we thought to be fixed, but they reappeared now.
There is a PR #5899 in the pipeline which may or may not help with this issue.
Reproducing the issue is rather hard for us since it seems to be caused by a race condition on shutdown.
Rubberduck version information
Version 2.5.2.5871 OS: Microsoft Windows NT 6.2.9200.0, x64 Host Product: Microsoft Office XP x86 Host Version: 10.0.6501 Host Executable: EXCEL.EXE
and
Version 2.5.2.5871 OS: Microsoft Windows NT 10.0.17763.0, x64 Host Product: Microsoft Office 2016 x64 Host Version: 16.0.4266.1001 Host Executable: EXCEL.EXE
Description The following example contains three VBA modules: two classes and one regular. After I run RubberDuck VBA tests and then try to close Excel, Excel hangs while actively using the CPU. Running the tests once does not reproduce this issue every time, but when I do at least two runs, it seems that the issue is reproduced every time. The same behavior is observed in both environments.
In the MRE provided, the issue can be avoided if either the object assertion "Assert.IsNotNothing dbm" is replaced with a scalar assertion "Assert.IsTrue Not dbm Is Nothing" (as illustrated using the conditional compilation constant. The issue also occurs with empty "Class_Terminate" methods but is gone if these methods are completely removed.
To Reproduce Steps to reproduce the behavior:
When "#Const USE_ASSERT_OBJECT = True", the immediate output should be something like this:
When "#Const USE_ASSERT_OBJECT = False", the immediate output should be something like this:
With "#Const USE_ASSERT_OBJECT = False" set, the reported issue does not occur (Excel closes normally).
Expected behavior Excel should close and classes must terminate before ModuleCleanup.
Logfile Immediate output associated with the log below:
Additional context MCVE.xls
Individual modules from the xls above:
ModuleTests.bas
Class1.cls
Class2.cls