Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing to load PDB from Symbol Server #100

Open
forrestsmithfb opened this issue Aug 24, 2023 · 3 comments
Open

Failing to load PDB from Symbol Server #100

forrestsmithfb opened this issue Aug 24, 2023 · 3 comments

Comments

@forrestsmithfb
Copy link

I am unable to load the PDB for one of my programs from an internal symbol server. I can't figure out why. But IDiaDataSource::loadDataForExe is failing.

SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190190 - HTTP_STATUS_BAD_REQUEST
SYMSRV:  HTTPGET: /MYSERVERPATH/Foo.pdb/42A6E6342E735EB74C4C44205044422E1/Foo.pdb
SYMSRV:  HttpQueryInfo: 801900c8 - HTTP_STATUS_OK
SYMSRV:  RESULT: 0x00000000
SYMSRV:  BYINDEX: 0x2
         MYSERVERPATH
         Foo.pdb
         42A6E6342E735EB74C4C44205044422E1
SYMSRV:  HTTPGET: /MYSERVERPATH/Foo.pdb/42A6E6342E735EB74C4C44205044422E1/Foo.pdb
SYMSRV:  HttpQueryInfo: 801900c8 - HTTP_STATUS_OK
SYMSRV:  RESULT: 0x00000000

What's weird is that 42A6E6342E735EB74C4C44205044422E1 is the correct hash and Visual Studio is able to correctly load this pdb from my symbol server. I have a tool that runs SymInitialize on a running process and it also able to load the pdb.

I've never used IDiaDataSource before and don't know how it works. Stepping through the callbacks nothing stood out to me. It's ultimately returning E_PDB_NOT_FOUND even though

I also verified that I can download Foo.pdb simply by pasting the full URL in my browser. So it's the right URL. It's the right PDB. But loadDataForExe is failing? That's super super weird.

@forrestsmithfb
Copy link
Author

I just learned about symchk.

symchk.exe PATH/to/Foo.exe /s srv*MYSERVERPATH

Symchk is succeeding. And it fails if I do not specify the symbol server. I have no idea why loadDataForExe is not. Very strange.

@milostosic
Copy link
Collaborator

I'm not very happy with neither complexity (issues like this) nor the speed of DIA libraries. It's not a tiny amount of work to replace the debug symbol loader but it may happen at some point, can't commit to any timeline though.

@forrestsmithfb
Copy link
Author

Yeah. Microsoft symbol server libraries are all single threaded and crazy inefficient/slow. It's super frustrating and annoying.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants