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

Load correct stack memory if thread record is wrong #1

Merged

Conversation

jan-auer
Copy link
Member

@jan-auer jan-auer commented May 21, 2019

Some minidumps contain invalid thread memory descriptors pointing to memory regions other than the ones referred to by the RSP. This is the case in UE4, for example. This causes the stackwalker to terminate early as it cannot load the actual stack memory.

Other Minidump processors such as WinDbg or the Visual Studio debugger can still process such minidumps correctly. They do not load the stack memory region based on the information obtained from the TEB and instead just follow the stack walker.

This patch adds the same behavior to the minidump processor. If the thread memory region does not cover the stack pointer, the region is replaced with the one covering it, if any.

@jan-auer jan-auer requested a review from mitsuhiko May 21, 2019 12:58
src/processor/stackwalker_arm.cc Outdated Show resolved Hide resolved
@jan-auer jan-auer force-pushed the fix/stupid-unreal-minidumps-have-stupid-thread-memory branch from d35425f to cf6e825 Compare May 21, 2019 13:40
@jan-auer
Copy link
Member Author

Updated.

@jan-auer jan-auer requested a review from mitsuhiko May 21, 2019 13:41
@jan-auer jan-auer merged commit 8b51351 into master May 21, 2019
@jan-auer jan-auer deleted the fix/stupid-unreal-minidumps-have-stupid-thread-memory branch May 21, 2019 14:17
jan-auer added a commit that referenced this pull request May 21, 2019
Some minidumps contain invalid thread memory descriptors pointing to memory
regions other than the ones referred to by the RSP. This is the case in UE4, for
example. This causes the stackwalker to terminate early as it cannot load the
actual stack memory. 

Other Minidump processors such as WinDbg or the Visual Studio debugger can still
process such minidumps correctly. They do not load the stack memory region based
on the information obtained from the TEB and instead just follow the stack
walker.

This patch adds the same behavior to the minidump processor. If the thread
memory region does not cover the stack pointer, the region is replaced with the
one covering it, if any.
jan-auer added a commit to getsentry/symbolic that referenced this pull request May 21, 2019
Updates the breakpad processor. Apart from a newer upstream revision this includes the fix from getsentry/breakpad#1 which should allow to process UE4 minidumps correctly.
flub pushed a commit that referenced this pull request Oct 6, 2020
Some minidumps contain invalid thread memory descriptors pointing to memory
regions other than the ones referred to by the RSP. This is the case in UE4, for
example. This causes the stackwalker to terminate early as it cannot load the
actual stack memory. 

Other Minidump processors such as WinDbg or the Visual Studio debugger can still
process such minidumps correctly. They do not load the stack memory region based
on the information obtained from the TEB and instead just follow the stack
walker.

This patch adds the same behavior to the minidump processor. If the thread
memory region does not cover the stack pointer, the region is replaced with the
one covering it, if any.
jan-auer added a commit that referenced this pull request Oct 19, 2020
Some minidumps contain invalid thread memory descriptors pointing to memory
regions other than the ones referred to by the RSP. This is the case in UE4, for
example. This causes the stackwalker to terminate early as it cannot load the
actual stack memory. 

Other Minidump processors such as WinDbg or the Visual Studio debugger can still
process such minidumps correctly. They do not load the stack memory region based
on the information obtained from the TEB and instead just follow the stack
walker.

This patch adds the same behavior to the minidump processor. If the thread
memory region does not cover the stack pointer, the region is replaced with the
one covering it, if any.
Jake-Shadle referenced this pull request in EmbarkStudios/breakpad Aug 28, 2021
Some minidumps contain invalid thread memory descriptors pointing to memory
regions other than the ones referred to by the RSP. This is the case in UE4, for
example. This causes the stackwalker to terminate early as it cannot load the
actual stack memory. 

Other Minidump processors such as WinDbg or the Visual Studio debugger can still
process such minidumps correctly. They do not load the stack memory region based
on the information obtained from the TEB and instead just follow the stack
walker.

This patch adds the same behavior to the minidump processor. If the thread
memory region does not cover the stack pointer, the region is replaced with the
one covering it, if any.
jubalh pushed a commit to jubalh/breakpad that referenced this pull request Nov 10, 2021
Some minidumps contain invalid thread memory descriptors pointing to memory
regions other than the ones referred to by the RSP. This is the case in UE4, for
example. This causes the stackwalker to terminate early as it cannot load the
actual stack memory. 

Other Minidump processors such as WinDbg or the Visual Studio debugger can still
process such minidumps correctly. They do not load the stack memory region based
on the information obtained from the TEB and instead just follow the stack
walker.

This patch adds the same behavior to the minidump processor. If the thread
memory region does not cover the stack pointer, the region is replaced with the
one covering it, if any.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants