-
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
arm64 jitstress failing with encoding_found
assert
#61944
Comments
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsWe regressed somewhere in this range. Likely suspect in bold. 8275c37 Update DNNE version (#61738) Typical failure
cc @dotnet/jit-contrib
|
Does indeed seem to be alignment related -- something about the interaction of alignment padding and STRESS_EMIT. Details soon. |
When we switch to using breakpoints instead of nops under stress, we end up with the wrong form.
Think the fix may be simple...
|
Problem is only on non-windows, this is the likely culprit: runtime/src/coreclr/jit/compiler.h Lines 11987 to 11991 in 48fe637
Fix is either to use runtime/src/coreclr/jit/emitarm64.cpp Lines 11457 to 11472 in 48fe637
or give up on this bit of stress until we can find another way to go about it. |
Fixing the instruction is not enough. We also seem to emit these in places where they can be executed. For example: (lldb) clru 0000ffff7ea342e0
Normal JIT generated code
<PrivateImplementationDetails>.ComputeStringHash(System.String)
ilAddr is 0000FFFFF412F4C0 pImport is 000000003AF77060
Begin 0000FFFF7EA342E0, size 70
>>> 0000ffff7ea342e0 fd7bbea9 stp x29, x30, [sp, #-0x20]!
0000ffff7ea342e4 fd030091 mov x29, sp
0000ffff7ea342e8 a11f40b9 ldr w1, [x29, #0x1c]
0000ffff7ea342ec 800200b4 cbz x0, 0xffff7ea3433c
0000ffff7ea342f0 a1b89352 mov w1, #0x9dc5
0000ffff7ea342f4 8123b072 movk w1, #0x811c, lsl #16
0000ffff7ea342f8 e2031f2a mov w2, wzr
0000ffff7ea342fc 030840b9 ldr w3, [x0, #0x8]
0000ffff7ea34300 7f000071 cmp w3, #0x0
0000ffff7ea34304 cd010054 b.le 0xffff7ea3433c
0000ffff7ea34308 a11f00b9 str w1, [x29, #0x1c]
0000ffff7ea3430c 00300091 add x0, x0, #0xc
0000ffff7ea34310 64328052 mov w4, #0x193
0000ffff7ea34314 0420a072 movk w4, #0x100, lsl #16
0000ffff7ea34318 1f2003d5 nop
0000ffff7ea3431c 00003ed4 brk #0xf000 // this gets hit at runtime
0000ffff7ea34320 05586278 ldrh w5, [x0, w2, uxtw #1]
0000ffff7ea34324 a11f40b9 ldr w1, [x29, #0x1c]
0000ffff7ea34328 2100054a eor w1, w1, w5
0000ffff7ea3432c 817c011b mul w1, w4, w1
0000ffff7ea34330 42040011 add w2, w2, #0x1
0000ffff7ea34334 5f00036b cmp w2, w3
0000ffff7ea34338 8b000054 b.lt 0xffff7ea34348
0000ffff7ea3433c e003012a mov w0, w1
0000ffff7ea34340 fd7bc2a8 ldp x29, x30, [sp], #0x20
0000ffff7ea34344 c0035fd6 ret
0000ffff7ea34348 a11f00b9 str w1, [x29, #0x1c]
0000ffff7ea3434c f5ffff17 b 0xffff7ea34320 So suggest for now we disable this bit of code. |
I agree. Let's disable the emitting of bkpt/int3 on xarch/arm64 under stress mode. I will enable it once I get back. |
…ess. Workaround for issue dotnet#61944.
I don't see this failing for xarch, so just disabled arm64 for now. |
This is a dup of #61824 |
From Armv8 manual:
So it seems that we should really check for Arm vs. Arm64 to decide whether to use @TamarChristinaArm - can you please confirm? |
We already set |
Indeed, Arm64 should use
From what I remember, this was because Note that the immediate also matters, from what I remember, GDB and Window need different immediates. Windows wants |
Thanks @TamarChristinaArm . I think below portion of your #892 (comment) was never done. I will do it in my upcoming PR.
|
https://dev.azure.com/dnceng/public/_build/results?buildId=1475284&view=ms.vss-test-web.build-test-results-tab&runId=42280206&resultId=106406&paneView=debug
We regressed somewhere in this range. Likely suspect in bold.
8275c37 Update DNNE version (#61738)
95e3144 Create runtime clone to manually kick off full test runs (#61641)
581d4d2 Hide 'align' instruction behind jmp (#60787)
7f874ee Remove race condition from DllImportGenerator build (#61695)
0d25969 [wasm][debugger] Tie sdb agent lifetime to the ExecutionContext and simplify the api (#61392)
66b31ca Upload dasm files as artifacts for "asmdiffs pipeline" (#61700)
30550d6 Remove
DisableImplicitNamespaceImports_DotNet
(#61656)9962c10 src/tests tree test xunit-based source generated runner (#60846)
f9e3e28 Update docker image (#61217)
16300e0 Skip HardwareIntrinsics/x86base/Pause tests on Mono (#61743)
899bf97 Merge System.Security.Cryptography.Algorithms to System.Security.Cryptography
13024af HostFactoryResolver - Increase default timeout to thirty seconds (#61621)
8cf0b19 A few follow up changes to LookupTypeKey change (#61718)
25237fa Factor out and improve the vectorization of RegexInterpreter.FindFirstChar (#61490)
a508fb5 [DllImportGenerator] Enable on projects without System.Memory and System.Runtime.CompilerServices.Unsafe (#61704)
de883e3 Remove XUnit reference metadata from tests I switched over last week (#61691)
c03f4ec refactoring (#60074)
5331f21 Ignore missing data result from superpmi-replay run (#61699)
83661ff Remove some unnecessary slicing from generated Regex code (#61701)
44d28bf Extend RegexCharClass.Canonicalize range inversion optimization (#61562)
d1b3816 Minor File.ReadAllBytes* improvements (#61519)
10e107d [wasm][debugger] Fix evaluation of a static class attribute; using current namespace for evaluation (#61252)
0666ebc [mono][aot] Fix the inclusion of generic instances when doing profiled AOT. (#61627)
da0e0f7 [wasm] renames and cleanup before modularization (#61596)
Typical failure
cc @dotnet/jit-contrib
The text was updated successfully, but these errors were encountered: