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

Guard against "destroying audio stream without stopping it first" situation

XMLWordPrintable

    • c9c305876 (dev), 0cb8fe36a (6.10)

      No solid reproducer but this kind of crash may happen:

      Thread 19 Crashed:: SynthNotePlayer
      0   ???                           	       0x10df69ae0 ???
      1   ???                           	       0x112b2556c ???
      2   libsystem_pthread.dylib       	       0x11e521b12 pthread_kill + 259
      3   libsystem_c.dylib             	       0x11e335ae6 abort + 134
      4   Clarion                       	       0x10434a7e9 qAbort() + 9
      5   Clarion                       	       0x104357278 void qt_message_fatal<QString&>(QtMsgType, QMessageLogContext const&, QString&) + 24
      6   Clarion                       	       0x104351948 qt_message(QtMsgType, QMessageLogContext const&, char const*, __va_list_tag*) + 152
      7   Clarion                       	       0x1048b6365 QMessageLogger::fatal(char const*, ...) const + 469
      8   Clarion                       	       0x1048b5aaa qt_assert(char const*, char const*, int) + 74
      9   Clarion                       	       0x1037da727 QtMultimediaPrivate::QPlatformAudioIOStream::~QPlatformAudioIOStream() + 71
      10  Clarion                       	       0x1037dae78 QtMultimediaPrivate::QPlatformAudioSinkStream::~QPlatformAudioSinkStream() + 136
      11  Clarion                       	       0x1038d7079 QCoreAudioSinkStream::~QCoreAudioSinkStream() + 89
      12  Clarion                       	       0x1038d7015 QCoreAudioSinkStream::~QCoreAudioSinkStream() + 21
      13  Clarion                       	       0x1038d6dcd std::__1::__shared_ptr_emplace<QCoreAudioSinkStream, std::__1::allocator<QCoreAudioSinkStream>>::__on_zero_shared() + 29
      14  Clarion                       	       0x101659571 std::__1::__shared_count::__release_shared[abi:un170006]() + 49 (shared_ptr.h:173)
      15  Clarion                       	       0x101659519 std::__1::__shared_weak_count::__release_shared[abi:un170006]() + 25 (shared_ptr.h:214)
      16  Clarion                       	       0x1038d5fec std::__1::shared_ptr<QCoreAudioSinkStream>::~shared_ptr[abi:un170006]() + 44
      17  Clarion                       	       0x1038cfac5 std::__1::shared_ptr<QCoreAudioSinkStream>::~shared_ptr[abi:un170006]() + 21
      18  Clarion                       	       0x1038cfa79 std::__1::shared_ptr<QCoreAudioSinkStream>::operator=[abi:un170006](std::__1::shared_ptr<QCoreAudioSinkStream>&&) + 73
      19  Clarion                       	       0x1038d0813 QtMultimediaPrivate::QPlatformAudioSinkImplementation<QCoreAudioSinkStream, QDarwinAudioSink>::start(QIODevice*) + 355
      20  Clarion                       	       0x1037d89e1 QAudioSink::start(QIODevice*) + 241
      21  Clarion                       	       0x10181d7c8 AudioSinkContainer::startPull(QIODevice*) + 296 (AudioSinkContainer.cpp:20)
      22  Clarion                       	       0x10181ab57 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<SynthDevice*>, void, void (AudioSinkContainer::*)(QIODevice*)>::call(void (AudioSinkContainer::*)(QIODevice*), AudioSinkContainer*, void**)::'lambda'()::operator()() const + 119 (qobjectdefs_impl.h:152)
      23  Clarion                       	       0x10181aa79 void QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<SynthDevice*>, void, void (AudioSinkContainer::*)(QIODevice*)>::call(void (AudioSinkContainer::*)(QIODevice*), AudioSinkContainer*, void**)::'lambda'()>(void**, QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<SynthDevice*>, void, void (AudioSinkContainer::*)(QIODevice*)>::call(void (AudioSinkContainer::*)(QIODevice*), AudioSinkContainer*, void**)::'lambda'()&&) + 25 (qobjectdefs_impl.h:65)
      24  Clarion                       	       0x10181aa06 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<SynthDevice*>, void, void (AudioSinkContainer::*)(QIODevice*)>::call(void (AudioSinkContainer::*)(QIODevice*), AudioSinkContainer*, void**) + 86 (qobjectdefs_impl.h:151)
      25  Clarion                       	       0x10181a96d void QtPrivate::FunctionPointer<void (AudioSinkContainer::*)(QIODevice*)>::call<QtPrivate::List<SynthDevice*>, void>(void (AudioSinkContainer::*)(QIODevice*), AudioSinkContainer*, void**) + 77 (qobjectdefs_impl.h:199)
      26  Clarion                       	       0x10181a891 QtPrivate::QCallableObject<void (AudioSinkContainer::*)(QIODevice*), QtPrivate::List<SynthDevice*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 161 (qobjectdefs_impl.h:570)
      27  Clarion                       	       0x10398979e QtPrivate::QSlotObjectBase::call(QObject*, void**) + 46
      28  Clarion                       	       0x104482c56 void doActivate<false>(QObject*, int, void**) + 2662
      29  Clarion                       	       0x104481290 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 128
      30  Clarion                       	       0x101829c47 SynthDeviceContainer::synthDeviceMade(SynthDevice*) + 71 (moc_SynthDeviceContainer.cpp:571)
      31  Clarion                       	       0x10182535e SynthDeviceContainer::makeSynthDevice() + 1374 (SynthDeviceContainer.cpp:88)
      32  Clarion                       	       0x101819671 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SynthDeviceContainer::*)()>::call(void (SynthDeviceContainer::*)(), SynthDeviceContainer*, void**)::'lambda'()::operator()() const + 97 (qobjectdefs_impl.h:152)
      33  Clarion                       	       0x101819609 void QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SynthDeviceContainer::*)()>::call(void (SynthDeviceContainer::*)(), SynthDeviceContainer*, void**)::'lambda'()>(void**, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SynthDeviceContainer::*)()>::call(void (SynthDeviceContainer::*)(), SynthDeviceContainer*, void**)::'lambda'()&&) + 25 (qobjectdefs_impl.h:65)
      34  Clarion                       	       0x1018195de QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SynthDeviceContainer::*)()>::call(void (SynthDeviceContainer::*)(), SynthDeviceContainer*, void**) + 78 (qobjectdefs_impl.h:151)
      35  Clarion                       	       0x10181954d void QtPrivate::FunctionPointer<void (SynthDeviceContainer::*)()>::call<QtPrivate::List<>, void>(void (SynthDeviceContainer::*)(), SynthDeviceContainer*, void**) + 77 (qobjectdefs_impl.h:199)
      36  Clarion                       	       0x101819471 QtPrivate::QCallableObject<void (SynthDeviceContainer::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 161 (qobjectdefs_impl.h:570)
      37  Clarion                       	       0x10398979e QtPrivate::QSlotObjectBase::call(QObject*, void**) + 46
      38  Clarion                       	       0x104475ddf QMetaCallEvent::placeMetaCall(QObject*) + 79
      39  Clarion                       	       0x1044787b5 QObject::event(QEvent*) + 613
      40  Clarion                       	       0x1043f39a3 QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) + 179
      41  Clarion                       	       0x1043f346e doNotify(QObject*, QEvent*) + 190
      42  Clarion                       	       0x1043f3537 QCoreApplication::notify(QObject*, QEvent*) + 135
      43  Clarion                       	       0x103b6a729 QGuiApplication::notify(QObject*, QEvent*) + 201
      44  Clarion                       	       0x1043f334d QCoreApplication::notifyInternal2(QObject*, QEvent*) + 381
      45  Clarion                       	       0x1043f40f3 QCoreApplication::sendEvent(QObject*, QEvent*) + 131
      46  Clarion                       	       0x1043f5431 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 1761
      47  Clarion                       	       0x1046d7dd5 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 181
      48  Clarion                       	       0x104407330 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 144
      49  Clarion                       	       0x1044075ea QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 634
      50  Clarion                       	       0x10458a1c5 QThread::exec() + 277
      51  Clarion                       	       0x10458ac85 QThread::run() + 21
      52  Clarion                       	       0x1046d552e QThreadPrivate::start(void*)::$_1::operator()() const + 782
      53  Clarion                       	       0x1046d3ba5 void (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::$_1>(QThreadPrivate::start(void*)::$_1&&) + 21
      54  Clarion                       	       0x1046d3b2d QThreadPrivate::start(void*) + 221
      55  libsystem_pthread.dylib       	       0x11e521e05 _pthread_start + 115
      56  libsystem_pthread.dylib       	       0x11e51d857 thread_start + 15
      

        For Gerrit Dashboard: QTBUG-141395
        # Subject Branch Project Status CR V

            timblechmann tim blechmann
            luqiaochen Luqiao Chen
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes