Closed Bug 1272278 Opened 8 years ago Closed 8 years ago

dump_syms failing to produce function names for Rust functions

Categories

(Toolkit :: Crash Reporting, defect)

Unspecified
Windows
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla49
Tracking Status
firefox49 --- fixed

People

(Reporter: ted, Assigned: ted)

References

(Blocks 1 open bug)

Details

In bug 1268617, rillian made us start passing `-g` to rustc to get debug symbols. Unfortunately, he hit a problem in CI because dump_syms (which reads native debug symbols and outputs Breakpad text-format symbols) was missing function names for functions from Rust code on Windows. bug 1270091 fixed the thing that was breaking due to empty function names, but this is still a problem that we need to fix. bug 1268617 comment 6 has some brief analysis. Breakpad uses Microsoft's DIA SDK to read information out of PDB files: https://msdn.microsoft.com/en-us/library/x93ctkx8.aspx Odds are the problem lies within `PDBSourceLineWriter::GetSymbolFunctionName`: https://dxr.mozilla.org/mozilla-central/rev/3461f3cae78495f100a0f7d3d2e0b89292d3ec02/toolkit/crashreporter/google-breakpad/src/common/windows/pdb_source_line_writer.cc#957 https://dxr.mozilla.org/mozilla-central/rev/3461f3cae78495f100a0f7d3d2e0b89292d3ec02/toolkit/crashreporter/google-breakpad/src/common/windows/pdb_source_line_writer.cc#957
I started stepping through `GetSymbolFunctionName` in a debugger and found that the `get_undecoratedNameEx` call fails (unsurprising), but then the `get_name` call succeeds, handing back an empty string. :-/
Digging in a little more, it turns out the functions we're getting empty names from are from libstd...
Upstream patch for dump_syms: https://codereview.chromium.org/1985643004 I also wrote a patch for the Breakpad processor: https://codereview.chromium.org/1981933002 . If that lands we can get that into the next Socorro production push, so that we'd be able to handle the existing symbol files with missing function names. We could also reprocess the current set of broken reports and they should get useful signatures. I'd still like to figure out exactly why this is happening, but this should make it stop breaking our crash reporting.
dump_syms patch landed upstream: https://chromium.googlesource.com/breakpad/breakpad/+/67d5567177301d0c24303f26ad119ab7bd7fab40 I'll cherry-pick that into inbound.
https://hg.mozilla.org/integration/mozilla-inbound/rev/8be3eb37856c2609098b07d3f88ba482892c21b6 bug 1272278 - Don't let PDBSourceLineWriter::GetSymbolFunctionName return empty function names. r=mento
Blocks: 1273197
I punted "figure out a root cause" to bug 1273197.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
You need to log in before you can comment on or make changes to this bug.