Am update with my findings so far: I can occasionally reproduce QtMir rejecting the camera app connection. It does this as it is not expecting the camera process to connect to it/mir. Why not? Upstart/Ubuntua-app-launch should have notified it that camera app is starting. But it appears some notifications are getting confused. Before the rejection, QtMir prints: qtmir.applications: ApplicationManager::onProcessStarting - appId= "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onProcessStarting application already found with appId "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onProcessStarting - appId= "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onProcessStarting application already found with appId "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onResumeRequested - appId= "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onProcessStarting - appId= "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onProcessStarting application already found with appId "com.ubuntu.camera_camera" qtmir.applications: ApplicationManager::onResumeRequested - appId= "com.ubuntu.camera_camera" The onProcessStarting print is due to a message "starting" from Ubuntu-app-launch. UAL appears to send 3 starting messages! - but in fact the process has stopped (well disconnected from Mir), due to the next lines of output: qtmir.mir: SessionListener::stopping - this= SessionListener(0xb193b7ac) session= 0x1a419dc qtmir.applications: ApplicationManager::onSessionStopping - sessionName= QtUbuntu qtmir.applications: ApplicationManager::remove - appId= "com.ubuntu.camera_camera" Watching dbus traffic from Upstart, I noticed this error coincides with these events: signal sender=:1.0 -> dest=(null destination) serial=1646 path=/com/ubuntu/Upstart; interface=com.ubuntu.Upstart0_6; member=EventEmitted string "starting" array [ string "JOB=application-click" string "INSTANCE=com.ubuntu.camera_camera_3.0.0.516" string "UBUNTU_APP_LAUNCH_ARCH=arm-linux-gnueabihf" ] signal sender=:1.0 -> dest=(null destination) serial=1655 path=/com/ubuntu/Upstart; interface=com.ubuntu.Upstart0_6; member=EventEmitted string "started" array [ string "JOB=application-click" string "INSTANCE=com.ubuntu.camera_camera_3.0.0.516" string "UBUNTU_APP_LAUNCH_ARCH=arm-linux-gnueabihf" ] signal sender=:1.0 -> dest=(null destination) serial=1672 path=/com/ubuntu/Upstart; interface=com.ubuntu.Upstart0_6; member=EventEmitted string "stopping" array [ string "JOB=application-click" string "INSTANCE=com.ubuntu.camera_camera_3.0.0.516" string "RESULT=ok" string "UBUNTU_APP_LAUNCH_ARCH=arm-linux-gnueabihf" ] **No Stopped!!!** signal sender=:1.0 -> dest=(null destination) serial=1708 path=/com/ubuntu/Upstart; interface=com.ubuntu.Upstart0_6; member=EventEmitted string "starting" array [ string "JOB=application-click" string "INSTANCE=com.ubuntu.camera_camera_3.0.0.516" string "UBUNTU_APP_LAUNCH_ARCH=arm-linux-gnueabihf" ] Normally these are the sequence of events: starting, started, stopping, stopped. But there's a missing "stopped" event coming from upstart, which may be confusing UAL, and thus confusing Qtmir. Why this "stopped" event is missing remains to be determined.