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.92k stars 301 forks source link

RubberDuck crashes 32-bit host processing a very large project #5322

Open RSquared64 opened 4 years ago

RSquared64 commented 4 years ago

Rubberduck version information The info below can be copy-paste-completed from the first lines of Rubberduck's log or the About box:

Rubberduck version [2.4.1.5229]
Operating System: [Windows 10 Enterprise 64bit 1909]
Host Product: [MS Access 2016 Office365 32bit ]
Host Version: [VBA 7.1]

Description During Parsing and opening the Code Explorer, RubberDuck crashes Access.

To Reproduce Steps to reproduce the behavior:

  1. Go to Parse or RubberDuck -> Navigate - > Code Explorer
  2. Click on the Refresh button on both items.

Expected behavior Not exactly sure. This is the first time I installed RubberDuck and was looking forward to working with it.

Screenshots If applicable, add screenshots to help explain your problem.

Logfile Rubberduck generates extensive logging in TRACE-Level. If no log was created at %APPDATA%\Rubberduck\Logs, check your settings. Include this log for bug reports about the behavior of Rubberduck. RubberduckLog.txt

Additional context This is a large library file that I have developed over the years It is mainly just code and a lot of it > 200k lines of code.

retailcoder commented 4 years ago

Hi there,

Sorry this has been your experience thus far with Rubberduck! The logs indicate an OutOfMemoryException occurring during the parse... this is most likely related to #3347, which can be observed in very large projects, especially in 32-bit hosts.

Upgrading to a 64-bit Office install should help, if it's something that's possible.

Rubberduck isn't a lightweight add-in; in order to properly understand VBA code it needs to not only parse all the user code, but also load all referenced COM libraries and what types and members they define. While this works great for smaller projects, in larger projects and hosts with limited available memory (32-bit), having all this data in memory readily queryable is currently a problem.

RSquared64 commented 4 years ago

Ok, I have several systems that use the 64bit versions of office, but I also use the 32bit to check on development work since some clients have one and not the other.

I will give it a try on a 64bit system and let you know what happens.

Thanks for such a quick response.

Robert