Missing registers in crashpad minidumps? |
||
Issue descriptionExample: http://crash/094fce8400000000. Open that minidump in WinDBG and see that stack parameter |priority| in base::PlatformThread::SetCurrentThreadPriority call is unavailable (we can see from the caller that it's base::ThreadPriority::DISPLAY but that's not the point).
,
Apr 7 2016
FWIW, my build is Release + dcheck_always_on + component.
,
Apr 7 2016
From the disassembly looks like the calling convention for |SetCurrentThreadPriority| is to put |priority| in ecx. Maybe it later gets borked by the DCHECK/dump-without-crashing code as the value of |priority| is never used after the switch and the compiler could decide to re-use its register from that point on...?
,
Apr 7 2016
I'll go ahead and assume we can't do anything about this specific instance as it's a compiler optimization taking precedence on debugability...
,
Apr 7 2016
Yes, I think your analysis is correct. I don't see anywhere where ecx gets stored to the stack, so there's nothing to capture by the time it gets to grabbing a dump. Adding a base::debug::Alias(&priority) should force a stack spill, which should make it available. |
||
►
Sign in to add a comment |
||
Comment 1 by gab@chromium.org
, Apr 7 2016