New issue
Advanced search Search tips

Issue 914383 link

Starred by 2 users

Issue metadata

Status: WontFix
Owner: ----
Closed: Dec 19
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

win_pdbaltpath config breaks Windows order files generation

Project Member Reported by tmonius...@opera.com, Dec 12

Issue description

OS: Win 7

What steps will reproduce the problem?
Steps are documented in https://chromium.googlesource.com/chromium/src/+/master/docs/win_order_files.md

What is the expected result?
Order files for browser and renderer processes should have sensible contents.

What happens instead?
Generated order files are almost empty (contain only 3 function names).

It happens when I try to generate order files for Opera. I don't know if the same issue happens while generating order files for Chrome.

It seems to be caused by win_pdbaltpath config (https://chromium-review.googlesource.com/c/chromium/src/+/1273475). Everything works fine after removing this config.
 
That's strange. I updated the order files without problems not too long ago (https://chromium-review.googlesource.com/c/1341908), and that was after win_pdbaltpath was added. And I'm not doing anything special, just following the instructions from win_order_files.md.

I guess the SymFromAddr calls here are failing for you: https://cs.chromium.org/chromium/src/tools/cygprofile_win/cygprofile.cc?rcl=defd74f29c29ff8563c0964ae7ff922372a8e31d&l=62

Maybe you could try debugging by adding an else-branch that prints the GetLastError.

Do you have anything in your config that could cause the PDB files to be output in a different dir than the executables, and where the executables are run?
Thanks for the hint! I'll try debugging.

I don't think my config includes something unusual. I'm using similar config for building Debug version and debugger is able to find all symbols correctly.
SymFromAddr doesn't fail. |samples| array contains many addresses but SymFromAddr returns only 3 names for these addresses: ChromeMain, IsSandboxedProcess and GetHandleVerifier. Returned |Displacement| value is different for each address however.

It seems SymFromAddr cannot find symbol names and the issue is related to symbol search path used by DbgHelp functions.

Generating order files works fine if I pass absolute path to out/instrument directory as |UserSearchPath| argument of SymInitialize call.

Currently we pass NULL as |UserSearchPath|. SymGetSearchPath returns "." for me in this case. So I've found a solution. I need to enter out/instrument directory in my terminal and run instrumented binaries from this directory: "./opera.exe --no-sandbox --renderer-startup-dialog". Everything works fine then.

Do you run Chrome binaries in this way as well? If so, step 2. from https://chromium.googlesource.com/chromium/src/+/master/docs/win_order_files.md should be updated. What do you think?
> Do you run Chrome binaries in this way as well?

No, I run it like in the doc, from in my case c:\src\chromium\src with out\instrument\chrome ...

Are you running from cmd.exe or something else?
I'm usually using Git Bash but I've tried also cmd.exe and x64 Native Tools Command Prompt for VS 2017. I'm experiencing the same issue in all cases.
Status: WontFix (was: Untriaged)
It doesn't seem to be an issue for Chrome so I'm closing this bug.

Sign in to add a comment