Description
We run a 3-node EXO cluster on Mac Studio M3 Ultra connected via Thunderbolt 5 (RDMA). We experience recurring jaccl RDMA crashes that require a full reboot of all nodes to recover. This happens multiple times per day under normal inference workloads.
Errors observed
Three distinct errors, all from jaccl:
1. errno=2 — Connection lost mid-inference
RuntimeError: [jaccl] Recv failed with errno=2
2. errno=60 — Connection timeout
RuntimeError: [jaccl] Recv failed with errno=60
3. errno=22 — Queue pair negotiation failure (most frequent)
ValueError: [jaccl] Changing queue pair to RTR failed with errno 22
The errno=22 error appears simultaneously on all nodes and seems to indicate a hardware-level RDMA state corruption — the queue pair cannot transition to RTR (Ready To Receive) state.
Trigger conditions
- Happens after extended use (multiple model loads/unloads per day)
- Can happen mid-inference or when loading a new model
- Once triggered, all nodes crash in a loop — the cluster never recovers without reboot
- Purging
~/.exo/event_log/ alone is not sufficient — full reboot required
Recovery
# On all nodes:
rm -rf ~/.exo/event_log/
osascript -e 'tell app "System Events" to restart'
Is there a way to recover without rebooting?
We're looking for a way to reset the jaccl/RDMA state programmatically without requiring a full OS reboot. Any mlx.core.distributed or jaccl-level teardown/reinit API that could help?
Environment
- EXO.app v0.3.68 (commit
5327bddd)
- macOS 26.3.1 (build 25D2128)
- Hardware: 3× Mac Studio M3 Ultra (1× 512GB + 2× 256GB RAM)
- Interconnect: Thunderbolt 5 mesh (RDMA via jaccl)
- Load: ~10 model load/unload cycles per day, continuous inference
Description
We run a 3-node EXO cluster on Mac Studio M3 Ultra connected via Thunderbolt 5 (RDMA). We experience recurring jaccl RDMA crashes that require a full reboot of all nodes to recover. This happens multiple times per day under normal inference workloads.
Errors observed
Three distinct errors, all from
jaccl:1. errno=2 — Connection lost mid-inference
2. errno=60 — Connection timeout
3. errno=22 — Queue pair negotiation failure (most frequent)
The errno=22 error appears simultaneously on all nodes and seems to indicate a hardware-level RDMA state corruption — the queue pair cannot transition to RTR (Ready To Receive) state.
Trigger conditions
~/.exo/event_log/alone is not sufficient — full reboot requiredRecovery
Is there a way to recover without rebooting?
We're looking for a way to reset the jaccl/RDMA state programmatically without requiring a full OS reboot. Any
mlx.core.distributedor jaccl-level teardown/reinit API that could help?Environment
5327bddd)