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
A local osx-arm64 NativeAOT run of the existing whole-root smoke fails in RtcpTests.Schedule(). Managed Release passes (63 protocol and 321 network cases); the independent final Pion peer suite passes 450/450 cases. Linux NativeAOT is covered separately in CI.
Reproduced with SDK 10.0.301 and an isolated official SHA-512-verified SDK 10.0.402. The failure is independent of the Pion dependency update: RtcpTransmissionSchedule.cs and RtcpTests.cs are unchanged by PR #8. A standalone project linking only the scheduler and scheduling test also reproduces it.
Constructor instrumentation reports bandwidthBytesPerSecond == 0 at this call, after earlier constructors receive 100 and 1000 correctly. The valid source argument appears corrupted during native compilation/execution; the constructor correctly rejects the received zero. The same minimal project under NativeAOT size optimization also fails. This points to an AOT/toolchain issue but needs a smaller independent upstream reproducer and confirmation; do not weaken the scheduler guard or remove its tests.
Reproduction: publish src/tests/WebRTC.AotSmoke with -c Release -r osx-arm64 -p:PublishAot=true, then execute WebRTC.AotSmoke. The crash follows the simultaneous SCTP INIT checks and precedes the RTCP success message. Native publish completes with no IL trimming warnings; Apple static-library module-debug-cache warnings also appear and are a separate debug-symbol limitation.
Next: minimize the scheduler/test sequence for dotnet/runtime, compare on another physical arm64 Mac, and add a macOS native execution lane once the cause is understood. Preserve Linux x64/arm64 native execution and all protocol guards meanwhile.
Fixed the reproduced repository failure in 57ebc00.
Native disassembly and LLDB tracing narrowed the failure to a saved floating-point register: Schedule loaded 100 into d8, the expected regular-send rejection overwrote d8 with zero, and the later constructor reused that register. Both original SDK 10.0.301 and isolated official 10.0.402 reproduced the issue. Moving the calculation to a throwing helper or replacing the monitor with System.Threading.Lock did not fix it.
Sent now returns expected admission failures normally from a non-inlined calculation frame, leaves the lock, and then throws the same InvalidOperationException with the same message. Successful sends retain the same lock and state updates; failed sends retain all validation and do not mutate the schedule. No test assertion, guard, trimming warning, or optimization was disabled. This is a targeted workaround for the native exception/unwind behavior; it does not claim to repair the .NET runtime generally.
The unchanged Schedule test now passes in the macOS arm64 NativeAOT executable. Added a permanent macOS arm64 whole-root NativeAOT publish-and-execute CI lane. All nine validation jobs passed, including managed protocols/network tests on macOS/Windows/Linux, Linux x64/arm64 AOT, both Pion peer lanes, Chromium, and the new macOS lane. Exact-source package publication succeeded: https://github.com/tryAGI/WebRTC/actions/runs/39040687587 . Local Release build, 63 protocol tests, and 321 network cases also passed.
Activity
HavenDV commentedon Oct 17, 2026
Fixed the reproduced repository failure in 57ebc00.
Native disassembly and LLDB tracing narrowed the failure to a saved floating-point register: Schedule loaded 100 into d8, the expected regular-send rejection overwrote d8 with zero, and the later constructor reused that register. Both original SDK 10.0.301 and isolated official 10.0.402 reproduced the issue. Moving the calculation to a throwing helper or replacing the monitor with System.Threading.Lock did not fix it.
Sent now returns expected admission failures normally from a non-inlined calculation frame, leaves the lock, and then throws the same InvalidOperationException with the same message. Successful sends retain the same lock and state updates; failed sends retain all validation and do not mutate the schedule. No test assertion, guard, trimming warning, or optimization was disabled. This is a targeted workaround for the native exception/unwind behavior; it does not claim to repair the .NET runtime generally.
The unchanged Schedule test now passes in the macOS arm64 NativeAOT executable. Added a permanent macOS arm64 whole-root NativeAOT publish-and-execute CI lane. All nine validation jobs passed, including managed protocols/network tests on macOS/Windows/Linux, Linux x64/arm64 AOT, both Pion peer lanes, Chromium, and the new macOS lane. Exact-source package publication succeeded: https://github.com/tryAGI/WebRTC/actions/runs/39040687587 . Local Release build, 63 protocol tests, and 321 network cases also passed.