summaryrefslogtreecommitdiff
path: root/src/vm/comdelegate.h
diff options
context:
space:
mode:
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>2020-06-04 17:48:52 +0300
committer이형주/Common Platform Lab(SR)/Staff Engineer/삼성전자 <leee.lee@samsung.com>2020-06-05 06:27:14 +0900
commit45278569f1e32a5e3ab52f1643ee5f0f3b1f00c9 (patch)
treedeb454d9a2354968905b064b77b43a2e5df648b8 /src/vm/comdelegate.h
parentd01d6ed6dd82d536268b00bd8fdbafa3791c3f04 (diff)
downloadcoreclr-45278569f1e32a5e3ab52f1643ee5f0f3b1f00c9.tar.gz
coreclr-45278569f1e32a5e3ab52f1643ee5f0f3b1f00c9.tar.bz2
coreclr-45278569f1e32a5e3ab52f1643ee5f0f3b1f00c9.zip
In case of evaluation with implicit function call aborted by ```ICorDebugEval::Abort()```, CoreCLR crash with SIGSEGV at line https://github.com/dotnet/runtime/blob/e25517ea27311297c1e3946acb3b4382d5fa7fef/src/coreclr/src/vm/jitinterface.cpp#L14293 since ```m_pJM``` is ```NULL```. This happens because during ```EECodeInfo::Init()``` call, ```codeAddress``` parameter provide address inside native code region (this address belong to CallDescrWorkerInternal(), libcoreclr.so), but not address inside managed code, so, ```ExecutionManager::FindCodeRange()``` can't find appropriate ```RangeSection```. During investigation I found, that at line https://github.com/dotnet/runtime/blob/e25517ea27311297c1e3946acb3b4382d5fa7fef/src/coreclr/src/vm/stackwalk.cpp#L2584 current context was not changed properly (we have wrong ```Eip``` register value). I found, that ```FuncEvalFrame::UpdateRegDisplay()``` code https://github.com/dotnet/runtime/blob/e25517ea27311297c1e3946acb3b4382d5fa7fef/src/coreclr/src/debug/ee/debugger.inl#L238-L247 don't have x86/Linux support implemented. I propose changes, that were already made for other ```UpdateRegDisplay()``` implementations in order to provide proper context for x86/Linux.
Diffstat (limited to 'src/vm/comdelegate.h')
0 files changed, 0 insertions, 0 deletions