Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-118184

Qt multimedia is crashing with Canon EOS camera extension installed

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • P1: Critical
    • None
    • 6.4.2, 6.5.3
    • Multimedia
    • None
    • * macOS Ventura 13.4.1 (22F82) / MacBook Pro 2019 (Intel)
      * macOS Sonoma 14.0.0(23A344) / Unknown (arm64)
    • macOS

    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
       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            tpochep Timur Pocheptsov
            vjungbluth Victor Jungbluth
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes