I occasionally get the error "cb transfer status: 1, canceling...". This usually is because something bumped my pi causing the RTLSDRĀ dongle to move.
rtl_fm nicely emits to ERROUT but remains running. I think this is likely an error. I would expect the process to die in this state. Is this reasoning correct?
I made a change with
claude.ai , it removed invoking `rtlsdr_cancel_async(dev);`
===
Why this fixes the halt:
The callback was calling rtlsdr_cancel_async() while already executing inside the libusb_handle_events_timeout_completed() loop (line 1924), which would modify the dev->async_cancel flag that the event handler was actively monitoring. This created a deadlock/race condition.
Now the callback simply sets the dev->dev_lost flag, and the main event loop at line 1961 properly detects this condition and breaks out cleanly, allowing normal termination to occur.
The process should now terminate correctly when USB transfer errors occur.
===
The change is available at
https://github.com/osmocom/rtl-sdr/compare/master...ramonsmits:rtl-sdr:rtlsdr_cancel_async
Does this change make any sense?
I have not fully tested this as I'm new to this project and somehow need to build this and deploy on my pi4 which I need to figure out.
Any help appreciated!