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

thread sanitizer warning BrowseThread / BrowseTableModel #13861

Open
m0dB opened this issue Nov 10, 2024 · 0 comments
Open

thread sanitizer warning BrowseThread / BrowseTableModel #13861

m0dB opened this issue Nov 10, 2024 · 0 comments
Labels

Comments

@m0dB
Copy link
Contributor

m0dB commented Nov 10, 2024

Bug Description

Details

WARNING: ThreadSanitizer: data race (pid=48840)
  Read of size 8 at 0x0001466d5f28 by thread T29:
    #0 void doActivate<false>(QObject*, int, void**) <null>:230508612 (mixxx:arm64+0x10011f4e8)
    #1 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:230508612 (mixxx:arm64+0x10011db88)
    #2 QThread::started(QThread::QPrivateSignal) <null>:230508612 (mixxx:arm64+0x1001e8c5c)
    #3 QThreadPrivate::start(void*) <null>:230508612 (mixxx:arm64+0x100248f38)

  Previous write of size 8 at 0x0001466d5f28 by main thread (mutexes: write M0, write M1, write M2):
    #0 QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) <null>:230508612 (mixxx:arm64+0x10011bdac)
    #1 QObjectPrivate::connectImpl(QObject const*, int, QObject const*, void**, QtPrivate::QSlotObjectBase*, int, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121dc4)
    #2 QObject::connectImpl(QObject const*, void**, QObject const*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121790)
    #3 QMetaObject::Connection QObject::connect<void (BrowseThread::*)(BrowseTableModel*), void (BrowseTableModel::*)(BrowseTableModel*)>(QtPrivate::FunctionPointer<void (BrowseThread::*)(BrowseTableModel*)>::Object const*, void (BrowseThread::*)(BrowseTableModel*), QtPrivate::FunctionPointer<void (BrowseTableModel::*)(BrowseTableModel*)>::Object const*, void (BrowseTableModel::*)(BrowseTableModel*), Qt::ConnectionType) qobject.h:223 (mixxx:arm64+0x100b046e4)
    #4 BrowseTableModel::BrowseTableModel(QObject*, TrackCollectionManager*, RecordingManager*) browsetablemodel.cpp:163 (mixxx:arm64+0x100b05824)
    #5 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:46 (mixxx:arm64+0x100afc79c)
    #6 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:49 (mixxx:arm64+0x100afdb50)
    #7 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:121 (mixxx:arm64+0x100cbf15c)
    #8 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:76 (mixxx:arm64+0x100cc2d9c)
    #9 Library* std::__1::construct_at[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, Library*>(Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) construct_at.h:38 (mixxx:arm64+0x1006525d8)
    #10 void std::__1::allocator_traits<std::__1::allocator<Library>>::construct[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void, void>(std::__1::allocator<Library>&, Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) allocator_traits.h:304 (mixxx:arm64+0x10065221c)
    #11 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:284 (mixxx:arm64+0x100652078)
    #12 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:276 (mixxx:arm64+0x100651a80)
    #13 std::__1::shared_ptr<Library> std::__1::allocate_shared[abi:v160006]<Library, std::__1::allocator<Library>, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(std::__1::allocator<Library> const&, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:995 (mixxx:arm64+0x100651854)
    #14 std::__1::shared_ptr<Library> std::__1::make_shared[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:1004 (mixxx:arm64+0x10063a068)
    #15 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:346 (mixxx:arm64+0x100637a1c)
    #16 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x100010fcc)
    #17 main main.cpp:243 (mixxx:arm64+0x10000ff08)

  Location is heap block of size 160 at 0x0001466d5f20 allocated by main thread:
    #0 malloc <null>:230508612 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x55a5c)
    #1 QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) <null>:230508612 (mixxx:arm64+0x10011bd3c)
    #2 QObjectPrivate::connectImpl(QObject const*, int, QObject const*, void**, QtPrivate::QSlotObjectBase*, int, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121dc4)
    #3 QObject::connectImpl(QObject const*, void**, QObject const*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121790)
    #4 QMetaObject::Connection QObject::connect<void (BrowseThread::*)(BrowseTableModel*), void (BrowseTableModel::*)(BrowseTableModel*)>(QtPrivate::FunctionPointer<void (BrowseThread::*)(BrowseTableModel*)>::Object const*, void (BrowseThread::*)(BrowseTableModel*), QtPrivate::FunctionPointer<void (BrowseTableModel::*)(BrowseTableModel*)>::Object const*, void (BrowseTableModel::*)(BrowseTableModel*), Qt::ConnectionType) qobject.h:223 (mixxx:arm64+0x100b046e4)
    #5 BrowseTableModel::BrowseTableModel(QObject*, TrackCollectionManager*, RecordingManager*) browsetablemodel.cpp:163 (mixxx:arm64+0x100b05824)
    #6 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:46 (mixxx:arm64+0x100afc79c)
    #7 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:49 (mixxx:arm64+0x100afdb50)
    #8 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:121 (mixxx:arm64+0x100cbf15c)
    #9 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:76 (mixxx:arm64+0x100cc2d9c)
    #10 Library* std::__1::construct_at[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, Library*>(Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) construct_at.h:38 (mixxx:arm64+0x1006525d8)
    #11 void std::__1::allocator_traits<std::__1::allocator<Library>>::construct[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void, void>(std::__1::allocator<Library>&, Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) allocator_traits.h:304 (mixxx:arm64+0x10065221c)
    #12 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:284 (mixxx:arm64+0x100652078)
    #13 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:276 (mixxx:arm64+0x100651a80)
    #14 std::__1::shared_ptr<Library> std::__1::allocate_shared[abi:v160006]<Library, std::__1::allocator<Library>, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(std::__1::allocator<Library> const&, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:995 (mixxx:arm64+0x100651854)
    #15 std::__1::shared_ptr<Library> std::__1::make_shared[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:1004 (mixxx:arm64+0x10063a068)
    #16 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:346 (mixxx:arm64+0x100637a1c)
    #17 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x100010fcc)
    #18 main main.cpp:243 (mixxx:arm64+0x10000ff08)

  Mutex M0 (0x000113b16468) created at:
    #0 pthread_mutex_init <null>:230508612 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x30e30)
    #1 <null> <null>:230508612 (CoreAudio:arm64e+0x7041c)
    #2 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:22 (mixxx:arm64+0x1015d7a0c)
    #3 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:11 (mixxx:arm64+0x1015d7f24)
    #4 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:23 (mixxx:arm64+0x1015deeec)
    #5 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:12 (mixxx:arm64+0x1015df7b4)
    #6 AudioUnitBackend::loadAudioUnits() audiounitbackend.mm:102 (mixxx:arm64+0x1015cd8ec)
    #7 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:22 (mixxx:arm64+0x1015cd3b0)
    #8 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:21 (mixxx:arm64+0x1015cd268)
    #9 createAudioUnitBackend() audiounitbackend.mm:111 (mixxx:arm64+0x1015cd1c0)
    #10 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:22 (mixxx:arm64+0x1007ce754)
    #11 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:15 (mixxx:arm64+0x1007cee80)
    #12 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:34 (mixxx:arm64+0x10082a184)
    #13 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:31 (mixxx:arm64+0x10082b660)
    #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+0x100646500)
    #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+0x1006461e0)
    #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+0x10064607c)
    #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+0x100645ac4)
    #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+0x1006458d8)
    #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+0x100638ea4)
    #20 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:262 (mixxx:arm64+0x1006372e0)
    #21 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x100010fcc)
    #22 main main.cpp:243 (mixxx:arm64+0x10000ff08)

  Mutex M1 (0x00010a0c6410) created at:
    #0 __tsan_mutex_post_lock <null>:230508612 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x4707c)
    #1 QOrderedMutexLocker::relock() <null>:230508612 (mixxx:arm64+0x100124498)
    #2 QMetaObjectPrivate::connect(QObject const*, int, QMetaObject const*, QObject const*, int, QMetaObject const*, int, int*) <null>:230508612 (mixxx:arm64+0x10011a328)
    #3 QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) <null>:230508612 (mixxx:arm64+0x100119394)
    #4 QMenuPrivate::setOverrideMenuAction(QAction*) <null>:230508612 (mixxx:arm64+0x10241a1e4)
    #5 QtWidgetsActionPrivate::setMenu(QObject*) <null>:230508612 (mixxx:arm64+0x102325b70)
    #6 QAction::setMenuObject(QObject*) <null>:230508612 (mixxx:arm64+0x105022248)
    #7 QMenuPrivate::init() <null>:230508612 (mixxx:arm64+0x102419f80)
    #8 QMenu::QMenu(QString const&, QWidget*) <null>:230508612 (mixxx:arm64+0x102423c40)
    #9 WMainMenuBar::initialize() wmainmenubar.cpp:372 (mixxx:arm64+0x1014a5fdc)
    #10 WMainMenuBar::initialize() wmainmenubar.cpp:86 (mixxx:arm64+0x1014a0ee4)
    #11 WMainMenuBar::WMainMenuBar(QWidget*, QSharedPointer<ConfigObject<ConfigValue>>, ConfigObject<ConfigValueKbd>*) wmainmenubar.cpp:81 (mixxx:arm64+0x1014abce4)
    #12 parented_ptr<WMainMenuBar> make_parented<WMainMenuBar, MixxxMainWindow*, QSharedPointer<ConfigObject<ConfigValue>>, ConfigObject<ConfigValueKbd>*>(MixxxMainWindow*&&, QSharedPointer<ConfigObject<ConfigValue>>&&, ConfigObject<ConfigValueKbd>*&&) parented_ptr.h:109 (mixxx:arm64+0x100f3a09c)
    #13 MixxxMainWindow::createMenuBar() mixxxmainwindow.cpp:782 (mixxx:arm64+0x100f30074)
    #14 MixxxMainWindow::MixxxMainWindow(std::__1::shared_ptr<mixxx::CoreServices>) mixxxmainwindow.cpp:122 (mixxx:arm64+0x100f2fa88)
    #15 MixxxMainWindow::MixxxMainWindow(std::__1::shared_ptr<mixxx::CoreServices>) mixxxmainwindow.cpp:104 (mixxx:arm64+0x100f30ca8)
    #16 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:68 (mixxx:arm64+0x100010ed8)
    #17 main main.cpp:243 (mixxx:arm64+0x10000ff08)

  Mutex M2 (0x00010a0c64d0) created at:
    #0 __tsan_mutex_post_lock <null>:230508612 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x4707c)
    #1 QOrderedMutexLocker::relock() <null>:230508612 (mixxx:arm64+0x100124498)
    #2 QObjectPrivate::connectImpl(QObject const*, int, QObject const*, void**, QtPrivate::QSlotObjectBase*, int, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121b0c)
    #3 QObject::connectImpl(QObject const*, void**, QObject const*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, int const*, QMetaObject const*) <null>:230508612 (mixxx:arm64+0x100121790)
    #4 QMenuPrivate::syncPlatformMenu() <null>:230508612 (mixxx:arm64+0x10241a93c)
    #5 QMenu::setPlatformMenu(QPlatformMenu*) <null>:230508612 (mixxx:arm64+0x10241a554)
    #6 QMenuBarPrivate::getPlatformMenu(QAction const*) <null>:230508612 (mixxx:arm64+0x102436c68)
    #7 QMenuBar::actionEvent(QActionEvent*) <null>:230508612 (mixxx:arm64+0x102437030)
    #8 QWidget::event(QEvent*) <null>:230508612 (mixxx:arm64+0x102276240)
    #9 QMenuBar::event(QEvent*) <null>:230508612 (mixxx:arm64+0x102437910)
    #10 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:230508612 (mixxx:arm64+0x1021fabdc)
    #11 QApplication::notify(QObject*, QEvent*) <null>:230508612 (mixxx:arm64+0x1021fd364)
    #12 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100ef48dc)
    #13 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:230508612 (mixxx:arm64+0x1000b3dec)
    #14 QCoreApplication::sendEvent(QObject*, QEvent*) <null>:230508612 (mixxx:arm64+0x1000b4ea8)
    #15 QWidget::insertAction(QAction*, QAction*) <null>:230508612 (mixxx:arm64+0x10226545c)
    #16 QWidget::addAction(QAction*) <null>:230508612 (mixxx:arm64+0x1022651d0)
    #17 QMenuBar::addMenu(QMenu*) <null>:230508612 (mixxx:arm64+0x102435300)
    #18 WMainMenuBar::initialize() wmainmenubar.cpp:490 (mixxx:arm64+0x1014a742c)
    #19 WMainMenuBar::initialize() wmainmenubar.cpp:86 (mixxx:arm64+0x1014a0ee4)
    #20 WMainMenuBar::WMainMenuBar(QWidget*, QSharedPointer<ConfigObject<ConfigValue>>, ConfigObject<ConfigValueKbd>*) wmainmenubar.cpp:81 (mixxx:arm64+0x1014abce4)
    #21 parented_ptr<WMainMenuBar> make_parented<WMainMenuBar, MixxxMainWindow*, QSharedPointer<ConfigObject<ConfigValue>>, ConfigObject<ConfigValueKbd>*>(MixxxMainWindow*&&, QSharedPointer<ConfigObject<ConfigValue>>&&, ConfigObject<ConfigValueKbd>*&&) parented_ptr.h:109 (mixxx:arm64+0x100f3a09c)
    #22 MixxxMainWindow::createMenuBar() mixxxmainwindow.cpp:782 (mixxx:arm64+0x100f30074)
    #23 MixxxMainWindow::MixxxMainWindow(std::__1::shared_ptr<mixxx::CoreServices>) mixxxmainwindow.cpp:122 (mixxx:arm64+0x100f2fa88)
    #24 MixxxMainWindow::MixxxMainWindow(std::__1::shared_ptr<mixxx::CoreServices>) mixxxmainwindow.cpp:104 (mixxx:arm64+0x100f30ca8)
    #25 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:68 (mixxx:arm64+0x100010ed8)
    #26 main main.cpp:243 (mixxx:arm64+0x10000ff08)

  Thread T29 (tid=8890891, running) created by main thread at:
    #0 pthread_create <null>:230508612 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x2ffec)
    #1 QThread::start(QThread::Priority) <null>:230508612 (mixxx:arm64+0x100249b9c)
    #2 BrowseThread::BrowseThread(QObject*) browsethread.cpp:36 (mixxx:arm64+0x100b0e9f8)
    #3 BrowseThread::BrowseThread(QObject*) browsethread.cpp:32 (mixxx:arm64+0x100b0eb14)
    #4 BrowseThread::getInstanceRef() browsethread.cpp:58 (mixxx:arm64+0x100b0ee1c)
    #5 BrowseTableModel::BrowseTableModel(QObject*, TrackCollectionManager*, RecordingManager*) browsetablemodel.cpp:162 (mixxx:arm64+0x100b057c0)
    #6 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:46 (mixxx:arm64+0x100afc79c)
    #7 BrowseFeature::BrowseFeature(Library*, QSharedPointer<ConfigObject<ConfigValue>>, RecordingManager*) browsefeature.cpp:49 (mixxx:arm64+0x100afdb50)
    #8 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:121 (mixxx:arm64+0x100cbf15c)
    #9 Library::Library(QObject*, QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<mixxx::DbConnectionPool>, TrackCollectionManager*, PlayerManager*, RecordingManager*) library.cpp:76 (mixxx:arm64+0x100cc2d9c)
    #10 Library* std::__1::construct_at[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, Library*>(Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) construct_at.h:38 (mixxx:arm64+0x1006525d8)
    #11 void std::__1::allocator_traits<std::__1::allocator<Library>>::construct[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void, void>(std::__1::allocator<Library>&, Library*, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) allocator_traits.h:304 (mixxx:arm64+0x10065221c)
    #12 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:284 (mixxx:arm64+0x100652078)
    #13 std::__1::__shared_ptr_emplace<Library, std::__1::allocator<Library>>::__shared_ptr_emplace[abi:v160006]<mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*>(std::__1::allocator<Library>, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:276 (mixxx:arm64+0x100651a80)
    #14 std::__1::shared_ptr<Library> std::__1::allocate_shared[abi:v160006]<Library, std::__1::allocator<Library>, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(std::__1::allocator<Library> const&, mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:995 (mixxx:arm64+0x100651854)
    #15 std::__1::shared_ptr<Library> std::__1::make_shared[abi:v160006]<Library, mixxx::CoreServices*, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*, PlayerManager*, RecordingManager*, void>(mixxx::CoreServices*&&, QSharedPointer<ConfigObject<ConfigValue>>&, std::__1::shared_ptr<mixxx::DbConnectionPool>&, TrackCollectionManager*&&, PlayerManager*&&, RecordingManager*&&) shared_ptr.h:1004 (mixxx:arm64+0x10063a068)
    #16 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:346 (mixxx:arm64+0x100637a1c)
    #17 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x100010fcc)
    #18 main main.cpp:243 (mixxx:arm64+0x10000ff08)

SUMMARY: ThreadSanitizer: data race (mixxx:arm64+0x10011f4e8) in void doActivate<false>(QObject*, int, void**)+0xb3c

BrowseTableModel -> BrowseThread access. Fixed.

Version

2.5

OS

No response

@m0dB m0dB added the bug label Nov 10, 2024
@m0dB m0dB changed the title thread sanitizer issue 01 thread sanitizer issue BrowseThread / BrowseTableModel Nov 17, 2024
@m0dB m0dB changed the title thread sanitizer issue BrowseThread / BrowseTableModel thread sanitizer warning BrowseThread / BrowseTableModel 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