-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
JIT: Runtime_82535 crashes on osx x64 #89585
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsFailure was on osx x64, but the original issue suggests that it could fail on multiple platforms and architectures. #82663 added test JIT/Regression/JitBlue/Runtime_82535, which failed under mono and coreclr. mono was fixed in that PR. coreclr stopped failing, but it appears to be because the test stopped running. #89521 fixes the issue that stopped it from running and exposes the failure again.
|
Test PR re-enabling the test: #90290 |
The test PR verified it still fails. |
This test hits a null reference exception inside a write barrier helper (as part of copying a struct). The VM then hits an exception during the processing of this:
In this case, we're calling LazyGetFunctionEntry: runtime/src/coreclr/vm/jitinterface.cpp Lines 14502 to 14510 in 3be8fa1
and m_pJM is null.
|
@mangod9 This looks like an exception handling bug in the VM. |
Based on the stack trace above, I think the issue is caused by the fact that the labels inside of JIT_ByRefWriteBarrier are not wrapped in LOCAL_LABEL macro. The libunwind then doesn't find correct unwind info for the whole function, it thinks that the closest label before the current ip is the actual function start. I was hiting similar issues during other work on macOS x64. |
Local labels in the JIT_ByRefWriteBarrier were not wrapped in the LOCAL_LABEL macro. That causes incorrect unwinding in case an access violation occurs inside of this function. The closest label before the failure point is considered to be the actual function, but it obviously doesn't have the right unwind info. Close dotnet#89585
Local labels in the JIT_ByRefWriteBarrier were not wrapped in the LOCAL_LABEL macro. That causes incorrect unwinding in case an access violation occurs inside of this function. The closest label before the failure point is considered to be the actual function, but it obviously doesn't have the right unwind info. Close #89585
Reopening until the port to 8 is done |
Local labels in the JIT_ByRefWriteBarrier were not wrapped in the LOCAL_LABEL macro. That causes incorrect unwinding in case an access violation occurs inside of this function. The closest label before the failure point is considered to be the actual function, but it obviously doesn't have the right unwind info. Close #89585
Local labels in the JIT_ByRefWriteBarrier were not wrapped in the LOCAL_LABEL macro. That causes incorrect unwinding in case an access violation occurs inside of this function. The closest label before the failure point is considered to be the actual function, but it obviously doesn't have the right unwind info. Close #89585 Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
Failure was on osx x64, but the original issue suggests that it could fail on multiple platforms and architectures.
#82663 added test JIT/Regression/JitBlue/Runtime_82535, which failed under mono and coreclr. mono was fixed in that PR. coreclr stopped failing, but it appears to be because the test stopped running. #89521 fixes the issue that stopped it from running and exposes the failure again.
The text was updated successfully, but these errors were encountered: