github doronz88/pymobiledevice3 v11.19.1

4 hours ago

Highlights

🐛 No more Segmentation fault after native-tunnel commands on macOS

Since v11.19.0, a plain mounter auto-mount on macOS with iOS 17.4+ goes through the native tunnel. Most such runs, and other native-tunnel commands such as cryptex uninstall, finished their work and then crashed on exit with Segmentation fault (exit status 139).

The CLI closed the tunnel from an atexit hook through asyncio.to_thread(), which Python refuses once shutdown has begun. The error was swallowed, so the tunnel never closed: remotepairingd kept delivering XPC events to their Python handlers while the interpreter was finalizing, and the device kept the tunnel assertion. The session is now closed on the exiting thread, and each cancelled XPC connection is waited out until libxpc's final event, so nothing can call back into Python after exit.

🐛 mounter auto-mount exits non-zero when it could not mount (#1985)

Failures such as an unwritable Xcode DeviceSupport path, no image for the iOS version or a failed download were only logged, so the command still exited 0 and scripts took a failed mount for a success. They now exit 1, as do the errors the explicit mount-* / umount-* commands report.

An image that is already mounted is what auto-mount was asked for, so that still exits 0, now logged at info level. Scripts can keep running it before every job.

What's Changed

Full Changelog: v11.19.0...v11.19.1

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.