Wireshark-dev: Re: [Wireshark-dev] Wireshark.pdb for Wireshark 2.6 are not loaded
From: Peter Wu <peter@xxxxxxxxxxxxx>
Date: Thu, 17 May 2018 14:42:25 +0200
On Thu, May 17, 2018 at 12:28:00PM +0100, Graham Bloice wrote:
> On Thu, 17 May 2018 at 11:52, Peter Wu <peter@xxxxxxxxxxxxx> wrote:
> 
> > Hi,
> >
> > While trying to debug a crash dump from Wireshark 2.6.0, I ran into the
> > following error:
> >
> >     Wireshark.pdb could not be found in the selected paths
> >
> > Steps to reproduce:
> >
> > 1. Install
> > https://www.wireshark.org/download/win64/Wireshark-win64-2.6.0.exe
> > 2. Extract
> > https://www.wireshark.org/download/win64/all-versions/Wireshark-pdb-win64-2.6.0.zip
> > 3. Trigger crash in Wireshark, e.g. Tools -> Lua -> Evaluate. Execute:
> >    local ba = ByteArray.new(""); getmetatable(ba).__gc(ba)
> > 4. Debug Program, attach Visual Studio 2015 and select the previously
> >    extracted Wireshark.pdb file.
> >
> > Expected result:
> > Wireshark.pdb is loaded successfully.
> >
> > Actual result:
> > Loading the PDB fails with "Wireshark.pdb could not be found in the
> > selected paths". Note that symbols for "libwireshark.dll" can be loaded,
> > it is just "Wireshark.exe" that fails.
> >
> > What can I do to load the symbols anyway? Is there something in the
> > packaging steps that has to be changed?
> > --
> > Kind regards,
> > Peter Wu
> > https://lekensteyn.nl
> >
> >
> I'm really pushed for time so can't give you much help, but in case of
> symbol issues I find WinDbg much more helpful as it has a command "!sym
> noisy" that makes the symbol loader emit lots of info.

It says:
DBGHELP: E:\wireshark-pdb-win64-2.6.0\Wireshark.pdb - mismatched pdb
...
DBGHELP: C:\buildbot\wireshark\wireshark-2.6-64\windows-2016-x64\build\cmbuild\run\RelWithDebInfo\Wireshark.pdb - file not found
DBGHELP: Couldn't load mismatched pdb for Wireshark.exe
*** ERROR: Module load completed but symbols could not be loaded for Wireshark.exe
DBGHELP: Wireshark - no symbols loaded

0:000> !itoldyouso Wireshark.exe E:\Wireshark-pdb-win64-2.6.0\Wireshark.pdb

Wireshark.exe
    Timestamp: 5ADF6E30
  SizeOfImage: 7E6000
          pdb: C:\buildbot\wireshark\wireshark-2.6-64\windows-2016-x64\build\cmbuild\run\RelWithDebInfo\Wireshark.pdb
      pdb sig: 8BBD6A19-5505-401B-98FA-CB62E571E5D3
          age: 2

Wireshark.pdb
      pdb sig: 8BBD6A19-5505-401B-98FA-CB62E571E5D3
          age: 1

age MISMATCH: Wireshark.pdb and Wireshark.exe


Using "ChkMatch.exe" to correct an "Age" property did not make a
difference either. in WinDbg, I finally got symbols after .setopt+0x40,
this worked with the plain pdb files.


The remaining question is, how did this mismatch ever happen? The issue
is also still present with win64-2.6.1rc0-76-g1486fd91. This seems
problematic:

- Wireshark.pdb was built in "compiled with MSBuild"
- The PDB is zipped with "built .PDB zip".
- In "prepared NSIS package", "qtui" is somehow rebuilt which also
  causes Wireshark.pdb to be updated. see:
  https://buildbot.wireshark.org/wireshark-2.6/builders/Windows%20Server%202016%20x64/builds/138/steps/compile_3/logs/stdio

Not sure if this is the intended behavior. Gerald, should "built .PDB
zip" be moved after these targets, before "verified signatures"?
-- 
Kind regards,
Peter Wu
https://lekensteyn.nl