We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
================== WARNING: ThreadSanitizer: data race (pid=29271) Write of size 8 at 0x000114a66030 by thread T19 (mutexes: write M0, write M1): #0 ControlValueAtomicBase<double, 8, true>::setValue(double const&) controlvalue.h:138 (mixxx:arm64+0x1003e6884) #1 ControlDoublePrivate::setInner(double, QObject*) control.cpp:297 (mixxx:arm64+0x1003ea8c4) #2 ControlDoublePrivate::set(double, QObject*) control.cpp:285 (mixxx:arm64+0x1003ea64c) #3 ControlObject::set(double) controlobject.h:99 (mixxx:arm64+0x1003fb5d4) #4 CueControl::loadCuesFromTrack() cuecontrol.cpp:697 (mixxx:arm64+0x1009031a0) #5 CueControl::trackLoaded(std::__1::shared_ptr<Track>) cuecontrol.cpp:533 (mixxx:arm64+0x100902328) #6 EngineBuffer::notifyTrackLoaded(std::__1::shared_ptr<Track>, std::__1::shared_ptr<Track>) enginebuffer.cpp:651 (mixxx:arm64+0x100975428) #7 EngineBuffer::slotTrackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) enginebuffer.cpp:560 (mixxx:arm64+0x10096e438) #8 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x10097c920) #9 void QtPrivate::FunctionPointer<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x10097c764) #10 QtPrivate::QSlotObject<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x10097c5c8) #11 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #12 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #13 CachingReader::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreader.cpp:247 (mixxx:arm64+0x1008aec94) #14 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x1008c0e9c) #15 void QtPrivate::FunctionPointer<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x1008c0ce0) #16 QtPrivate::QSlotObject<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x1008c0b44) #17 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #18 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #19 CachingReaderWorker::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreaderworker.cpp:247 (mixxx:arm64+0x1008c815c) #20 CachingReaderWorker::loadTrack(std::__1::shared_ptr<Track> const&) cachingreaderworker.cpp:252 (mixxx:arm64+0x1008ca5b4) #21 CachingReaderWorker::run() cachingreaderworker.cpp:123 (mixxx:arm64+0x1008c970c) #22 QThreadPrivate::start(void*) <null>:258918468 (mixxx:arm64+0x100224e94) Previous read of size 8 at 0x000114a66030 by main thread (mutexes: write M2): #0 ControlValueAtomicBase<double, 8, true>::getValue() const controlvalue.h:130 (mixxx:arm64+0x1003e7374) #1 ControlDoublePrivate::get() const control.h:98 (mixxx:arm64+0x1003e780c) #2 ControlProxy::get() const controlproxy.h:113 (mixxx:arm64+0x100405658) #3 WaveformMarkRange::start() const waveformmarkrange.cpp:99 (mixxx:arm64+0x10137009c) #4 WaveformMarkRange::active() const waveformmarkrange.cpp:79 (mixxx:arm64+0x10136ff70) #5 allshader::WaveformRenderMarkRange::paintGL() <null>:258918468 (mixxx:arm64+0x1015aa630) #6 non-virtual thunk to allshader::WaveformRenderMarkRange::paintGL() <null>:258918468 (mixxx:arm64+0x1015aa920) #7 allshader::WaveformWidget::paintGL() waveformwidget.cpp:43 (mixxx:arm64+0x1015afef4) #8 allshader::WaveformWidget::render() waveformwidget.cpp:27 (mixxx:arm64+0x1015afcd8) #9 non-virtual thunk to allshader::WaveformWidget::render() waveformwidget.cpp (mixxx:arm64+0x1015afd54) #10 WaveformWidgetFactory::renderSelf() waveformwidgetfactory.cpp:798 (mixxx:arm64+0x1013d0d18) #11 WaveformWidgetFactory::swapAndRender() waveformwidgetfactory.cpp:885 (mixxx:arm64+0x1013c8378) #12 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (WaveformWidgetFactory::*)()>::call(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x100f2f26c) #13 void QtPrivate::FunctionPointer<void (WaveformWidgetFactory::*)()>::call<QtPrivate::List<>, void>(void (WaveformWidgetFactory::*)(), WaveformWidgetFactory*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x100f2f138) #14 QtPrivate::QSlotObject<void (WaveformWidgetFactory::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x100f2ef9c) #15 QMetaCallEvent::placeMetaCall(QObject*) <null>:258918468 (mixxx:arm64+0x1000f4ee4) #16 QObject::event(QEvent*) <null>:258918468 (mixxx:arm64+0x1000f8000) #17 QApplicationPrivate::notify_helper(QObject*, QEvent*) <null>:258918468 (mixxx:arm64+0x1023ee7bc) #18 QApplication::notify(QObject*, QEvent*) <null>:258918468 (mixxx:arm64+0x1023efd64) #19 MixxxApplication::notify(QObject*, QEvent*) mixxxapplication.cpp:200 (mixxx:arm64+0x100edafb4) #20 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>:258918468 (mixxx:arm64+0x1000962ac) #21 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) <null>:258918468 (mixxx:arm64+0x100097f8c) #22 QCoreApplication::sendPostedEvents(QObject*, int) <null>:258918468 (mixxx:arm64+0x10009702c) #23 QCocoaEventDispatcherPrivate::processPostedEvents() <null>:258918468 (mixxx:arm64+0x102df5fa0) #24 QCoreApplication::exec() <null>:258918468 (mixxx:arm64+0x100096f5c) #25 QGuiApplication::exec() <null>:258918468 (mixxx:arm64+0x102924980) #26 QApplication::exec() <null>:258918468 (mixxx:arm64+0x1023efa98) #27 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:108 (mixxx:arm64+0x100010754) #28 main main.cpp:243 (mixxx:arm64+0x10000f5f0) Location is heap block of size 208 at 0x000114a65f80 allocated by main thread: #0 operator new(unsigned long) <null>:258918468 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x83de0) #1 ControlDoublePrivate::getControl(ConfigKey const&, QFlags<ControlFlag>, ControlObject*, bool, bool, bool, double) control.cpp:188 (mixxx:arm64+0x1003e8bc4) #2 ControlObject::ControlObject(ConfigKey const&, bool, bool, bool, double) controlobject.cpp:20 (mixxx:arm64+0x10040c5f4) #3 ControlObject::ControlObject(ConfigKey const&, bool, bool, bool, double) controlobject.cpp:17 (mixxx:arm64+0x10040c9fc) #4 std::__1::__unique_if<ControlObject>::__unique_single std::__1::make_unique[abi:v160006]<ControlObject, ConfigKey>(ConfigKey&&) unique_ptr.h:686 (mixxx:arm64+0x1004086b4) #5 CueControl::createControls() cuecontrol.cpp:159 (mixxx:arm64+0x1008fbf84) #6 CueControl::createControls() cuecontrol.cpp:139 (mixxx:arm64+0x1008fb690) #7 CueControl::CueControl(QString const&, QSharedPointer<ConfigObject<ConfigValue>>) cuecontrol.cpp:101 (mixxx:arm64+0x1009003dc) #8 EngineBuffer::EngineBuffer(QString const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineChannel*, EngineMixer*) enginebuffer.cpp:228 (mixxx:arm64+0x100970990) #9 EngineBuffer::EngineBuffer(QString const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineChannel*, EngineMixer*) enginebuffer.cpp:97 (mixxx:arm64+0x100973390) #10 EngineDeck::EngineDeck(ChannelHandleAndGroup const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, bool) enginedeck.cpp:38 (mixxx:arm64+0x1008d9500) #11 EngineDeck::EngineDeck(ChannelHandleAndGroup const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, bool) enginedeck.cpp:24 (mixxx:arm64+0x1008d98f8) #12 BaseTrackPlayerImpl::BaseTrackPlayerImpl(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&, bool, bool, bool) basetrackplayer.cpp:55 (mixxx:arm64+0x100e90144) #13 BaseTrackPlayerImpl::BaseTrackPlayerImpl(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&, bool, bool, bool) basetrackplayer.cpp:54 (mixxx:arm64+0x100e8fb94) #14 Deck::Deck(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&) deck.cpp:19 (mixxx:arm64+0x100e9f2cc) #15 PlayerManager::addDeckInner() playermanager.cpp:408 (mixxx:arm64+0x100eb73a8) #16 PlayerManager::slotChangeNumDecks(double) playermanager.cpp:323 (mixxx:arm64+0x100eb1450) #17 PlayerManager::addConfiguredDecks() playermanager.cpp:395 (mixxx:arm64+0x100eb8508) #18 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:309 (mixxx:arm64+0x100619a58) #19 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x1000105f4) #20 main main.cpp:243 (mixxx:arm64+0x10000f5f0) Mutex M0 (0x00011cf49468) created at: #0 __tsan_mutex_post_lock <null>:258918468 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x4707c) #1 QRecursiveMutex::tryLock(int) <null>:258918468 (mixxx:arm64+0x1002264dc) #2 QRecursiveMutex::lock() qmutex.h:201 (mixxx:arm64+0x10090be30) #3 QMutexLocker<QRecursiveMutex>::QMutexLocker(QRecursiveMutex*) qmutex.h:235 (mixxx:arm64+0x10090bdb0) #4 QMutexLocker<QRecursiveMutex>::QMutexLocker(QRecursiveMutex*) qmutex.h:232 (mixxx:arm64+0x10090bd00) #5 lockMutex(QRecursiveMutex*) qmutex.h:38 (mixxx:arm64+0x1009027c4) #6 CueControl::trackLoaded(std::__1::shared_ptr<Track>) cuecontrol.cpp:479 (mixxx:arm64+0x100901fb8) #7 EngineBuffer::notifyTrackLoaded(std::__1::shared_ptr<Track>, std::__1::shared_ptr<Track>) enginebuffer.cpp:651 (mixxx:arm64+0x100975428) #8 EngineBuffer::slotTrackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) enginebuffer.cpp:560 (mixxx:arm64+0x10096e438) #9 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x10097c920) #10 void QtPrivate::FunctionPointer<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x10097c764) #11 QtPrivate::QSlotObject<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x10097c5c8) #12 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #13 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #14 CachingReader::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreader.cpp:247 (mixxx:arm64+0x1008aec94) #15 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x1008c0e9c) #16 void QtPrivate::FunctionPointer<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x1008c0ce0) #17 QtPrivate::QSlotObject<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x1008c0b44) #18 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #19 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #20 CachingReaderWorker::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreaderworker.cpp:247 (mixxx:arm64+0x1008c815c) #21 CachingReaderWorker::loadTrack(std::__1::shared_ptr<Track> const&) cachingreaderworker.cpp:252 (mixxx:arm64+0x1008ca5b4) #22 CachingReaderWorker::run() cachingreaderworker.cpp:123 (mixxx:arm64+0x1008c970c) #23 QThreadPrivate::start(void*) <null>:258918468 (mixxx:arm64+0x100224e94) Mutex M1 (0x00011cf49458) created at: #0 __tsan_mutex_post_lock <null>:258918468 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x4707c) #1 QRecursiveMutex::tryLock(int) <null>:258918468 (mixxx:arm64+0x100226500) #2 QRecursiveMutex::lock() qmutex.h:201 (mixxx:arm64+0x10090be30) #3 QMutexLocker<QRecursiveMutex>::QMutexLocker(QRecursiveMutex*) qmutex.h:235 (mixxx:arm64+0x10090bdb0) #4 QMutexLocker<QRecursiveMutex>::QMutexLocker(QRecursiveMutex*) qmutex.h:232 (mixxx:arm64+0x10090bd00) #5 lockMutex(QRecursiveMutex*) qmutex.h:38 (mixxx:arm64+0x1009027c4) #6 CueControl::trackLoaded(std::__1::shared_ptr<Track>) cuecontrol.cpp:479 (mixxx:arm64+0x100901fb8) #7 EngineBuffer::notifyTrackLoaded(std::__1::shared_ptr<Track>, std::__1::shared_ptr<Track>) enginebuffer.cpp:651 (mixxx:arm64+0x100975428) #8 EngineBuffer::slotTrackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) enginebuffer.cpp:560 (mixxx:arm64+0x10096e438) #9 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x10097c920) #10 void QtPrivate::FunctionPointer<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), EngineBuffer*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x10097c764) #11 QtPrivate::QSlotObject<void (EngineBuffer::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x10097c5c8) #12 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #13 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #14 CachingReader::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreader.cpp:247 (mixxx:arm64+0x1008aec94) #15 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void, void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:137 (mixxx:arm64+0x1008c0e9c) #16 void QtPrivate::FunctionPointer<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double)>::call<QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>(void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), CachingReader*, void**) qobjectdefs_impl.h:174 (mixxx:arm64+0x1008c0ce0) #17 QtPrivate::QSlotObject<void (CachingReader::*)(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double), QtPrivate::List<std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) qobjectdefs_impl.h:432 (mixxx:arm64+0x1008c0b44) #18 void doActivate<false>(QObject*, int, void**) <null>:258918468 (mixxx:arm64+0x10010096c) #19 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) <null>:258918468 (mixxx:arm64+0x1000ff5ec) #20 CachingReaderWorker::trackLoaded(std::__1::shared_ptr<Track>, mixxx::audio::SampleRate, double) moc_cachingreaderworker.cpp:247 (mixxx:arm64+0x1008c815c) #21 CachingReaderWorker::loadTrack(std::__1::shared_ptr<Track> const&) cachingreaderworker.cpp:252 (mixxx:arm64+0x1008ca5b4) #22 CachingReaderWorker::run() cachingreaderworker.cpp:123 (mixxx:arm64+0x1008c970c) #23 QThreadPrivate::start(void*) <null>:258918468 (mixxx:arm64+0x100224e94) Mutex M2 (0x000115616468) created at: #0 pthread_mutex_init <null>:258918468 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x30e30) #1 <null> <null>:258918468 (CoreAudio:arm64e+0x7041c) #2 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:22 (mixxx:arm64+0x1015ca5b4) #3 AudioUnitManager::AudioUnitManager(AVAudioUnitComponent*, AudioUnitInstantiationType) audiounitmanager.mm:11 (mixxx:arm64+0x1015caa84) #4 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:23 (mixxx:arm64+0x1015d19b4) #5 AudioUnitManifest::AudioUnitManifest(QString const&, AVAudioUnitComponent*) audiounitmanifest.mm:12 (mixxx:arm64+0x1015d227c) #6 AudioUnitBackend::loadAudioUnits() audiounitbackend.mm:102 (mixxx:arm64+0x1015c0494) #7 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:22 (mixxx:arm64+0x1015bff58) #8 AudioUnitBackend::AudioUnitBackend() audiounitbackend.mm:21 (mixxx:arm64+0x1015bfe10) #9 createAudioUnitBackend() audiounitbackend.mm:111 (mixxx:arm64+0x1015bfd68) #10 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:22 (mixxx:arm64+0x1007aece4) #11 EffectsBackendManager::EffectsBackendManager() effectsbackendmanager.cpp:15 (mixxx:arm64+0x1007af410) #12 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:34 (mixxx:arm64+0x10080a714) #13 EffectsManager::EffectsManager(QSharedPointer<ConfigObject<ConfigValue>>, std::__1::shared_ptr<ChannelHandleFactory>) effectsmanager.cpp:31 (mixxx:arm64+0x10080bbf0) #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+0x100628448) #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+0x100628128) #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+0x100627fc4) #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+0x100627a0c) #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+0x100627820) #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+0x10061b188) #20 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:262 (mixxx:arm64+0x1006195c4) #21 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x1000105f4) #22 main main.cpp:243 (mixxx:arm64+0x10000f5f0) Thread T19 (tid=16281635, running) created by main thread at: #0 pthread_create <null>:258918468 (libclang_rt.tsan_osx_dynamic.dylib:arm64e+0x2ffec) #1 QThread::start(QThread::Priority) <null>:258918468 (mixxx:arm64+0x100225ad0) #2 CachingReader::CachingReader(QString const&, QSharedPointer<ConfigObject<ConfigValue>>) cachingreader.cpp:88 (mixxx:arm64+0x1008af54c) #3 CachingReader::CachingReader(QString const&, QSharedPointer<ConfigObject<ConfigValue>>) cachingreader.cpp:61 (mixxx:arm64+0x1008b02c4) #4 EngineBuffer::EngineBuffer(QString const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineChannel*, EngineMixer*) enginebuffer.cpp:106 (mixxx:arm64+0x10096f2e4) #5 EngineBuffer::EngineBuffer(QString const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineChannel*, EngineMixer*) enginebuffer.cpp:97 (mixxx:arm64+0x100973390) #6 EngineDeck::EngineDeck(ChannelHandleAndGroup const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, bool) enginedeck.cpp:38 (mixxx:arm64+0x1008d9500) #7 EngineDeck::EngineDeck(ChannelHandleAndGroup const&, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, bool) enginedeck.cpp:24 (mixxx:arm64+0x1008d98f8) #8 BaseTrackPlayerImpl::BaseTrackPlayerImpl(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&, bool, bool, bool) basetrackplayer.cpp:55 (mixxx:arm64+0x100e90144) #9 BaseTrackPlayerImpl::BaseTrackPlayerImpl(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&, bool, bool, bool) basetrackplayer.cpp:54 (mixxx:arm64+0x100e8fb94) #10 Deck::Deck(PlayerManager*, QSharedPointer<ConfigObject<ConfigValue>>, EngineMixer*, EffectsManager*, EngineChannel::ChannelOrientation, ChannelHandleAndGroup const&) deck.cpp:19 (mixxx:arm64+0x100e9f2cc) #11 PlayerManager::addDeckInner() playermanager.cpp:408 (mixxx:arm64+0x100eb73a8) #12 PlayerManager::slotChangeNumDecks(double) playermanager.cpp:323 (mixxx:arm64+0x100eb1450) #13 PlayerManager::addConfiguredDecks() playermanager.cpp:395 (mixxx:arm64+0x100eb8508) #14 mixxx::CoreServices::initialize(QApplication*) coreservices.cpp:309 (mixxx:arm64+0x100619a58) #15 (anonymous namespace)::runMixxx(MixxxApplication*, CmdlineArgs const&) main.cpp:87 (mixxx:arm64+0x1000105f4) #16 main main.cpp:243 (mixxx:arm64+0x10000f5f0) SUMMARY: ThreadSanitizer: data race controlvalue.h:138 in ControlValueAtomicBase<double, 8, true>::setValue(double const&)
No response
The text was updated successfully, but these errors were encountered:
Successfully merging a pull request may close this issue.
Bug Description
Details
Version
No response
OS
No response
The text was updated successfully, but these errors were encountered: