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

Getting a parse error with no result in search results window #4454

Closed KySoto closed 5 years ago

KySoto commented 5 years ago

Version 2.2.6672.28001 OS: Microsoft Windows NT 10.0.16299.0, x64 Host Product: Microsoft Office 2013 x86 Host Version: 15.0.5045.1000 Host Executable: MSACCESS.EXE

This is persisting after fixing the error and getting a successful compile. RubberduckLog.txt

comintern commented 5 years ago

This is an interesting piece of the log file:

2018-10-23 09:09:34.7387;ERROR-2.2.6672.28001;Rubberduck.Parsing.VBA.ComponentParseTask;COM Exception thrown in thread 44 while parsing module BasicInclude, ParseTaskID 5b3e6281-7194-460b-be89-9bb1ca588dae.;System.Runtime.InteropServices.COMException (0x800AC372): Exception from HRESULT: 0x800AC372
   at Microsoft.Vbe.Interop._VBComponent.Export(String FileName)
   at Rubberduck.VBEditor.SafeComWrappers.VBA.VBComponent.ExportAsSourceFile(String folder, Boolean tempFile) in C:\projects\rubberduck\Rubberduck.VBEEditor\SafeComWrappers\VBA\VBComponent.cs:line 111
   at Rubberduck.Common.ModuleExporter.Export(IVBComponent component, Boolean tempFile) in C:\projects\rubberduck\Rubberduck.Core\Common\ModuleExporter.cs:line 19
   at Rubberduck.Parsing.VBA.AttributeParser.Parse(QualifiedModuleName module, CancellationToken cancellationToken) in C:\projects\rubberduck\Rubberduck.Parsing\VBA\AttributeParser.cs:line 38
   at Rubberduck.Parsing.VBA.ComponentParseTask.RunAttributesPass(CancellationToken cancellationToken) in C:\projects\rubberduck\Rubberduck.Parsing\VBA\ComponentParseTask.cs:line 151
   at Rubberduck.Parsing.VBA.ComponentParseTask.Start(CancellationToken cancellationToken) in C:\projects\rubberduck\Rubberduck.Parsing\VBA\ComponentParseTask.cs:line 56

Google search for HRESULT 0x800AC372 turns up 2 hits: #2315 and #3008.

KySoto commented 5 years ago

Version 2.2.6672.28001 OS: Microsoft Windows NT 10.0.16299.0, x64 Host Product: Microsoft Office 2016 x86 Host Version: 16.0.4711.1000 Host Executable: MSACCESS.EXE

I opened the attached log and checked the path it was complaining about, tried to navigate to it, and the folder Rubberduck folder in the temp folder didnt exist. I manually created the folder, and it parsed. RubberduckLog.txt

bclothier commented 5 years ago

FWIW - I think there's some mangling with the HRESULT.

Given this VBA code:

application.VBE.ActiveVBProject.VBComponents(1).Export "C:\foo\goo\bar\nothere.txt"

We get an error:

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Run-time error '50035':

Application-defined or object-defined error
---------------------------
OK   Help   
---------------------------

50035 = 0x0000C373 vbObjectError = 0x80040000 vbObjectError - 0x800AC372 = 0xFFF93C8E (-443250)

Also,

?hex((vbobjecterror + 1) or 50035)
8004C373

Need to verify if this is consistent with other unusual HRESULTs we get back from VBIDE. Recall that each library may choose to implement their error number ranges differently, in spite of the documentation saying that they should use 0x800A000 (object error) + N.

Not sure how we get from 50035 to 0x800AC372 but my guts is that they're the same errors; we are just not getting the same result between the two contexts, which is probably a contributing factor to why RD keeps hitting itself in googling those HRESULTs.

kwcolson commented 3 years ago

I got this exact error, which is how I landed on this page. When I changed the export from:

component.Export("c:\temp\test.cls"); to component.Export("c:\\temp\\test.cls"); The problem resolved.

Posting in case this might help someone.