diff options
author | Mikhail Kurinnoi <m.kurinnoi@samsung.com> | 2021-09-20 08:20:04 -0700 |
---|---|---|
committer | Alexander Soldatov/Platform Lab /SRR/Staff Engineer/Samsung Electronics <soldatov.a@samsung.com> | 2021-09-21 20:15:46 +0300 |
commit | 714eb50bc0018c98e19ff6bd9f31017fd07eedbe (patch) | |
tree | 79b119c5849f7d8bdcad84598d55680aadb7e803 | |
parent | 9b1e33323792c24f18072c0450b90d3f97985e9e (diff) | |
download | coreclr-714eb50bc0018c98e19ff6bd9f31017fd07eedbe.tar.gz coreclr-714eb50bc0018c98e19ff6bd9f31017fd07eedbe.tar.bz2 coreclr-714eb50bc0018c98e19ff6bd9f31017fd07eedbe.zip |
[x86/Linux] Fix SIGSEGV on Debugger.Break() during debugging.tizen_6.5.m2_releasesubmit/tizen_6.5/20211028.163301submit/tizen_6.0_hotfix/20210922.230120submit/tizen/20210922.225908accepted/tizen/unified/20210923.052934accepted/tizen/6.5/unified/20211028.225403tizen_6.0_hotfix
SIGSEGV occur in src/vm/i386/cgenx86.cpp `HelperMethodFrame::UpdateRegDisplay()` at line `pRD->pCurrentContext->Eip = pRD->ControlPC = m_MachState.GetRetAddr();`, since `pRD->pCurrentContext` is NULL.
The point of issue - wrong code block compilation in DebuggerWalkStack() in case of Linux x86.
-rw-r--r-- | src/debug/ee/frameinfo.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/debug/ee/frameinfo.cpp b/src/debug/ee/frameinfo.cpp index 3efbddd140..a4741df8f1 100644 --- a/src/debug/ee/frameinfo.cpp +++ b/src/debug/ee/frameinfo.cpp @@ -2097,7 +2097,7 @@ StackWalkAction DebuggerWalkStack(Thread *thread, #endif memset((void *)&data, 0, sizeof(data)); -#if defined(_TARGET_X86_) +#if !defined(WIN64EXCEPTIONS) // @todo - this seems pointless. context->Eip will be 0; and when we copy it over to the DebuggerRD, // the context will be completely null. data.regDisplay.ControlPC = context->Eip; |