Details
-
Bug
-
Resolution: Out of scope
-
P1: Critical
-
None
-
6.4.2, 6.5.3
-
None
-
* macOS Ventura 13.4.1 (22F82) / MacBook Pro 2019 (Intel)
* macOS Sonoma 14.0.0(23A344) / Unknown (arm64)
Description
Our crash logs indicated that there is an incompatibility between the Qt Multimedia library and the Canon EOS webcam Utility software. The third party software installs a camera extension on the system, which is by default loaded when the multimedia library is initialised. We are not sure if this is a CoreMedia issue, a Qt issue or a bug in the camera extension.
Here is an extraction from the backtrace:
libsystem_kernel +0x00a11c __pthread_kill
libsystem_pthread +0x006cbc pthread_kill
libsystem_c +0x076a4c abort
libc++abi +0x0116d4 abort_message
libc++abi +0x0017a8 demangling_terminate_handler
libobjc.A +0x0238a0 _objc_terminate
libc++abi +0x010a98 std::__terminate
libc++abi +0x013a44 __cxxabiv1::failed_throw
libc++abi +0x0139f0 __cxa_throw
EOSWebcamUtility +0x0753d8 <unknown>
EOSWebcamUtility +0x0a6ec0 <unknown>
EOSWebcamUtility +0x0fcaac <unknown>
EOSWebcamUtility +0x0fcae0 <unknown>
dyld +0x0225c4 const::lambda::operator()
dyld +0x0676e8 dyld3::MachOAnalyzer::forEachInitializer
dyld +0x05ac5c dyld3::MachOFile::forEachSection
dyld +0x0022f8 dyld3::MachOFile::forEachLoadCommand
dyld +0x059c94 dyld3::MachOFile::forEachSection
dyld +0x05c77c dyld3::MachOFile::forEachInitializerPointerSection
dyld +0x0673dc dyld3::MachOAnalyzer::forEachInitializer
dyld +0x01e794 dyld4::Loader::findAndRunAllInitializers
dyld +0x024b10 dyld4::JustInTimeLoader::runInitializers
dyld +0x01eb48 dyld4::Loader::runInitializersBottomUp
dyld +0x022650 const::lambda::operator()
dyld +0x01ecc8 dyld4::Loader::runInitializersBottomUpPlusUpwardLinks
dyld +0x03d07c dyld4::APIs::dlopen_from
CoreFoundation +0x0a6454 _CFBundleDlfcnLoadBundle
CoreFoundation +0x113dd0 _CFBundleLoadExecutableAndReturnError
CoreFoundation +0x0e0738 CFBundleGetFunctionPointerForName
CoreFoundation +0x0efa80 CFPlugInInstanceCreate
CoreMediaIO +0x01570c CMIO::DAL::PlugInManagement::CreatePlugIn
CoreMediaIO +0x004c24 CMIO::DAL::PlugInManagement::CreateOrLazyLoadPlugIns
CoreMediaIO +0x004818 CMIO::DAL::PlugInManagement::Initialize
CoreMediaIO +0x004624 CMIO::DAL::System::InitializeDevices
CoreMediaIO +0x002364 CMIO::DAL::System::CheckOutInstance
CoreMediaIO +0x001c4c CMIOObjectGetPropertyDataSize
AVFCapture +0x057008 +[AVCaptureDALDevice _refreshDevices]
AVFCapture 0x057eb4 __39[AVCaptureDALDevice _ensureDeviceList]_block_invoke
libdispatch +0x00390c _dispatch_client_callout
libdispatch +0x005148 _dispatch_once_callout
AVFCapture +0x056eb8 +[AVCaptureDALDevice devices]
AVFCapture +0x058544 +[AVCaptureDALDevice _defaultDeviceWithDeviceType:mediaTypes:position:cameraOverrideHistoryAllowed:cameraOverrideHistorySuspendedAllowed:wombatsMustBeMagic:userPreferredCameraHistorySuspendedAllowed:invalidSpecialDeviceTypes:]
AVFCapture +0x0584c0 +[AVCaptureDALDevice defaultDeviceWithDeviceType:mediaType:position:]
AVFCapture +0x13da30 +[AVCaptureDevice_Tundra defaultDeviceWithMediaType:allowIOSMacEnvironment:]
AVFCapture +0x140f80 +[AVCaptureDevice_Tundra defaultDeviceWithMediaType:]
libdarwinmediaplugin +0x01a5b8 QAVFVideoDevices::updateCameraDevices (qavfcamerabase.mm:156)
libdarwinmediaplugin +0x01a50c QAVFVideoDevices::QAVFVideoDevices (qavfcamerabase.mm:131)
libdarwinmediaplugin +0x019d54 QDarwinIntegration::QDarwinIntegration (qdarwinintegration.mm:45)
libdarwinmediaplugin +0x01a358 QDarwinIntegration::QDarwinIntegration (qdarwinintegration.mm:40)
libdarwinmediaplugin +0x01a358 QDarwinMediaPlugin::create (qdarwinintegration.mm:33)
QtMultimedia +0x030430 qLoadPlugin<T> (qfactoryloader_p.h:99)
QtMultimedia +0x030430 QPlatformMediaIntegration::instance (qplatformmediaintegration.cpp:80)
QtMultimedia +0x0320c8 QMediaPlayer::QMediaPlayer (qmediaplayer.cpp:236)
There is also an additional c++ runtime annotation about the raised exception:
[terminating due to uncaught exception of type google::protobuf::FatalException: CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): ]
This exception is thrown in the EOS camera extension. However in other (native) applications don't see any problems with the extension all regular devices work as expected.
I have attached a minimal example to reproduce the issue, which simply starts to play an audio file. This requires to have the Canon EOS webcam utility installed, which can be downloaded from the canon website https://www.usa.canon.com/cameras/eos-webcam-utility