Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ThreadSanitizer: data race qswap.h:46 in void qt_ptr_swap<Waveform const>(Waveform const*&, Waveform const*&) #13894

Open
m0dB opened this issue Nov 17, 2024 · 0 comments
Labels

Comments

@m0dB
Copy link
Contributor

m0dB commented Nov 17, 2024

Bug Description

Details


WARNING: ThreadSanitizer: data race (pid=32552)
  Write of size 8 at 0x0002b0796fc0 by thread T30:
    #0 void qt_ptr_swap<QtSharedPointer::ExternalRefCountData>(QtSharedPointer::ExternalRefCountData*&, QtSharedPointer::ExternalRefCountData*&) qswap.h:46 (mixxx:arm64+0x1003b4838)
    #1 QSharedPointer<Waveform const>::internalSwap(QSharedPointer<Waveform const>&) qsharedpointer_impl.h:479 (mixxx:arm64+0x1003b57cc)
    #2 QSharedPointer<Waveform const>::swap(QSharedPointer<Waveform const>&) qsharedpointer_impl.h:349 (mixxx:arm64+0x1003b5690)
    #3 QSharedPointer<Waveform const>::operator=(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:301 (mixxx:arm64+0x1012bb3a8)
    #4 Track::setWaveform(QSharedPointer<Waveform const>) track.cpp:926 (mixxx:arm64+0x1012bb324)
    #5 AnalyzerWaveform::shouldAnalyze(std::__1::shared_ptr<Track>) const analyzerwaveform.cpp:142 (mixxx:arm64+0x1003aeb10)
    #6 AnalyzerWaveform::initialize(AnalyzerTrack const&, mixxx::audio::SampleRate, long) analyzerwaveform.cpp:48 (mixxx:arm64+0x1003ae324)
    #7 AnalyzerWithState::initialize(AnalyzerTrack const&, mixxx::audio::SampleRate, long) analyzer.h:73 (mixxx:arm64+0x10039d060)
    #8 AnalyzerThread::doRun() analyzerthread.cpp:144 (mixxx:arm64+0x10039b4a8)
    #9 WorkerThread::run() workerthread.cpp:72 (mixxx:arm64+0x10135962c)
    #10 QThreadPrivate::start(void*) <null>:196429892 (mixxx:arm64+0x100221e94)

  Previous read of size 8 at 0x0002b0796fc0 by main thread (mutexes: write M0):
    #0 QSharedPointer<Waveform const>::QSharedPointer(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:296 (mixxx:arm64+0x1003b4ca8)
    #1 QSharedPointer<Waveform const>::QSharedPointer(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:297 (mixxx:arm64+0x1003af194)
    #2 allshader::WaveformRendererRGB::paintGL() <null>:196429892 (mixxx:arm64+0x10159a17c)
    #3 non-virtual thunk to allshader::WaveformRendererRGB::paintGL() <null>:196429892 (mixxx:arm64+0x10159b06c)
    #4 allshader::WaveformWidget::paintGL() waveformwidget.cpp:43 (mixxx:arm64+0x1015ae768)
    #5 allshader::WaveformWidget::render() waveformwidget.cpp:27 (mixxx:arm64+0x1015ae54c)
    #6 non-virtual thunk to allshader::WaveformWidget::render() waveformwidget.cpp (mixxx:arm64+0x1015ae5c8)
    #7 WaveformWidgetFactory::renderSelf() waveformwidgetfactory.cpp:798 (mixxx:arm64+0x1013cf58c)
    #8 WaveformWidgetFactory::swapAndRender() waveformwidgetfactory.cpp:885 (mixxx:arm64+0x1013c6bec)
    #9 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (WaveformWidgetFactory::*)()>::call(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x100f2dae0)
    #10 void QtPrivate::FunctionPointer<void (WaveformWidgetFactory::*)()>::call<QtPrivate::List<>, void>(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x100f2d9ac)
    #11 QtPrivate::QSlotObject<void (WaveformWidgetFactory::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x100f2d810)
    #12 QMetaCallEvent::placeMetaCall(QObject*) <null>:196429892 (mixxx:arm64+0x1000f1ee4)
    #13 QObject::event(QEvent*) <null>:196429892 (mixxx:arm64+0x1000f5000)
    #14 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed03c)
    #15 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ee5e4)
    #16 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #17 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #18 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) <null>:196429892 (mixxx:arm64+0x100094f8c)
    #19 QCoreApplication::sendPostedEvents(QObject*, int) <null>:196429892 (mixxx:arm64+0x10009402c)
    #20 QCocoaEventDispatcherPrivate::processPostedEvents() <null>:196429892 (mixxx:arm64+0x102df4820)
    #21 QCoreApplication::exec() <null>:196429892 (mixxx:arm64+0x100093f5c)
    #22 QGuiApplication::exec() <null>:196429892 (mixxx:arm64+0x102923200)
    #23 QApplication::exec() <null>:196429892 (mixxx:arm64+0x1023ee318)
    #24 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:108 (mixxx:arm64+0x10000d754)
    #25 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Location is heap block of size 1008 at 0x0002b0796c00 allocated by main thread:
    #0 operator new(unsigned long) <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x83de0)
    #1 GlobalTrackCache::resolve(GlobalTrackCacheResolver*, mixxx::FileAccess, TrackId) globaltrackcache.cpp:636 (mixxx:arm64+0x101215548)
    #2 GlobalTrackCacheResolver::GlobalTrackCacheResolver(mixxx::FileAccess, TrackId) globaltrackcache.cpp:193 (mixxx:arm64+0x101215d94)
    #3 GlobalTrackCacheResolver::GlobalTrackCacheResolver(mixxx::FileAccess, TrackId) globaltrackcache.cpp:191 (mixxx:arm64+0x101215e84)
    #4 TrackDAO::getTrackById(TrackId) const trackdao.cpp:1423 (mixxx:arm64+0x100bc077c)
    #5 TrackCollection::getTrackById(TrackId) const trackcollection.cpp:555 (mixxx:arm64+0x100df1c74)
    #6 TrackCollectionManager::getTrackById(TrackId) const trackcollectionmanager.cpp:573 (mixxx:arm64+0x100e09f30)
    #7 BaseSqlTableModel::getTrack(QModelIndex const&) const basesqltablemodel.cpp:780 (mixxx:arm64+0x100a84e08)
    #8 non-virtual thunk to BaseSqlTableModel::getTrack(QModelIndex const&) const basesqltablemodel.cpp (mixxx:arm64+0x100a84e80)
    #9 WTrackTableView::slotMouseDoubleClicked(QModelIndex const&) wtracktableview.cpp:402 (mixxx:arm64+0x101535fb4)
    #10 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QModelIndex const&>, void, void (WTrackTableView::*)(QModelIndex const&)>::call(void (WTrackTableView::*)(QModelIndex const&), WTrackTableView*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x101542c44)
    #11 void QtPrivate::FunctionPointer<void (WTrackTableView::*)(QModelIndex const&)>::call<QtPrivate::List<QModelIndex const&>, void>(void (WTrackTableView::*)(QModelIndex const&), WTrackTableView*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x101542af0)
    #12 QtPrivate::QSlotObject<void (WTrackTableView::*)(QModelIndex const&), QtPrivate::List<QModelIndex const&>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x101542954)
    #13 void doActivate<false>(QObject*, int, void**) <null>:196429892 (mixxx:arm64+0x1000fd96c)
    #14 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:196429892 (mixxx:arm64+0x1000fc5ec)
    #15 QAbstractItemView::mouseDoubleClickEvent(QMouseEvent*) <null>:196429892 (mixxx:arm64+0x102734c18)
    #16 QWidget::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102467dec)
    #17 QFrame::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102511588)
    #18 QAbstractScrollArea::viewportEvent(QEvent*) <null>:196429892 (mixxx:arm64+0x10250d1d0)
    #19 QAbstractItemView::viewportEvent(QEvent*) <null>:196429892 (mixxx:arm64+0x102732958)
    #20 QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x10250e5c8)
    #21 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x100093830)
    #22 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed014)
    #23 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023f0460)
    #24 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #25 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #26 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000942ec)
    #27 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) <null>:196429892 (mixxx:arm64+0x1023ed8f0)
    #28 QWidgetWindow::handleMouseEvent(QMouseEvent*) <null>:196429892 (mixxx:arm64+0x102485544)
    #29 QWidgetWindow::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102483e3c)
    #30 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed03c)
    #31 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ee5e4)
    #32 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #33 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #34 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000942ec)
    #35 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) <null>:196429892 (mixxx:arm64+0x1029251f4)
    #36 QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) <null>:196429892 (mixxx:arm64+0x102923fa4)
    #37 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) <null>:196429892 (mixxx:arm64+0x102984958)
    #38 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) <null>:196429892 (mixxx:arm64+0x102df5324)
    #39 QCoreApplication::exec() <null>:196429892 (mixxx:arm64+0x100093f5c)
    #40 QGuiApplication::exec() <null>:196429892 (mixxx:arm64+0x102923200)
    #41 QApplication::exec() <null>:196429892 (mixxx:arm64+0x1023ee318)
    #42 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:108 (mixxx:arm64+0x10000d754)
    #43 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Mutex M0 (0x000111a0e668) created at:
    #0 pthread_mutex_init <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x30e30)
    #1 <null> <null>:196429892 (CoreAudio:arm64e+0x7041c)
    #2 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:22 (mixxx:arm64+0x1015c8e28)
    #3 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:11 (mixxx:arm64+0x1015c92f8)
    #4 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:23 (mixxx:arm64+0x1015d0228)
    #5 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:12 (mixxx:arm64+0x1015d0af0)
    #6 AudioUnitBackend::loadAudioUnits() audiounitbackend.mm:102 (mixxx:arm64+0x1015bed08)
    #7 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:22 (mixxx:arm64+0x1015be7cc)
    #8 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:21 (mixxx:arm64+0x1015be684)
    #9 createAudioUnitBackend() audiounitbackend.mm:111 (mixxx:arm64+0x1015be5dc)
    #10 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:22 (mixxx:arm64+0x1007ac2cc)
    #11 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:15 (mixxx:arm64+0x1007ac9f8)
    #12 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:34 (mixxx:arm64+0x100807cfc)
    #13 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:31 (mixxx:arm64+0x1008091d8)
    #14 EffectsManager* std::__1::construct_at[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, EffectsManager*>(EffectsManager*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) construct_at.h:38 (mixxx:arm64+0x100625a30)
    #15 void std::__1::allocator_traits<std::__1::allocator<EffectsManager>>::construct[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void, void>(std::__1::allocator<EffectsManager>&, EffectsManager*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) allocator_traits.h:304 (mixxx:arm64+0x100625710)
    #16 std::__1::__shared_ptr_emplace<EffectsManager, std::__1::allocator<EffectsManager>>::__shared_ptr_emplace[abi:v160006]<QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&>(std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:284 (mixxx:arm64+0x1006255ac)
    #17 std::__1::__shared_ptr_emplace<EffectsManager, std::__1::allocator<EffectsManager>>::__shared_ptr_emplace[abi:v160006]<QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&>(std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:276 (mixxx:arm64+0x100624ff4)
    #18 std::__1::shared_ptr<EffectsManager> std::__1::allocate_shared[abi:v160006]<EffectsManager, std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void>(std::__1::allocator<EffectsManager> const&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:995 (mixxx:arm64+0x100624e08)
    #19 std::__1::shared_ptr<EffectsManager> std::__1::make_shared[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void>(QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:1004 (mixxx:arm64+0x100618770)
    #20 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:262 (mixxx:arm64+0x100616bac)
    #21 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x10000d5f4)
    #22 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Thread T30 (tid=16333924, running) created by main thread at:
    #0 pthread_create <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x2ffec)
    #1 QThread::start(QThread::Priority) <null>:196429892 (mixxx:arm64+0x100222ad0)
    #2 TrackAnalysisScheduler::TrackAnalysisScheduler(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:89 (mixxx:arm64+0x1003cf0d0)
    #3 TrackAnalysisScheduler::TrackAnalysisScheduler(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:60 (mixxx:arm64+0x1003cea78)
    #4 TrackAnalysisScheduler::createInstance(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:40 (mixxx:arm64+0x1003ce8e4)
    #5 Library::createTrackAnalysisScheduler(int, AnalyzerModeFlags) const library.cpp:287 (mixxx:arm64+0x100ca847c)
    #6 PlayerManager::bindToLibrary(Library*) playermanager.cpp:185 (mixxx:arm64+0x100eb303c)
    #7 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:358 (mixxx:arm64+0x100617330)
    #8 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x10000d5f4)
    #9 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

