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

Splited functions should have splited lines #27

Open
calixteman opened this issue Oct 31, 2019 · 2 comments
Open

Splited functions should have splited lines #27

calixteman opened this issue Oct 31, 2019 · 2 comments

Comments

@calixteman
Copy link
Collaborator

calixteman commented Oct 31, 2019

When a function is splited several FUNCs are emitted but only the last one has lines info.
But if an address is in the first part, since the first FUNC hasn't line info, then we haven't lines for it.
An example:
https://crash-stats.mozilla.com/report/index/f43a2011-b0f0-4881-bfe6-a471c0191024
Thread 19, frame (0 + 5)
If we put lines (in breakpad file) after "FUNC 33458 41 0 CRpcThreadCache::RpcWorkerThreadEntry(void *)" in combase.sym we get the correct line (63).
Or maybe it's a bug in stackwalker (at least when the sym file is parsed).

@gabrielesvelto
Copy link
Collaborator

This is an interesting issue! When I implemented support for split address ranges for Linux symbols (DW_AT_ranges DWARF attribute) I handled this by splitting the lines so that one would have:

FUNC 1000 10 0 foobar
1000 f 10 1
FUNC 2000 10 0 fobar
2000 f 11 1
etc...

It might be that the Windows version of dump_syms is not handling this correctly. The correct behaviour is to have multiple FUNC entries each one with the lines that belong to the range specified in FUNC.

I don't think we should try and fix this in the stack walker because there might be infinite combinations of FUNC and line entries and handling them could be brittle. Better make sure that our debuginfo is correct.

@luser
Copy link

luser commented Mar 18, 2020

FYI I had added support to the Breakpad dump_syms for this ages ago but I'm not sure how well concepts from the DIA SDK map to PDB internals.

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

3 participants