CoreMediaIO Virtual Camera Extension stopped working in 12.3 RC

I had successfully added the new template Camera Extension to a project, and was able to use it in MacOS 12.3 Beta 3. After updating to the RC version of MacOS 12.3, the extension no longer appears in (for example) Quicktime Player.

As far as the application is concerned, the requests to "update" the extension work, and I get an OSSystemExtensionRequest.Result.completed response from OSSystemExtensionManager.shared.submitRequest.

The only clue I see is an error in the Console app:

RegisterAssistantService.m:806:-[RegisterAssistantServer launchdJobForExtension:error:] submit returned Error Domain=OSLaunchdErrorDomain Code=125 UserInfo={NSLocalizedFailureReason=<private>} for {

    EnablePressuredExit = 1;

    Label = "CMIOExtension.app.mmhmm.CameraTest.camera";

    LaunchEvents =     {

        "com.apple.cmio.registerassistantservice.system-extensions.matching" =         {

            "app.mmhmm.CameraTest.camera" =             {

                CMIOExtensionBundleIdentifier = "app.mmhmm.CameraTest.camera";

            };

        };

    };

    LimitLoadToSessionType = Background;

    MachServices =     {

        "M3KUT44L48.app.mmhmm.CameraTest.camera" = 1;

    };

    ProcessType = Interactive;

    Program = "/Library/SystemExtensions/9D731619-32C2-45C4-9B7C-2F22D184868A/app.mmhmm.CameraTest.camera.systemextension/Contents/MacOS/app.mmhmm.CameraTest.camera";

    SandboxProfile = cmioextension;

    "_ManagedBy" = "com.apple.cmio.registerassistantservice";

}

Any ideas? Submitting a deactivationRequest also apparently "works", but doesn't actually seem to remove the installed extension...

Edit: Weirdly, rebooting seems to have cleared up the issue.

When I ran systemextensionsctl list, I got a bunch of SE reported as "[terminated waiting to uninstall on reboot]":

% systemextensionsctl list

9 extension(s)

--- com.apple.system_extension.cmio

enabled	active	teamID	bundleID (version)	name	[state]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

		M3KUT44L48	app.mmhmm.CameraTest.camera (1.0/1)	camera	[terminated waiting to uninstall on reboot]

I didn't see anything in the (very sparse) documentation that indicated how I'd know that a reboot was required to finish un-installing (especially given that it wasn't required for installing). Maybe that's what OSSystemExtensionProperties.isUnstalling is for?

Post not yet marked as solved Up vote post of MarkBessey Down vote post of MarkBessey
1.7k views

Replies

Yeah it looks like for Core Media I/O extensions, the dynamic unload/reload is pretty broken (almost all updates require a reboot other than the initial load). If you want to ship it in production apps, try structure the extension so it behaves like a light weight shim to just pipe media data, and shift all the complicated logic to your main app with XPC to avoid having to frequently update the system extension?

  • Did you ever get this resolved? Running into the same issue with uninstalling / updating the plugin

Add a Comment