SUMMARY: ThreadSanitizer: data race qswap.h:46 in void qt_ptr_swap<QtSharedPointer::ExternalRefCountData>(QtSharedPointer::ExternalRefCountData*&, QtSharedPointer::ExternalRefCountData*&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=32552)
  Write of size 8 at 0x0002b0796fb8 by thread T30:
    #0 void qt_ptr_swap<Waveform const>(Waveform const*&, Waveform const*&) qswap.h:46 (mixxx:arm64+0x1003b5858)
    #1 QSharedPointer<Waveform const>::internalSwap(QSharedPointer<Waveform const>&) qsharedpointer_impl.h:480 (mixxx:arm64+0x1003b57d8)
    #2 QSharedPointer<Waveform const>::swap(QSharedPointer<Waveform const>&) qsharedpointer_impl.h:349 (mixxx:arm64+0x1003b5690)
    #3 QSharedPointer<Waveform const>::operator=(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:301 (mixxx:arm64+0x1012bb3a8)
    #4 Track::setWaveform(QSharedPointer<Waveform const>) track.cpp:926 (mixxx:arm64+0x1012bb324)
    #5 AnalyzerWaveform::shouldAnalyze(std::__1::shared_ptr<Track>) const analyzerwaveform.cpp:142 (mixxx:arm64+0x1003aeb10)
    #6 AnalyzerWaveform::initialize(AnalyzerTrack const&, mixxx::audio::SampleRate, long) analyzerwaveform.cpp:48 (mixxx:arm64+0x1003ae324)
    #7 AnalyzerWithState::initialize(AnalyzerTrack const&, mixxx::audio::SampleRate, long) analyzer.h:73 (mixxx:arm64+0x10039d060)
    #8 AnalyzerThread::doRun() analyzerthread.cpp:144 (mixxx:arm64+0x10039b4a8)
    #9 WorkerThread::run() workerthread.cpp:72 (mixxx:arm64+0x10135962c)
    #10 QThreadPrivate::start(void*) <null>:196429892 (mixxx:arm64+0x100221e94)

  Previous read of size 8 at 0x0002b0796fb8 by main thread (mutexes: write M0):
    #0 QSharedPointer<Waveform const>::QSharedPointer(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:296 (mixxx:arm64+0x1003b4c70)
    #1 QSharedPointer<Waveform const>::QSharedPointer(QSharedPointer<Waveform const> const&) qsharedpointer_impl.h:297 (mixxx:arm64+0x1003af194)
    #2 allshader::WaveformRendererRGB::paintGL() <null>:196429892 (mixxx:arm64+0x10159a17c)
    #3 non-virtual thunk to allshader::WaveformRendererRGB::paintGL() <null>:196429892 (mixxx:arm64+0x10159b06c)
    #4 allshader::WaveformWidget::paintGL() waveformwidget.cpp:43 (mixxx:arm64+0x1015ae768)
    #5 allshader::WaveformWidget::render() waveformwidget.cpp:27 (mixxx:arm64+0x1015ae54c)
    #6 non-virtual thunk to allshader::WaveformWidget::render() waveformwidget.cpp (mixxx:arm64+0x1015ae5c8)
    #7 WaveformWidgetFactory::renderSelf() waveformwidgetfactory.cpp:798 (mixxx:arm64+0x1013cf58c)
    #8 WaveformWidgetFactory::swapAndRender() waveformwidgetfactory.cpp:885 (mixxx:arm64+0x1013c6bec)
    #9 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (WaveformWidgetFactory::*)()>::call(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x100f2dae0)
    #10 void QtPrivate::FunctionPointer<void (WaveformWidgetFactory::*)()>::call<QtPrivate::List<>, void>(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x100f2d9ac)
    #11 QtPrivate::QSlotObject<void (WaveformWidgetFactory::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x100f2d810)
    #12 QMetaCallEvent::placeMetaCall(QObject*) <null>:196429892 (mixxx:arm64+0x1000f1ee4)
    #13 QObject::event(QEvent*) <null>:196429892 (mixxx:arm64+0x1000f5000)
    #14 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed03c)
    #15 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ee5e4)
    #16 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #17 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #18 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) <null>:196429892 (mixxx:arm64+0x100094f8c)
    #19 QCoreApplication::sendPostedEvents(QObject*, int) <null>:196429892 (mixxx:arm64+0x10009402c)
    #20 QCocoaEventDispatcherPrivate::processPostedEvents() <null>:196429892 (mixxx:arm64+0x102df4820)
    #21 QCoreApplication::exec() <null>:196429892 (mixxx:arm64+0x100093f5c)
    #22 QGuiApplication::exec() <null>:196429892 (mixxx:arm64+0x102923200)
    #23 QApplication::exec() <null>:196429892 (mixxx:arm64+0x1023ee318)
    #24 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:108 (mixxx:arm64+0x10000d754)
    #25 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Location is heap block of size 1008 at 0x0002b0796c00 allocated by main thread:
    #0 operator new(unsigned long) <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x83de0)
    #1 GlobalTrackCache::resolve(GlobalTrackCacheResolver*, mixxx::FileAccess, TrackId) globaltrackcache.cpp:636 (mixxx:arm64+0x101215548)
    #2 GlobalTrackCacheResolver::GlobalTrackCacheResolver(mixxx::FileAccess, TrackId) globaltrackcache.cpp:193 (mixxx:arm64+0x101215d94)
    #3 GlobalTrackCacheResolver::GlobalTrackCacheResolver(mixxx::FileAccess, TrackId) globaltrackcache.cpp:191 (mixxx:arm64+0x101215e84)
    #4 TrackDAO::getTrackById(TrackId) const trackdao.cpp:1423 (mixxx:arm64+0x100bc077c)
    #5 TrackCollection::getTrackById(TrackId) const trackcollection.cpp:555 (mixxx:arm64+0x100df1c74)
    #6 TrackCollectionManager::getTrackById(TrackId) const trackcollectionmanager.cpp:573 (mixxx:arm64+0x100e09f30)
    #7 BaseSqlTableModel::getTrack(QModelIndex const&) const basesqltablemodel.cpp:780 (mixxx:arm64+0x100a84e08)
    #8 non-virtual thunk to BaseSqlTableModel::getTrack(QModelIndex const&) const basesqltablemodel.cpp (mixxx:arm64+0x100a84e80)
    #9 WTrackTableView::slotMouseDoubleClicked(QModelIndex const&) wtracktableview.cpp:402 (mixxx:arm64+0x101535fb4)
    #10 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QModelIndex const&>, void, void (WTrackTableView::*)(QModelIndex const&)>::call(void (WTrackTableView::*)(QModelIndex const&), WTrackTableView*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x101542c44)
    #11 void QtPrivate::FunctionPointer<void (WTrackTableView::*)(QModelIndex const&)>::call<QtPrivate::List<QModelIndex const&>, void>(void (WTrackTableView::*)(QModelIndex const&), WTrackTableView*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x101542af0)
    #12 QtPrivate::QSlotObject<void (WTrackTableView::*)(QModelIndex const&), QtPrivate::List<QModelIndex const&>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x101542954)
    #13 void doActivate<false>(QObject*, int, void**) <null>:196429892 (mixxx:arm64+0x1000fd96c)
    #14 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:196429892 (mixxx:arm64+0x1000fc5ec)
    #15 QAbstractItemView::mouseDoubleClickEvent(QMouseEvent*) <null>:196429892 (mixxx:arm64+0x102734c18)
    #16 QWidget::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102467dec)
    #17 QFrame::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102511588)
    #18 QAbstractScrollArea::viewportEvent(QEvent*) <null>:196429892 (mixxx:arm64+0x10250d1d0)
    #19 QAbstractItemView::viewportEvent(QEvent*) <null>:196429892 (mixxx:arm64+0x102732958)
    #20 QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x10250e5c8)
    #21 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x100093830)
    #22 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed014)
    #23 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023f0460)
    #24 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #25 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #26 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000942ec)
    #27 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) <null>:196429892 (mixxx:arm64+0x1023ed8f0)
    #28 QWidgetWindow::handleMouseEvent(QMouseEvent*) <null>:196429892 (mixxx:arm64+0x102485544)
    #29 QWidgetWindow::event(QEvent*) <null>:196429892 (mixxx:arm64+0x102483e3c)
    #30 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ed03c)
    #31 QApplication::notify(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1023ee5e4)
    #32 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ed9828)
    #33 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000932ac)
    #34 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) <null>:196429892 (mixxx:arm64+0x1000942ec)
    #35 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) <null>:196429892 (mixxx:arm64+0x1029251f4)
    #36 QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) <null>:196429892 (mixxx:arm64+0x102923fa4)
    #37 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) <null>:196429892 (mixxx:arm64+0x102984958)
    #38 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) <null>:196429892 (mixxx:arm64+0x102df5324)
    #39 QCoreApplication::exec() <null>:196429892 (mixxx:arm64+0x100093f5c)
    #40 QGuiApplication::exec() <null>:196429892 (mixxx:arm64+0x102923200)
    #41 QApplication::exec() <null>:196429892 (mixxx:arm64+0x1023ee318)
    #42 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:108 (mixxx:arm64+0x10000d754)
    #43 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Mutex M0 (0x000111a0e668) created at:
    #0 pthread_mutex_init <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x30e30)
    #1 <null> <null>:196429892 (CoreAudio:arm64e+0x7041c)
    #2 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:22 (mixxx:arm64+0x1015c8e28)
    #3 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:11 (mixxx:arm64+0x1015c92f8)
    #4 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:23 (mixxx:arm64+0x1015d0228)
    #5 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:12 (mixxx:arm64+0x1015d0af0)
    #6 AudioUnitBackend::loadAudioUnits() audiounitbackend.mm:102 (mixxx:arm64+0x1015bed08)
    #7 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:22 (mixxx:arm64+0x1015be7cc)
    #8 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:21 (mixxx:arm64+0x1015be684)
    #9 createAudioUnitBackend() audiounitbackend.mm:111 (mixxx:arm64+0x1015be5dc)
    #10 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:22 (mixxx:arm64+0x1007ac2cc)
    #11 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:15 (mixxx:arm64+0x1007ac9f8)
    #12 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:34 (mixxx:arm64+0x100807cfc)
    #13 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:31 (mixxx:arm64+0x1008091d8)
    #14 EffectsManager* std::__1::construct_at[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, EffectsManager*>(EffectsManager*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) construct_at.h:38 (mixxx:arm64+0x100625a30)
    #15 void std::__1::allocator_traits<std::__1::allocator<EffectsManager>>::construct[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void, void>(std::__1::allocator<EffectsManager>&, EffectsManager*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) allocator_traits.h:304 (mixxx:arm64+0x100625710)
    #16 std::__1::__shared_ptr_emplace<EffectsManager, std::__1::allocator<EffectsManager>>::__shared_ptr_emplace[abi:v160006]<QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&>(std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:284 (mixxx:arm64+0x1006255ac)
    #17 std::__1::__shared_ptr_emplace<EffectsManager, std::__1::allocator<EffectsManager>>::__shared_ptr_emplace[abi:v160006]<QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&>(std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:276 (mixxx:arm64+0x100624ff4)
    #18 std::__1::shared_ptr<EffectsManager> std::__1::allocate_shared[abi:v160006]<EffectsManager, std::__1::allocator<EffectsManager>, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void>(std::__1::allocator<EffectsManager> const&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:995 (mixxx:arm64+0x100624e08)
    #19 std::__1::shared_ptr<EffectsManager> std::__1::make_shared[abi:v160006]<EffectsManager, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&, void>(QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<ChannelHandleFactory>&) shared_ptr.h:1004 (mixxx:arm64+0x100618770)
    #20 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:262 (mixxx:arm64+0x100616bac)
    #21 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x10000d5f4)
    #22 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

  Thread T30 (tid=16333924, running) created by main thread at:
    #0 pthread_create <null>:196429892 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x2ffec)
    #1 QThread::start(QThread::Priority) <null>:196429892 (mixxx:arm64+0x100222ad0)
    #2 TrackAnalysisScheduler::TrackAnalysisScheduler(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:89 (mixxx:arm64+0x1003cf0d0)
    #3 TrackAnalysisScheduler::TrackAnalysisScheduler(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:60 (mixxx:arm64+0x1003cea78)
    #4 TrackAnalysisScheduler::createInstance(std::__1::unique_ptr<TrackAnalysisSchedulerEnvironment const, std::__1::default_delete<TrackAnalysisSchedulerEnvironment const>>, int, std::__1::shared_ptr<mixxx::DbConnectionPool> const&, QSharedPointer<ConfigObject<ConfigValue>> const&, AnalyzerModeFlags) trackanalysisscheduler.cpp:40 (mixxx:arm64+0x1003ce8e4)
    #5 Library::createTrackAnalysisScheduler(int, AnalyzerModeFlags) const library.cpp:287 (mixxx:arm64+0x100ca847c)
    #6 PlayerManager::bindToLibrary(Library*) playermanager.cpp:185 (mixxx:arm64+0x100eb303c)
    #7 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:358 (mixxx:arm64+0x100617330)
    #8 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x10000d5f4)
    #9 main main.cpp:243 (mixxx:arm64+0x10000c5f0)

SUMMARY: ThreadSanitizer: data race qswap.h:46 in void qt_ptr_swap<Waveform const>(Waveform const*&, Waveform const*&)
==================

Version

No response

OS

No response

@m0dB m0dB added the bug label Nov 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant