[Bug] [macOS 27] Kernel panic in IOUSBHostFamily during D435i firmware update / USB re-enumeration
Camera Model
D435i
LibRealSense SDK Version
2.58.1
Firmware Version
5.17.3.10
Operating System
MacOS
Kernel Version (Linux Only)
No response
MIPI Driver Version (NVIDIA Jetson Only)
No response
Platform
Other ARM (specify in description)
Connection Type
USB3
Language
C++
Application Segment
Robotics
Issue Description
I encountered a macOS kernel panic while updating the firmware of a RealSense D435i using rs-fw-update.
Environment:
- macOS 27.0 (26A428)
- Apple M4 Pro
- librealsense 2.58.1
- Homebrew libusb 1.0.30
- FORCE_RSUSB_BACKEND=ON
- USB 3.2 direct connection
I updated the D435i firmware from 5.12.7.150 to 5.17.3.10 using rs-fw-update.
The firmware update reached 100%, and the tool then waited for the camera to reconnect. During the USB disconnect / re-enumeration stage, macOS kernel-panicked and rebooted.
The panic report contains:
panic(...): Kernel data abort
Kernel Extensions in backtrace: com.apple.iokit.IOUSBHostFamily(1.2)
After reboot, the firmware update had completed successfully. The camera currently enumerates normally:
Firmware Version: 5.17.3.10 USB Type Descriptor: 3.2
librealsense was built with FORCE_RSUSB_BACKEND=ON and is dynamically linked against Homebrew libusb 1.0.30:
/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib
I also sometimes see the following message after rs-fw-update -l / rs-enumerate-devices exits:
Dispatcher exception caught: mutex lock failed: Invalid argument
Possibly related issues:
- librealsense #14648
- libusb/libusb #1762
I have not intentionally attempted to reproduce the firmware-update kernel panic again because repeatedly flashing firmware solely to reproduce a kernel panic carries unnecessary risk.
I can provide a sanitized full kernel panic log if needed.
Steps to Reproduce
I have not intentionally reproduced the issue again because repeatedly flashing firmware solely to reproduce a kernel panic carries unnecessary risk.
Connect a RealSense D435i directly to an Apple Silicon Mac over USB 3.x.
Build librealsense 2.58.1 on macOS with: FORCE_RSUSB_BACKEND=ON BUILD_TOOLS=ON
Confirm the camera is detected normally: rs-enumerate-devices
Start a firmware update from 5.12.7.150 to 5.17.3.10 using: sudo ./Release/rs-fw-update
-s <camera_serial>
-f Signed_Image_UVC_5_17_3_10.binWait for the firmware update to reach 100%.
After the update completes, rs-fw-update waits for the camera to disconnect/reboot and reconnect.
During this USB re-enumeration/reconnect stage, macOS kernel-panics and reboots.
After reboot, reconnect/check the camera. In my case, the firmware update had actually completed successfully and the D435i reported: Firmware Version: 5.17.3.10 USB Type Descriptor: 3.2
Expected Behavior
No response
Actual Behavior
No response
Relevant Log Output
Additional Context
No response
Source: realsenseai/librealsense