the pdb is mismatch with its chrome.dll

479 views
Skip to first unread message

abu bakr al faqeer

unread,
Mar 1, 2019, 8:17:27 PM3/1/19
to Chromium-dev
I want to download chrome debugging symbols in particular chrome.dll.pdb
but due to my slow internet connection I can't download the pdb file with visual studio or windbg as it closes the connection and can't resume the downloading
so I built the symbol url manually to download with IDMan

I used this symbols server :


then run this command : dumpbin.exe /headers "C:\Program Files (x86)\Google\Chrome\Application\72.0.3626.119\chrome.dll"

which results in :

     Debug Directories
     Time Type        Size      RVA  Pointer
      -------- ------- -------- -------- --------
     5C6B8D50 cv            27 03590368  358ED68    Format: RSDS, {2040FB0C-C7B9-A2A2-4C4C-44205044422E}, 1, chrome.dll.pdb

I combined the parts of guid together and added the 1 in the last which is like :

     2040FB0CC7B9A2A24C4C44205044422E1
    

finally I added chrome.dll.pd_ at the last to downloaded the compressed file and the url is finally like this :


after downloading with IDMan and decompressing with winrar the pdb gets loaded well in dbh.exe and have symbols but I noticed that the addresses are wrong

so I checked with ChkMatch.exe :

     ChkMatch.exe -c "C:\Program Files (x86)\Google\Chrome\Application\72.0.3626.119\chrome.dll" chrome.dll\chrome.dll.pdb

and got : 

     ChkMatch - version 1.0
     Copyright (C) 2004 Oleg Starodumov


     Executable: C:\Program Files (x86)\Google\Chrome\Application\72.0.3626.119\chrome.dll
     Debug info file: chrome.dll\chrome.dll.pdb

     Executable:
     TimeDateStamp: 5c6b8d50
     Debug info: 2 ( CodeView )
     TimeStamp: 5c6b8d50  Characteristics: 0  MajorVer: 0  MinorVer: 0
     Size: 39  RVA: 03590368  FileOffset: 0358ed68
     CodeView format: RSDS
     Signature: {2040fb0c-c7b9-a2a2-4c4c-44205044422e}  Age: 1
     PdbFile: chrome.dll.pdb

     Debug information file:
     Format: PDB 7.00
     Signature: {2040fb0c-c7b9-a2a2-4c4c-44205044422e}  Age: 2

     Result: Unmatched (reason: Age mismatch)

the pdb age is 2 although I used 1 in the path
I also run visual studio for sometime and it produced the same folder name I got from combining guid parts with age (1)

so is there something wrong here ?
my chrome version : 72.0.3626.119

bruce...@chromium.org

unread,
Mar 4, 2019, 1:45:59 PM3/4/19
to Chromium-dev, portablep...@gmail.com
I applaud your intrepid stubbornness in how you managed to download the symbols. Another option to try is the RetrieveSymbols tool from UIforETW.

The mismatch reported by ChkMatch is easy to explain: ChkMatch is buggy. As was discussed in some comments on my blog their are two ages in a PDB. The source-indexing step (which Chrome uses) increments one of them, which ChkMatch checks. It doesn't increment the "real" one which the debuggers use to see if the PDBs match. As proof of this, if the PDB didn't match then VS would refuse to use it.

So, ignore that problem. Let's focus on the other problem - "the addresses are wrong". You'll have to provide more information. Debugging of optimized programs is tricky - the compiler reorders and optimizes-away code and variables, and the linker folds identical functions on top of each other. But I debug and profile our release binaries using the downloaded PDBs and the addresses are not, generally, "wrong".

Maybe you've fund a compiler or linker bug, but we'll need more details.
Reply all
Reply to author
Forward
0 new messages