-
Notifications
You must be signed in to change notification settings - Fork 229
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
OSC Output testing #27
Comments
I should make the port configurable, to make it easier to use. the short answer is that it sends to localhost on port 56456, and it sends messages of the format if you check out this thread on twitter, you can see a walkthrough of the issue to get it working: https://twitter.com/awwbees/status/1298454591688802307 I discovered that there was a memory stomp happening in the current release with oscoutput. that thread has several branches, you can find a fixed preview build buried here in one of those branches: https://twitter.com/awwbees/status/1298453392935784450 let me know if this doesn't work out for you! and I will add info displayed on the module to make usage clearer. |
================== WARNING: ThreadSanitizer: data race (pid=795426) Read of size 4 at 0x7b6c00000e88 by thread T3 (mutexes: write M0): #0 IClickable::NotifyMouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 (BespokeSynth+0x60c873) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModuleContainer::MouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:182:20 (BespokeSynth+0xa7a6c4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModularSynth::MouseMoved(int, int) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:1288:24 (BespokeSynth+0x6b6d50) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:347:14 (BespokeSynth+0x6772f0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #6 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Previous write of size 4 at 0x7b6c00000e88 by main thread: #0 IClickable::SetPosition(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.h:44:10 (BespokeSynth+0x6b0333) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2421:19 (BespokeSynth+0x6b0333) #2 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) #9 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#11 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#13 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#15 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#16 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#18 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Location is heap block of size 1584 at 0x7b6c00000e00 allocated by main thread: #0 operator new(unsigned long) <null> (BespokeSynth+0x47ef66) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 Amplifier::Create() /home/jn/dev/synth/bespoke/Source/Amplifier.h:40:46 (BespokeSynth+0xa8f6b9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModuleFactory::MakeModule(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /home/jn/dev/synth/bespoke/Source/ModuleFactory.cpp:522:17 (BespokeSynth+0xa8b5cd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 ModularSynth::CreateModule(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2524:37 (BespokeSynth+0x6bf7b8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 ModuleContainer::LoadModules(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:509:52 (BespokeSynth+0xa7cbb2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 ModularSynth::LoadLayout(ofxJSONElement) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2478:21 (BespokeSynth+0x6bec6b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2409:4 (BespokeSynth+0x6b00dc) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#16 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#18 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#19 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#20 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#21 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#23 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#24 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#25 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#26 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#27 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Mutex M0 (0x7b8000056ce0) created at: #0 pthread_mutex_lock <null> (BespokeSynth+0x41cb4a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 __gthread_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:749:12 (BespokeSynth+0x6772a5) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 __gthread_recursive_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:811:10 (BespokeSynth+0x6772a5) #3 std::recursive_mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:108:17 (BespokeSynth+0x6772a5) #4 ModularSynth::LockRender(bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.h:226:22 (BespokeSynth+0x6772a5) #5 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:343:14 (BespokeSynth+0x6772a5) #6 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #8 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#14 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Thread T3 'Pool' (tid=795985, running) created by main thread at: #0 pthread_create <null> (BespokeSynth+0x3fefbd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 juce::Thread::launchThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:919:9 (BespokeSynth+0xe2a915) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 juce::Thread::startThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:130:9 (BespokeSynth+0xe2a7e6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 juce::ThreadPool::createThreads(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:117:12 (BespokeSynth+0xe2c21f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::ThreadPool::ThreadPool(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:97:5 (BespokeSynth+0xe2bf05) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 std::__detail::_MakeUniq<juce::ThreadPool>::__single_object std::make_unique<juce::ThreadPool, int>(int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x14e2312) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::OpenGLContext::CachedImage::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:163:28 (BespokeSynth+0x14e2312) #7 juce::OpenGLContext::Attachment::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1039:26 (BespokeSynth+0x14dcf04) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 juce::OpenGLContext::Attachment::attach() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1016:9 (BespokeSynth+0x14dcf04) #9 juce::OpenGLContext::Attachment::componentVisibilityChanged() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:952:17 (BespokeSynth+0x14dd59f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ComponentMovementWatcher::componentVisibilityChanged(juce::Component&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp:120:13 (BespokeSynth+0x11b2127) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Component::sendVisibilityChangeMessage()::$_6::operator()(juce::ComponentListener&) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:84 (BespokeSynth+0x1162ade) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 void juce::ListenerList<juce::ComponentListener, juce::Array<juce::ComponentListener*, juce::DummyCriticalSection, 0> >::callChecked<juce::Component::sendVisibilityChangeMessage()::$_6, juce::Component::BailOutChecker>(juce::Component::BailOutChecker const&, juce::Component::sendVisibilityChangeMessage()::$_6&&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/containers/juce_ListenerList.h:170:13 (BespokeSynth+0x1162ade) BespokeSynth#13 juce::Component::sendVisibilityChangeMessage() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:28 (BespokeSynth+0x1162ade) BespokeSynth#14 juce::Component::setVisible(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:609:13 (BespokeSynth+0x1162446) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 BespokeApplication::MainWindow::MainWindow(juce::String) /home/jn/dev/synth/bespoke/Source/Main.cpp:105:10 (BespokeSynth+0x66dac0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#16 std::__detail::_MakeUniq<BespokeApplication::MainWindow>::__single_object std::make_unique<BespokeApplication::MainWindow, char const (&) [14]>(char const (&) [14]) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x66d45a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 BespokeApplication::initialise(juce::String const&) /home/jn/dev/synth/bespoke/Source/Main.cpp:50:20 (BespokeSynth+0x66d45a) BespokeSynth#18 juce::JUCEApplicationBase::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:297:5 (BespokeSynth+0xf149a8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::JUCEApplication::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/application/juce_Application.cpp:92:30 (BespokeSynth+0x12842e9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:256:16 (BespokeSynth+0xf146f2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) SUMMARY: ThreadSanitizer: data race /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 in IClickable::NotifyMouseMoved(float, float) ==================
Rejected approach: Introducing a ILockable class that contains the mutex variable. This would result in diamond-shaped inheritance graphs sooner or later, which can be resolved by declaring the inheritance as virtual, but that would probably result in slower code than necessary. ================== WARNING: ThreadSanitizer: data race (pid=795426) Read of size 4 at 0x7b6c00000e88 by thread T3 (mutexes: write M0): #0 IClickable::NotifyMouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 (BespokeSynth+0x60c873) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModuleContainer::MouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:182:20 (BespokeSynth+0xa7a6c4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModularSynth::MouseMoved(int, int) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:1288:24 (BespokeSynth+0x6b6d50) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:347:14 (BespokeSynth+0x6772f0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #6 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Previous write of size 4 at 0x7b6c00000e88 by main thread: #0 IClickable::SetPosition(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.h:44:10 (BespokeSynth+0x6b0333) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2421:19 (BespokeSynth+0x6b0333) #2 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) #9 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#11 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#13 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#15 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#16 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#18 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Location is heap block of size 1584 at 0x7b6c00000e00 allocated by main thread: #0 operator new(unsigned long) <null> (BespokeSynth+0x47ef66) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 Amplifier::Create() /home/jn/dev/synth/bespoke/Source/Amplifier.h:40:46 (BespokeSynth+0xa8f6b9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModuleFactory::MakeModule(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /home/jn/dev/synth/bespoke/Source/ModuleFactory.cpp:522:17 (BespokeSynth+0xa8b5cd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 ModularSynth::CreateModule(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2524:37 (BespokeSynth+0x6bf7b8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 ModuleContainer::LoadModules(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:509:52 (BespokeSynth+0xa7cbb2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 ModularSynth::LoadLayout(ofxJSONElement) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2478:21 (BespokeSynth+0x6bec6b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2409:4 (BespokeSynth+0x6b00dc) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#16 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#18 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#19 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#20 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#21 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#23 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#24 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#25 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#26 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#27 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Mutex M0 (0x7b8000056ce0) created at: #0 pthread_mutex_lock <null> (BespokeSynth+0x41cb4a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 __gthread_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:749:12 (BespokeSynth+0x6772a5) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 __gthread_recursive_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:811:10 (BespokeSynth+0x6772a5) #3 std::recursive_mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:108:17 (BespokeSynth+0x6772a5) #4 ModularSynth::LockRender(bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.h:226:22 (BespokeSynth+0x6772a5) #5 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:343:14 (BespokeSynth+0x6772a5) #6 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #8 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#14 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Thread T3 'Pool' (tid=795985, running) created by main thread at: #0 pthread_create <null> (BespokeSynth+0x3fefbd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 juce::Thread::launchThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:919:9 (BespokeSynth+0xe2a915) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 juce::Thread::startThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:130:9 (BespokeSynth+0xe2a7e6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 juce::ThreadPool::createThreads(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:117:12 (BespokeSynth+0xe2c21f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::ThreadPool::ThreadPool(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:97:5 (BespokeSynth+0xe2bf05) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 std::__detail::_MakeUniq<juce::ThreadPool>::__single_object std::make_unique<juce::ThreadPool, int>(int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x14e2312) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::OpenGLContext::CachedImage::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:163:28 (BespokeSynth+0x14e2312) #7 juce::OpenGLContext::Attachment::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1039:26 (BespokeSynth+0x14dcf04) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 juce::OpenGLContext::Attachment::attach() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1016:9 (BespokeSynth+0x14dcf04) #9 juce::OpenGLContext::Attachment::componentVisibilityChanged() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:952:17 (BespokeSynth+0x14dd59f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ComponentMovementWatcher::componentVisibilityChanged(juce::Component&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp:120:13 (BespokeSynth+0x11b2127) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Component::sendVisibilityChangeMessage()::$_6::operator()(juce::ComponentListener&) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:84 (BespokeSynth+0x1162ade) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 void juce::ListenerList<juce::ComponentListener, juce::Array<juce::ComponentListener*, juce::DummyCriticalSection, 0> >::callChecked<juce::Component::sendVisibilityChangeMessage()::$_6, juce::Component::BailOutChecker>(juce::Component::BailOutChecker const&, juce::Component::sendVisibilityChangeMessage()::$_6&&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/containers/juce_ListenerList.h:170:13 (BespokeSynth+0x1162ade) BespokeSynth#13 juce::Component::sendVisibilityChangeMessage() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:28 (BespokeSynth+0x1162ade) BespokeSynth#14 juce::Component::setVisible(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:609:13 (BespokeSynth+0x1162446) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 BespokeApplication::MainWindow::MainWindow(juce::String) /home/jn/dev/synth/bespoke/Source/Main.cpp:105:10 (BespokeSynth+0x66dac0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#16 std::__detail::_MakeUniq<BespokeApplication::MainWindow>::__single_object std::make_unique<BespokeApplication::MainWindow, char const (&) [14]>(char const (&) [14]) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x66d45a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 BespokeApplication::initialise(juce::String const&) /home/jn/dev/synth/bespoke/Source/Main.cpp:50:20 (BespokeSynth+0x66d45a) BespokeSynth#18 juce::JUCEApplicationBase::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:297:5 (BespokeSynth+0xf149a8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::JUCEApplication::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/application/juce_Application.cpp:92:30 (BespokeSynth+0x12842e9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:256:16 (BespokeSynth+0xf146f2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) SUMMARY: ThreadSanitizer: data race /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 in IClickable::NotifyMouseMoved(float, float) ==================
Rejected approach: Introducing a ILockable class that contains the mutex variable. This would result in diamond-shaped inheritance graphs sooner or later, which can be resolved by declaring the inheritance as virtual, but that would probably result in slower code than necessary. ================== WARNING: ThreadSanitizer: data race (pid=795426) Read of size 4 at 0x7b6c00000e88 by thread T3 (mutexes: write M0): #0 IClickable::NotifyMouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 (BespokeSynth+0x60c873) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModuleContainer::MouseMoved(float, float) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:182:20 (BespokeSynth+0xa7a6c4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModularSynth::MouseMoved(int, int) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:1288:24 (BespokeSynth+0x6b6d50) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:347:14 (BespokeSynth+0x6772f0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #6 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Previous write of size 4 at 0x7b6c00000e88 by main thread: #0 IClickable::SetPosition(float, float) /home/jn/dev/synth/bespoke/Source/IClickable.h:44:10 (BespokeSynth+0x6b0333) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2421:19 (BespokeSynth+0x6b0333) #2 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) #9 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#11 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#13 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#15 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#16 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#18 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Location is heap block of size 1584 at 0x7b6c00000e00 allocated by main thread: #0 operator new(unsigned long) <null> (BespokeSynth+0x47ef66) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 Amplifier::Create() /home/jn/dev/synth/bespoke/Source/Amplifier.h:40:46 (BespokeSynth+0xa8f6b9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 ModuleFactory::MakeModule(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /home/jn/dev/synth/bespoke/Source/ModuleFactory.cpp:522:17 (BespokeSynth+0xa8b5cd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 ModularSynth::CreateModule(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2524:37 (BespokeSynth+0x6bf7b8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 ModuleContainer::LoadModules(ofxJSONElement const&) /home/jn/dev/synth/bespoke/Source/ModuleContainer.cpp:509:52 (BespokeSynth+0xa7cbb2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 ModularSynth::LoadLayout(ofxJSONElement) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2478:21 (BespokeSynth+0x6bec6b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 ModularSynth::LoadLayoutFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:2409:4 (BespokeSynth+0x6b00dc) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 ModularSynth::Poll() /home/jn/dev/synth/bespoke/Source/ModularSynth.cpp:350:13 (BespokeSynth+0x6aeea4) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:127:14 (BespokeSynth+0x677771) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 non-virtual thunk to MainContentComponent::timerCallback() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp (BespokeSynth+0x677fd0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::Timer::TimerThread::callTimers() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:115:24 (BespokeSynth+0xf2426e) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Timer::TimerThread::CallTimersMessage::messageCallback() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/timers/juce_Timer.cpp:181:27 (BespokeSynth+0xf2404b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)::operator()(int) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:42:62 (BespokeSynth+0xf270d7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 void std::__invoke_impl<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(std::__invoke_other, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf270d7) BespokeSynth#14 std::enable_if<is_invocable_r_v<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>, void>::type std::__invoke_r<void, juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int>(juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf26fb0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::'lambda'(int)>::_M_invoke(std::_Any_data const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf26fb0) BespokeSynth#16 std::function<void (int)>::operator()(int) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf209be) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3::operator()() const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:359:80 (BespokeSynth+0xf209be) BespokeSynth#18 void std::__invoke_impl<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(std::__invoke_other, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (BespokeSynth+0xf209be) BespokeSynth#19 std::enable_if<is_invocable_r_v<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>, void>::type std::__invoke_r<void, juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&>(juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (BespokeSynth+0xf209be) BespokeSynth#20 std::_Function_handler<void (), juce::LinuxEventLoop::registerFdCallback(int, std::function<void (int)>, short)::$_3>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (BespokeSynth+0xf209be) BespokeSynth#21 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (BespokeSynth+0xf218c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 juce::InternalRunLoop::dispatchPendingEvents() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:182:13 (BespokeSynth+0xf218c9) BespokeSynth#23 juce::dispatchNextMessageOnSystemQueue(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:342:26 (BespokeSynth+0xf15ab7) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#24 juce::MessageManager::runDispatchLoop() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:109:19 (BespokeSynth+0xf1473d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#25 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262:40 (BespokeSynth+0xf1473d) BespokeSynth#26 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#27 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) Mutex M0 (0x7b8000056ce0) created at: #0 pthread_mutex_lock <null> (BespokeSynth+0x41cb4a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 __gthread_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:749:12 (BespokeSynth+0x6772a5) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 __gthread_recursive_mutex_lock(pthread_mutex_t*) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/gthr-default.h:811:10 (BespokeSynth+0x6772a5) #3 std::recursive_mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/mutex:108:17 (BespokeSynth+0x6772a5) #4 ModularSynth::LockRender(bool) /home/jn/dev/synth/bespoke/Source/ModularSynth.h:226:22 (BespokeSynth+0x6772a5) #5 MainContentComponent::render() /home/jn/dev/synth/bespoke/Source/MainComponent.cpp:343:14 (BespokeSynth+0x6772a5) #6 juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp:61:5 (BespokeSynth+0x14c8c72) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #7 non-virtual thunk to juce::OpenGLAppComponent::renderOpenGL() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp (BespokeSynth+0x14c8c72) #8 juce::OpenGLContext::CachedImage::renderFrame() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:326:31 (BespokeSynth+0x14e1113) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #9 juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:583:19 (BespokeSynth+0x14df030) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 non-virtual thunk to juce::OpenGLContext::CachedImage::runJob() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp (BespokeSynth+0x14df19d) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::ThreadPool::runNextJob(juce::ThreadPool::ThreadPoolThread&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384:27 (BespokeSynth+0xe2e78b) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 juce::ThreadPool::ThreadPoolThread::run() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36:24 (BespokeSynth+0xeaedd9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#13 juce::Thread::threadEntryPoint() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96:13 (BespokeSynth+0xe2a2c6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#14 juce::juce_threadEntryPoint(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118:38 (BespokeSynth+0xe6c3c9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 juce::threadEntryProc(void*) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:865:9 (BespokeSynth+0xe6c3c9) Thread T3 'Pool' (tid=795985, running) created by main thread at: #0 pthread_create <null> (BespokeSynth+0x3fefbd) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #1 juce::Thread::launchThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:919:9 (BespokeSynth+0xe2a915) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #2 juce::Thread::startThread() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_Thread.cpp:130:9 (BespokeSynth+0xe2a7e6) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #3 juce::ThreadPool::createThreads(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:117:12 (BespokeSynth+0xe2c21f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #4 juce::ThreadPool::ThreadPool(int, unsigned long) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:97:5 (BespokeSynth+0xe2bf05) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #5 std::__detail::_MakeUniq<juce::ThreadPool>::__single_object std::make_unique<juce::ThreadPool, int>(int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x14e2312) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #6 juce::OpenGLContext::CachedImage::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:163:28 (BespokeSynth+0x14e2312) #7 juce::OpenGLContext::Attachment::start() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1039:26 (BespokeSynth+0x14dcf04) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) #8 juce::OpenGLContext::Attachment::attach() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:1016:9 (BespokeSynth+0x14dcf04) #9 juce::OpenGLContext::Attachment::componentVisibilityChanged() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:952:17 (BespokeSynth+0x14dd59f) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#10 juce::ComponentMovementWatcher::componentVisibilityChanged(juce::Component&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp:120:13 (BespokeSynth+0x11b2127) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#11 juce::Component::sendVisibilityChangeMessage()::$_6::operator()(juce::ComponentListener&) const /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:84 (BespokeSynth+0x1162ade) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#12 void juce::ListenerList<juce::ComponentListener, juce::Array<juce::ComponentListener*, juce::DummyCriticalSection, 0> >::callChecked<juce::Component::sendVisibilityChangeMessage()::$_6, juce::Component::BailOutChecker>(juce::Component::BailOutChecker const&, juce::Component::sendVisibilityChangeMessage()::$_6&&) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_core/containers/juce_ListenerList.h:170:13 (BespokeSynth+0x1162ade) BespokeSynth#13 juce::Component::sendVisibilityChangeMessage() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:631:28 (BespokeSynth+0x1162ade) BespokeSynth#14 juce::Component::setVisible(bool) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:609:13 (BespokeSynth+0x1162446) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#15 BespokeApplication::MainWindow::MainWindow(juce::String) /home/jn/dev/synth/bespoke/Source/Main.cpp:105:10 (BespokeSynth+0x66dac0) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#16 std::__detail::_MakeUniq<BespokeApplication::MainWindow>::__single_object std::make_unique<BespokeApplication::MainWindow, char const (&) [14]>(char const (&) [14]) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34 (BespokeSynth+0x66d45a) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#17 BespokeApplication::initialise(juce::String const&) /home/jn/dev/synth/bespoke/Source/Main.cpp:50:20 (BespokeSynth+0x66d45a) BespokeSynth#18 juce::JUCEApplicationBase::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:297:5 (BespokeSynth+0xf149a8) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#19 juce::JUCEApplication::initialiseApp() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_gui_basics/application/juce_Application.cpp:92:30 (BespokeSynth+0x12842e9) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#20 juce::JUCEApplicationBase::main() /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:256:16 (BespokeSynth+0xf146f2) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#21 juce::JUCEApplicationBase::main(int, char const**) /home/jn/dev/synth/bespoke/libs/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240:16 (BespokeSynth+0xf14660) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) BespokeSynth#22 main /home/jn/dev/synth/bespoke/Source/Main.cpp:134:1 (BespokeSynth+0x66d0da) (BuildId: bf42b258c9ff339def937105d642b7193dbc302b) SUMMARY: ThreadSanitizer: data race /home/jn/dev/synth/bespoke/Source/IClickable.cpp:74:26 in IClickable::NotifyMouseMoved(float, float) ==================
Hi Ryan,
I am trying to test the OSC into another app, but as soon as I made the node, playing with slide, it crashes the app. This happens not once, but always. I have not managed to make it to work to interface with TouchOSC or Blender AddRoutes OSC.
What's the OSC address it is sending I wonder?
The text was updated successfully, but these errors were encountered: