You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On CoreCLR maccatalyst-arm64 (Release, composite R2R), the runtime test JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b425314 (b425314.Mutate.TestEntryPoint, in the Regression_d merged runner) never finishes. It hung in two separate local runs, for 39 and 82 minutes, well past the test's own 180-second limit.
This only became visible after #134767, which makes Apple CoreCLR runtime-test lanes run tests at all (#134766). The same test passes on Android CoreCLR arm64 (emulator) with the equivalent fix.
Analysis (from sample of the hung process)
Check thread (CastClass.CheckObjects): throws an expected InvalidCastException. Allocating the stack-trace array triggers a GC:
SuspendAllThreads never completes; it spins in minipal_microdelay.
Flip thread is running R2R code in a tight loop (b425314.CastClass.Flip / ScenarioMonitor.RecordFlipIteration in Regression_d.r2r.dylib) and never reaches a safe point.
Timer thread (TimerQueue.TimerThread) is blocked in Thread::RareDisablePreemptiveGC waiting for the GC. So the test's 180-second maximum-time timer can never fire, and the process hangs instead of failing.
FEATURE_HIJACK and the activation signal (INJECT_ACTIVATION_SIGNAL) are compiled in for Apple, so it isn't yet clear why the flip thread can't be interrupted there. Loops in R2R code without GC polls that can't be hijacked or activated on Apple mobile would explain it. That is a hypothesis; I haven't checked it.
Run the app with xharness apple test --target maccatalyst.
iOS and tvOS were not run locally. They use the same CoreCLR Apple runtime and are expected to behave the same.
Quarantine
#134767 disables b425314.Mutate.TestEntryPoint with ActiveIssue when both IsAppleMobile and IsCoreCLR are true. Re-enable once runtime suspension of that loop completes on Apple mobile.
Description
On CoreCLR maccatalyst-arm64 (Release, composite R2R), the runtime test
JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b425314(b425314.Mutate.TestEntryPoint, in theRegression_dmerged runner) never finishes. It hung in two separate local runs, for 39 and 82 minutes, well past the test's own 180-second limit.This only became visible after #134767, which makes Apple CoreCLR runtime-test lanes run tests at all (#134766). The same test passes on Android CoreCLR arm64 (emulator) with the equivalent fix.
Analysis (from
sampleof the hung process)CastClass.CheckObjects): throws an expectedInvalidCastException. Allocating the stack-trace array triggers a GC:SuspendAllThreadsnever completes; it spins inminipal_microdelay.b425314.CastClass.Flip/ScenarioMonitor.RecordFlipIterationinRegression_d.r2r.dylib) and never reaches a safe point.TimerQueue.TimerThread) is blocked inThread::RareDisablePreemptiveGCwaiting for the GC. So the test's 180-second maximum-time timer can never fire, and the process hangs instead of failing.FEATURE_HIJACKand the activation signal (INJECT_ACTIVATION_SIGNAL) are compiled in for Apple, so it isn't yet clear why the flip thread can't be interrupted there. Loops in R2R code without GC polls that can't be hijacked or activated on Apple mobile would explain it. That is a hypothesis; I haven't checked it.Repro
clr+clr.runtime+libs+packs -os maccatalyst -arch arm64 -c Release /p:UseMonoRuntime=false /p:UseNativeAOTRuntime=false /p:DevTeamProvisioning=adhocwith [Apple][Android][CoreCLR] Don't pass the program path as managed args[0]; quarantine newly running runtime tests #134767 applied.src/tests/build.sh -os maccatalyst arm64 Release -p:DevTeamProvisioning=adhoc -p:UseMonoRuntime=false -p:UseNativeAOTRuntime=false -test:JIT/Regression/Regression_d.csprojxharness apple test --target maccatalyst.iOS and tvOS were not run locally. They use the same CoreCLR Apple runtime and are expected to behave the same.
Quarantine
#134767 disables
b425314.Mutate.TestEntryPointwithActiveIssuewhen bothIsAppleMobileandIsCoreCLRare true. Re-enable once runtime suspension of that loop completes on Apple mobile.Note
This issue was generated with GitHub Copilot.