Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Crash when creating a Command Template for a renamed OSC module #26

Closed
tommag opened this issue Jun 18, 2018 · 2 comments
Closed

Crash when creating a Command Template for a renamed OSC module #26

tommag opened this issue Jun 18, 2018 · 2 comments

Comments

@tommag
Copy link
Collaborator

tommag commented Jun 18, 2018

Hello,
I get a segfault crash when I try to create a Command Template for OSC modules that have been renamed.

Steps to reproduce :

  • create an OSC module
  • rename it
  • create a Command Template

It only happens for OSC modules, and only after they have been renamed.

Backtrace :

#0 0x000055555572f930 in juce::HeapBlock<CommandDefinition*, false>::operator CommandDefinition** (this=0x668)
at /home/tom/JUCE/modules/juce_core/memory/juce_HeapBlock.h:155
#1 0x00005555557321a0 in juce::OwnedArray<CommandDefinition, juce::DummyCriticalSection>::begin (this=0x668)
at /home/tom/JUCE/modules/juce_core/containers/juce_OwnedArray.h:218
#2 0x0000555555956ebd in Module::getCommands (this=0x0, includeTemplateCommands=false)
at ../../Source/Module/Module.cpp:95
#3 0x000055555572d6a3 in CommandTemplate::CommandTemplate (this=0x555556d59170, params=...)
at ../../Source/Common/Command/Template/CommandTemplate.cpp:47
#4 0x0000555555731750 in CommandTemplate::create (params=...)
at ../../Source/Common/Command/Template/CommandTemplate.h:60
#5 0x0000555555733487 in std::_Function_handler<CommandTemplate* (juce::var), CommandTemplate* ()(juce::var)>::_M_invoke(std::_Any_data const&, juce::var&&) (__functor=..., __args#0=...)
at /usr/include/c++/8.1.1/bits/std_function.h:282
#6 0x0000555555723fff in std::function<CommandTemplate
(juce::var)>::operator()(juce::var) const (
this=0x555556d305f0, __args#0=...) at /usr/include/c++/8.1.1/bits/std_function.h:687
#7 0x0000555555722b9d in Factory::create (this=0x555556d136d8, type=...)
at ../../../JUCE Modules/juce_organicui/manager/Factory.h:122
#8 0x000055555572142e in Factory::createFromMenuResult (this=0x555556d136d8, result=1)
at ../../../JUCE Modules/juce_organicui/manager/Factory.h:113
#9 0x000055555571fd8a in Factory::showCreateMenu (this=0x555556d136d8)
at ../../../JUCE Modules/juce_organicui/manager/Factory.h:98
#10 0x000055555571cf22 in BaseManagerUI<CommandTemplateManager, CommandTemplate, BaseItemUI >::showMenuAndAddItem (this=0x555556d324f0, isFromAddButton=true, mouseDownPos=...)
at ../../../JUCE Modules/juce_organicui/manager/ui/BaseManagerUI.h:524
#11 0x000055555571de04 in BaseManagerUI<CommandTemplateManager, CommandTemplate, BaseItemUI >::buttonClicked (this=0x555556d324f0, b=0x555556d36f50)
at ../../../JUCE Modules/juce_organicui/manager/ui/BaseManagerUI.h:743
#12 0x0000555555dbcfd9 in juce::Button::<lambda(juce::Button::Listener&)>::operator()(juce::Button::Listener &) const (__closure=0x7fffffffd790, l=...) at /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:402
#13 0x0000555555e5857a in juce::ListenerList<juce::Button::Listener, juce::Array<juce::Button::Listener*, juce::DummyCriticalSection, 0> >::callChecked<juce::Button::sendClickMessage(const juce::ModifierKeys&)::<lambda(juce::Button::Listener&)>, juce::Component::BailOutChecker>(const juce::Component::BailOutChecker &, juce::Button::<lambda(juce::Button::Listener&)> &&) (this=0x555556d37098, bailOutChecker=..., callback=...)
at /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:153
#14 0x0000555555dbd0dc in juce::Button::sendClickMessage (this=0x555556d36f50, modifiers=...)
at /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:402
#15 0x0000555555dbce86 in juce::Button::internalClickCallback (this=0x555556d36f50, modifiers=...)
at /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:351
#16 0x0000555555dbd526 in juce::Button::mouseUp (this=0x555556d36f50, e=...)
at /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:471
#17 0x0000555555db19d8 in juce::Component::internalMouseUp (this=0x555556d36f50, source=..., relativePos=...,
time=..., oldModifiers=..., pressure=0, orientation=0, rotation=0, tiltX=0, tiltY=0)
at /home/tom/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2383
#18 0x0000555555e691de in juce::MouseInputSourceInternal::sendMouseUp (this=0x555556b04c50, comp=...,
screenPos=..., time=..., oldMods=...)
at /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:155
---Type to continue, or q to quit---
#19 0x0000555555e69660 in juce::MouseInputSourceInternal::setButtons (this=0x555556b04c50, screenPos=...,
time=..., newButtonState=...) at /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:197
#20 0x0000555555e6a265 in juce::MouseInputSourceInternal::handleEvent (this=0x555556b04c50, newPeer=...,
positionWithinPeer=..., time=..., newMods=..., newPressure=0, newOrientation=0, pen=...)
at /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:331
#21 0x0000555555db4a09 in juce::MouseInputSource::handleEvent (this=0x7fffffffdc30, peer=..., pos=...,
time=1529315697282, mods=..., pressure=0, orientation=0, penDetails=...)
at /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:631
#22 0x0000555555e42232 in juce::ComponentPeer::handleMouseEvent (this=0x555556b3e0f0,
type=juce::MouseInputSource::mouse, pos=..., newMods=..., newPressure=0, newOrientation=0,
time=1529315697282, pen=..., touchIndex=0)
at /home/tom/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:88
#23 0x0000555555ea9ceb in juce::LinuxComponentPeer::handleButtonReleaseEvent (this=0x555556b3e0f0,
buttonRelEvent=...) at /home/tom/JUCE/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp:2292
#24 0x0000555555ea8e76 in juce::LinuxComponentPeer::handleWindowMessage (this=0x555556b3e0f0, event=...)
at /home/tom/JUCE/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp:2018
#25 0x0000555555e54bb5 in juce::WindowingHelpers::windowMessageReceive (event=...)
at /home/tom/JUCE/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp:3775
#26 0x0000555555e52c6e in juce::XWindowSystem::<lambda(int)>::operator()(int) const (__closure=0x555556b61fc0)
at /home/tom/JUCE/modules/juce_gui_basics/native/juce_linux_X11.cpp:217
#27 0x0000555555e63fd4 in juce::LinuxEventLoop::CallbackFunction<juce::XWindowSystem::initialiseXDisplay()::<lambda(int)> >::operator()(int) (this=0x555556b61fb0, fd=6)
at /home/tom/JUCE/modules/juce_events/native/juce_linux_EventLoop.h:42
#28 0x0000555555cbcd13 in juce::InternalMessageQueue::dispatchNextEvent (this=0x555556b03e50)
at /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:121
#29 0x0000555555cb9c90 in juce::MessageManager::dispatchNextMessageOnSystemQueue (
returnIfNoPendingMessages=false) at /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:237
#30 0x0000555555cb5b8b in juce::MessageManager::runDispatchLoop (this=0x555556b03de0)
at /home/tom/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:128
#31 0x0000555555cb4fee in juce::JUCEApplicationBase::main ()
at /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262
#32 0x0000555555cb4ef0 in juce::JUCEApplicationBase::main (argc=1, argv=0x7fffffffe058)
at /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240
#33 0x0000555555a97e23 in main (argc=1, argv=0x7fffffffe058) at ../../Source/Main.h:36

@tommag
Copy link
Collaborator Author

tommag commented Jun 18, 2018

As a workaround : Chataigne doesn't crash if the renamed OSC module is loaded from file.
e.g. create OSC module ; rename it ; save file ; restart Chataigne ; load file ; create command template does not crash.

@tommag
Copy link
Collaborator Author

tommag commented Jun 18, 2018

👍

tommag added a commit that referenced this issue Jul 2, 2020
ASan trace :
==7333==ERROR: AddressSanitizer: heap-use-after-free on address 0x6060002130e0 at pc 0x55f838c5c954 bp 0x7ffd4f386760 sp 0x7ffd4f386750
READ of size 8 at 0x6060002130e0 thread T0
../servus/avahi/servus.h:339: Resolver error: Timeout reached
    #0 0x55f838c5c953 in juce::Array<CommandTemplate::TemplateListener*, juce::DummyCriticalSection, 0>::removeFirstMatchingValue(CommandTemplate::TemplateListener*) /home/tom/JUCE/modules/juce_core/containers/juce_Array.h:841
    #1 0x55f838c5c953 in juce::ListenerList<CommandTemplate::TemplateListener, juce::Array<CommandTemplate::TemplateListener*, juce::DummyCriticalSection, 0> >::remove(CommandTemplate::TemplateListener*) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:98
    #2 0x55f838c5c953 in CommandTemplate::removeCommandTemplateListener(CommandTemplate::TemplateListener*) ../../Source/Common/Command/Template/CommandTemplate.h:63
    #3 0x55f838c5c953 in BaseCommand::linkToTemplate(CommandTemplate*) ../../Source/Common/Command/BaseCommand.cpp:116
    #4 0x55f838c6531a in BaseCommand::~BaseCommand() ../../Source/Common/Command/BaseCommand.cpp:34
    #5 0x55f8393235c0 in MIDICommand::~MIDICommand() ../../Source/Module/modules/midi/commands/MIDICommands.cpp:21
    #6 0x55f83932395e in MIDINoteAndCCCommand::~MIDINoteAndCCCommand() ../../Source/Module/modules/midi/commands/MIDICommands.cpp:83
    #7 0x55f839323a48 in MIDINoteAndCCCommand::~MIDINoteAndCCCommand() ../../Source/Module/modules/midi/commands/MIDICommands.cpp:86
    #8 0x55f838c7a97a in std::default_delete<BaseCommand>::operator()(BaseCommand*) const /usr/include/c++/10.1.0/bits/unique_ptr.h:84
    #9 0x55f838c7a97a in std::__uniq_ptr_impl<BaseCommand, std::default_delete<BaseCommand> >::reset(BaseCommand*) /usr/include/c++/10.1.0/bits/unique_ptr.h:181
    #10 0x55f838c7a97a in std::unique_ptr<BaseCommand, std::default_delete<BaseCommand> >::reset(BaseCommand*) /usr/include/c++/10.1.0/bits/unique_ptr.h:455
    #11 0x55f838c7a97a in BaseCommandHandler::setCommand(CommandDefinition*) ../../Source/Common/Command/BaseCommandHandler.cpp:71
    #12 0x55f838c78483 in BaseCommandHandler::commandTemplateDestroyed() ../../Source/Common/Command/BaseCommandHandler.cpp:205
    #13 0x55f838c6086d in juce::ListenerList<BaseCommand::CommandListener, juce::Array<BaseCommand::CommandListener*, juce::DummyCriticalSection, 0> >::call(void (BaseCommand::CommandListener::*)())::{lambda(BaseCommand::CommandListener&)#1}::operator()(BaseCommand::CommandListener&) const /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:238
    #14 0x55f838c6086d in void juce::ListenerList<BaseCommand::CommandListener, juce::Array<BaseCommand::CommandListener*, juce::DummyCriticalSection, 0> >::call<juce::ListenerList<BaseCommand::CommandListener, juce::Array<BaseCommand::CommandListener*, juce::DummyCriticalSection, 0> >::call(void (BaseCommand::CommandListener::*)())::{lambda(BaseCommand::CommandListener&)#1}>(juce::ListenerList<BaseCommand::CommandListener, juce::Array<BaseCommand::CommandListener*, juce::DummyCriticalSection, 0> >::call(void (BaseCommand::CommandListener::*)())::{lambda(BaseCommand::CommandListener&)#1}&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:124
    #15 0x55f838c6086d in juce::ListenerList<BaseCommand::CommandListener, juce::Array<BaseCommand::CommandListener*, juce::DummyCriticalSection, 0> >::call(void (BaseCommand::CommandListener::*)()) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:238
    #16 0x55f838c6086d in BaseCommand::inspectableDestroyed(Inspectable*) ../../Source/Common/Command/BaseCommand.cpp:330
    #17 0x55f83aa8e858 in void juce::ListenerList<Inspectable::InspectableListener, juce::Array<Inspectable::InspectableListener*, juce::DummyCriticalSection, 0> >::call<Inspectable*, Inspectable*>(void (Inspectable::InspectableListener::*)(Inspectable*), Inspectable*&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:266
    #18 0x55f83aa8e858 in Inspectable::~Inspectable() /home/tom/JUCE/modules/juce_organicui/inspectable/Inspectable.cpp:26
    #19 0x55f83a6906f7 in ControllableContainer::~ControllableContainer() /home/tom/JUCE/modules/juce_organicui/controllable/ControllableContainer.cpp:64
    #20 0x55f83aa01a49 in BaseItem::~BaseItem() /home/tom/JUCE/modules/juce_organicui/controllable/ControllableContainer.h:306
    #21 0x55f838c28c84 in CommandTemplate::~CommandTemplate() ../../Source/Common/Command/Template/CommandTemplate.cpp:112
    #22 0x55f838c28f70 in CommandTemplate::~CommandTemplate() ../../Source/Common/Command/Template/CommandTemplate.cpp:115
    #23 0x55f838c15944 in BaseManager<CommandTemplate>::removeItem(CommandTemplate*, bool, bool) (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x9cc944)
    #24 0x55f838c441b4 in BaseManager<CommandTemplate>::RemoveItemAction::perform() /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:1127
    #25 0x55f839d50c8d in juce::UndoManager::perform(juce::UndoableAction*) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:124
    #26 0x55f839d51c0b in juce::UndoManager::perform(juce::UndoableAction*, juce::String const&) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:100
    #27 0x55f83aa3820b in UndoMaster::performActions(juce::String const&, juce::Array<juce::UndoableAction*, juce::DummyCriticalSection, 0>) /home/tom/JUCE/modules/juce_organicui/undo/UndoMaster.cpp:37
    #28 0x55f838c15612 in BaseManager<CommandTemplate>::removeItem(CommandTemplate*, bool, bool) (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x9cc612)
    #29 0x55f838c40344 in BaseManager<CommandTemplate>::askForRemoveBaseItem(BaseItem*) /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:648
    #30 0x55f83aa524a1 in void juce::ListenerList<BaseItemListener, juce::Array<BaseItemListener*, juce::DummyCriticalSection, 0> >::call<BaseItem*, BaseItem*>(void (BaseItemListener::*)(BaseItem*), BaseItem*&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:266
    #31 0x55f83aa524a1 in BaseItem::remove() /home/tom/JUCE/modules/juce_organicui/manager/BaseItem.cpp:121
    #32 0x55f83aacb45f in BaseItemEditor::buttonClicked(juce::Button*) /home/tom/JUCE/modules/juce_organicui/manager/ui/BaseItemEditor.cpp:99
    #33 0x55f83a1927a5 in operator() /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #34 0x55f83a1927a5 in callChecked<juce::Button::sendClickMessage(const juce::ModifierKeys&)::<lambda(juce::Button::Listener&)>, juce::Component::BailOutChecker> /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:153
    #35 0x55f83a1927a5 in juce::Button::sendClickMessage(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #36 0x55f83a219475 in juce::Button::internalClickCallback(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:350
    #37 0x55f83a28fbce in juce::Button::mouseUp(juce::MouseEvent const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:470
    #38 0x55f83a285da1 in juce::Component::internalMouseUp(juce::MouseInputSource, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, float, float, float) /home/tom/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2444
    #39 0x55f83a489438 in juce::MouseInputSourceInternal::sendMouseUp(juce::Component&, juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:154
    #40 0x55f83a489438 in juce::MouseInputSourceInternal::setButtons(juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:196
    #41 0x55f83a2f5f0a in juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer&, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, juce::PenDetails) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:333
    #42 0x55f83a2f5f0a in juce::MouseInputSource::handleEvent(juce::ComponentPeer&, juce::Point<float>, long long, juce::ModifierKeys, float, float, juce::PenDetails const&) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:633
    #43 0x55f83a2f6363 in juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType, juce::Point<float>, juce::ModifierKeys, float, float, long long, juce::PenDetails, int) /home/tom/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:87
    #44 0x55f83a2ff420 in juce::XWindowSystem::handleButtonReleaseEvent(juce::LinuxComponentPeer<unsigned long>*, XButtonEvent const&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3105
    #45 0x55f83a301bb6 in juce::XWindowSystem::handleWindowMessage(juce::LinuxComponentPeer<unsigned long>*, _XEvent&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2839
    #46 0x55f83a3024c8 in windowMessageReceive /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3359
    #47 0x55f83a139cfb in operator() /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2768
    #48 0x55f83a139cfb in __invoke_impl<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:60
    #49 0x55f83a139cfb in __invoke_r<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:110
    #50 0x55f83a139cfb in _M_invoke /usr/include/c++/10.1.0/bits/std_function.h:291
    #51 0x55f839e6f4e4 in std::function<void (int)>::operator()(int) const /usr/include/c++/10.1.0/bits/std_function.h:622
    #52 0x55f839e6f4e4 in juce::InternalRunLoop::dispatchPendingEvents() /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:186
    #53 0x55f839e62b43 in juce::MessageManager::dispatchNextMessageOnSystemQueue(bool) /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:300
    #54 0x55f839e62e0f in juce::MessageManager::runDispatchLoop() /home/tom/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:128
    #55 0x55f839e63694 in juce::JUCEApplicationBase::main() /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262
    #56 0x55f839e637ea in juce::JUCEApplicationBase::main(int, char const**) /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240
    #57 0x55f83984589b in main ../../Source/Main.h:35
    #58 0x7f16c2374001 in __libc_start_main (/usr/lib/libc.so.6+0x27001)
    #59 0x55f838b9370d in _start (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x94a70d)

0x6060002130e0 is located 0 bytes inside of 64-byte region [0x6060002130e0,0x606000213120)
freed by thread T0 here:
    #0 0x7f16c34100e9 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cpp:123
    #1 0x55f838c28b55 in juce::HeapBlock<CommandTemplate::TemplateListener*, false>::~HeapBlock() /home/tom/JUCE/modules/juce_core/memory/juce_HeapBlock.h:136
    #2 0x55f838c28b55 in juce::ArrayBase<CommandTemplate::TemplateListener*, juce::DummyCriticalSection>::~ArrayBase() /home/tom/JUCE/modules/juce_core/containers/juce_ArrayBase.h:56
    #3 0x55f838c28b55 in juce::Array<CommandTemplate::TemplateListener*, juce::DummyCriticalSection, 0>::~Array() /home/tom/JUCE/modules/juce_core/containers/juce_Array.h:132
    #4 0x55f838c28b55 in juce::ListenerList<CommandTemplate::TemplateListener, juce::Array<CommandTemplate::TemplateListener*, juce::DummyCriticalSection, 0> >::~ListenerList() /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:76
    #5 0x55f838c28b55 in CommandTemplate::~CommandTemplate() ../../Source/Common/Command/Template/CommandTemplate.cpp:112
    #6 0x55f838c28f70 in CommandTemplate::~CommandTemplate() ../../Source/Common/Command/Template/CommandTemplate.cpp:115
    #7 0x55f838c15944 in BaseManager<CommandTemplate>::removeItem(CommandTemplate*, bool, bool) (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x9cc944)
    #8 0x55f838c441b4 in BaseManager<CommandTemplate>::RemoveItemAction::perform() /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:1127
    #9 0x55f839d50c8d in juce::UndoManager::perform(juce::UndoableAction*) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:124
    #10 0x55f839d51c0b in juce::UndoManager::perform(juce::UndoableAction*, juce::String const&) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:100
    #11 0x55f83aa3820b in UndoMaster::performActions(juce::String const&, juce::Array<juce::UndoableAction*, juce::DummyCriticalSection, 0>) /home/tom/JUCE/modules/juce_organicui/undo/UndoMaster.cpp:37
    #12 0x55f838c15612 in BaseManager<CommandTemplate>::removeItem(CommandTemplate*, bool, bool) (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x9cc612)
    #13 0x55f838c40344 in BaseManager<CommandTemplate>::askForRemoveBaseItem(BaseItem*) /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:648
    #14 0x55f83aa524a1 in void juce::ListenerList<BaseItemListener, juce::Array<BaseItemListener*, juce::DummyCriticalSection, 0> >::call<BaseItem*, BaseItem*>(void (BaseItemListener::*)(BaseItem*), BaseItem*&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:266
    #15 0x55f83aa524a1 in BaseItem::remove() /home/tom/JUCE/modules/juce_organicui/manager/BaseItem.cpp:121
    #16 0x55f83aacb45f in BaseItemEditor::buttonClicked(juce::Button*) /home/tom/JUCE/modules/juce_organicui/manager/ui/BaseItemEditor.cpp:99
    #17 0x55f83a1927a5 in operator() /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #18 0x55f83a1927a5 in callChecked<juce::Button::sendClickMessage(const juce::ModifierKeys&)::<lambda(juce::Button::Listener&)>, juce::Component::BailOutChecker> /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:153
    #19 0x55f83a1927a5 in juce::Button::sendClickMessage(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #20 0x55f83a219475 in juce::Button::internalClickCallback(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:350
    #21 0x55f83a28fbce in juce::Button::mouseUp(juce::MouseEvent const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:470
    #22 0x55f83a285da1 in juce::Component::internalMouseUp(juce::MouseInputSource, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, float, float, float) /home/tom/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2444
    #23 0x55f83a489438 in juce::MouseInputSourceInternal::sendMouseUp(juce::Component&, juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:154
    #24 0x55f83a489438 in juce::MouseInputSourceInternal::setButtons(juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:196
    #25 0x55f83a2f5f0a in juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer&, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, juce::PenDetails) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:333
    #26 0x55f83a2f5f0a in juce::MouseInputSource::handleEvent(juce::ComponentPeer&, juce::Point<float>, long long, juce::ModifierKeys, float, float, juce::PenDetails const&) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:633
    #27 0x55f83a2f6363 in juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType, juce::Point<float>, juce::ModifierKeys, float, float, long long, juce::PenDetails, int) /home/tom/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:87
    #28 0x55f83a2ff420 in juce::XWindowSystem::handleButtonReleaseEvent(juce::LinuxComponentPeer<unsigned long>*, XButtonEvent const&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3105
    #29 0x55f83a301bb6 in juce::XWindowSystem::handleWindowMessage(juce::LinuxComponentPeer<unsigned long>*, _XEvent&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2839
    #30 0x55f83a3024c8 in windowMessageReceive /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3359
    #31 0x55f83a139cfb in operator() /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2768
    #32 0x55f83a139cfb in __invoke_impl<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:60
    #33 0x55f83a139cfb in __invoke_r<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:110
    #34 0x55f83a139cfb in _M_invoke /usr/include/c++/10.1.0/bits/std_function.h:291
    #35 0x55f839e6f4e4 in std::function<void (int)>::operator()(int) const /usr/include/c++/10.1.0/bits/std_function.h:622
    #36 0x55f839e6f4e4 in juce::InternalRunLoop::dispatchPendingEvents() /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:186
    #37 0x55f839e62b43 in juce::MessageManager::dispatchNextMessageOnSystemQueue(bool) /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:300
    #38 0x55f839e62e0f in juce::MessageManager::runDispatchLoop() /home/tom/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:128
    #39 0x55f839e63694 in juce::JUCEApplicationBase::main() /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262
    #40 0x55f839e637ea in juce::JUCEApplicationBase::main(int, char const**) /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240
    #41 0x55f83984589b in main ../../Source/Main.h:35
    #42 0x7f16c2374001 in __libc_start_main (/usr/lib/libc.so.6+0x27001)
tommag added a commit that referenced this issue Jul 2, 2020
ASan trace :
==8825==ERROR: AddressSanitizer: heap-use-after-free on address 0x6060001e04a0 at pc 0x557dffa736be bp 0x7fff7fc5b510 sp 0x7fff7fc5b500
READ of size 8 at 0x6060001e04a0 thread T0
    #0 0x557dffa736bd in juce::Array<Module::ModuleListener*, juce::DummyCriticalSection, 0>::removeFirstMatchingValue(Module::ModuleListener*) /home/tom/JUCE/modules/juce_core/containers/juce_Array.h:841
    #1 0x557dffa736bd in juce::ListenerList<Module::ModuleListener, juce::Array<Module::ModuleListener*, juce::DummyCriticalSection, 0> >::remove(Module::ModuleListener*) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:98
    #2 0x557dffa736bd in Module::removeModuleListener(Module::ModuleListener*) ../../Source/Module/ui/../Module.h:151
    #3 0x557dffa736bd in ModuleEditor::~ModuleEditor() ../../Source/Module/ui/ModuleEditor.cpp:31
    #4 0x557dffa73b32 in ModuleEditor::~ModuleEditor() ../../Source/Module/ui/ModuleEditor.cpp:32
    #5 0x557e00f0ed31 in std::default_delete<InspectableEditor>::operator()(InspectableEditor*) const /usr/include/c++/10.1.0/bits/unique_ptr.h:84
    #6 0x557e00f0ed31 in std::__uniq_ptr_impl<InspectableEditor, std::default_delete<InspectableEditor> >::reset(InspectableEditor*) /usr/include/c++/10.1.0/bits/unique_ptr.h:181
    #7 0x557e00f0ed31 in std::unique_ptr<InspectableEditor, std::default_delete<InspectableEditor> >::reset(InspectableEditor*) /usr/include/c++/10.1.0/bits/unique_ptr.h:455
    #8 0x557e00f0ed31 in std::unique_ptr<InspectableEditor, std::default_delete<InspectableEditor> >::operator=(decltype(nullptr)) /usr/include/c++/10.1.0/bits/unique_ptr.h:396
    #9 0x557e00f0ed31 in Inspector::setCurrentInspectable(juce::WeakReference<Inspectable, juce::ReferenceCountedObject>, bool) /home/tom/JUCE/modules/juce_organicui/inspectable/ui/Inspector.cpp:97
    #10 0x557e00f0f8ef in Inspector::inspectableDestroyed(Inspectable*) /home/tom/JUCE/modules/juce_organicui/inspectable/ui/Inspector.cpp:123
    #11 0x557e00f32950 in void juce::ListenerList<Inspectable::InspectableListener, juce::Array<Inspectable::InspectableListener*, juce::DummyCriticalSection, 0> >::call<Inspectable*, Inspectable*>(void (Inspectable::InspectableListener::*)(Inspectable*), Inspectable*&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:266
    #12 0x557e00f32950 in Inspectable::~Inspectable() /home/tom/JUCE/modules/juce_organicui/inspectable/Inspectable.cpp:26
    #13 0x557e00b347ef in ControllableContainer::~ControllableContainer() /home/tom/JUCE/modules/juce_organicui/controllable/ControllableContainer.cpp:64
    #14 0x557e00ea5b41 in BaseItem::~BaseItem() /home/tom/JUCE/modules/juce_organicui/controllable/ControllableContainer.h:306
    #15 0x557dffabcc9c in Module::~Module() ../../Source/Module/Module.cpp:76
    #16 0x557dff8ea38b in OSCModule::~OSCModule() ../../Source/Module/modules/osc/OSCModule.cpp:94
    #17 0x557dff85fdb0 in CustomOSCModule::~CustomOSCModule() ../../Source/Module/modules/osc/custom/CustomOSCModule.h:20
    #18 0x557dff85fdb0 in CustomOSCModule::~CustomOSCModule() ../../Source/Module/modules/osc/custom/CustomOSCModule.h:20
    #19 0x557dffa93f3e in BaseManager<Module>::removeItem(Module*, bool, bool) /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:582
    #20 0x557dffafe530 in BaseManager<Module>::RemoveItemAction::perform() /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:1127
    #21 0x557e001f4d85 in juce::UndoManager::perform(juce::UndoableAction*) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:124
    #22 0x557e001f5d03 in juce::UndoManager::perform(juce::UndoableAction*, juce::String const&) /home/tom/JUCE/modules/juce_data_structures/undomanager/juce_UndoManager.cpp:100
    #23 0x557e00edc303 in UndoMaster::performActions(juce::String const&, juce::Array<juce::UndoableAction*, juce::DummyCriticalSection, 0>) /home/tom/JUCE/modules/juce_organicui/undo/UndoMaster.cpp:37
    #24 0x557dffa93c0c in BaseManager<Module>::removeItem(Module*, bool, bool) /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:559
    #25 0x557dffafaadc in BaseManager<Module>::askForRemoveBaseItem(BaseItem*) /home/tom/JUCE/modules/juce_organicui/manager/BaseManager.h:648
    #26 0x557e00ef6599 in void juce::ListenerList<BaseItemListener, juce::Array<BaseItemListener*, juce::DummyCriticalSection, 0> >::call<BaseItem*, BaseItem*>(void (BaseItemListener::*)(BaseItem*), BaseItem*&&) /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:266
    #27 0x557e00ef6599 in BaseItem::remove() /home/tom/JUCE/modules/juce_organicui/manager/BaseItem.cpp:121
    #28 0x557dff5dbb3f in BaseItemUI<Module>::buttonClicked(juce::Button*) /home/tom/JUCE/modules/juce_organicui/manager/ui/BaseItemUI.h:363
    #29 0x557e0063689d in operator() /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #30 0x557e0063689d in callChecked<juce::Button::sendClickMessage(const juce::ModifierKeys&)::<lambda(juce::Button::Listener&)>, juce::Component::BailOutChecker> /home/tom/JUCE/modules/juce_core/containers/juce_ListenerList.h:153
    #31 0x557e0063689d in juce::Button::sendClickMessage(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:401
    #32 0x557e006bd56d in juce::Button::internalClickCallback(juce::ModifierKeys const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:350
    #33 0x557e00733cc6 in juce::Button::mouseUp(juce::MouseEvent const&) /home/tom/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:470
    #34 0x557e00729e99 in juce::Component::internalMouseUp(juce::MouseInputSource, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, float, float, float) /home/tom/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2444
    #35 0x557e0092d530 in juce::MouseInputSourceInternal::sendMouseUp(juce::Component&, juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:154
    #36 0x557e0092d530 in juce::MouseInputSourceInternal::setButtons(juce::Point<float>, juce::Time, juce::ModifierKeys) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:196
    #37 0x557e0079a002 in juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer&, juce::Point<float>, juce::Time, juce::ModifierKeys, float, float, juce::PenDetails) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:333
    #38 0x557e0079a002 in juce::MouseInputSource::handleEvent(juce::ComponentPeer&, juce::Point<float>, long long, juce::ModifierKeys, float, float, juce::PenDetails const&) /home/tom/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:633
    #39 0x557e0079a45b in juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType, juce::Point<float>, juce::ModifierKeys, float, float, long long, juce::PenDetails, int) /home/tom/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:87
    #40 0x557e007a3518 in juce::XWindowSystem::handleButtonReleaseEvent(juce::LinuxComponentPeer<unsigned long>*, XButtonEvent const&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3105
    #41 0x557e007a5cae in juce::XWindowSystem::handleWindowMessage(juce::LinuxComponentPeer<unsigned long>*, _XEvent&) const /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2839
    #42 0x557e007a65c0 in windowMessageReceive /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3359
    #43 0x557e005dddf3 in operator() /home/tom/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2768
    #44 0x557e005dddf3 in __invoke_impl<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:60
    #45 0x557e005dddf3 in __invoke_r<void, juce::XWindowSystem::initialiseXDisplay()::<lambda(int)>&, int> /usr/include/c++/10.1.0/bits/invoke.h:110
    #46 0x557e005dddf3 in _M_invoke /usr/include/c++/10.1.0/bits/std_function.h:291
    #47 0x557e003135dc in std::function<void (int)>::operator()(int) const /usr/include/c++/10.1.0/bits/std_function.h:622
    #48 0x557e003135dc in juce::InternalRunLoop::dispatchPendingEvents() /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:186
    #49 0x557e00306c3b in juce::MessageManager::dispatchNextMessageOnSystemQueue(bool) /home/tom/JUCE/modules/juce_events/native/juce_linux_Messaging.cpp:300
    #50 0x557e00306f07 in juce::MessageManager::runDispatchLoop() /home/tom/JUCE/modules/juce_events/messages/juce_MessageManager.cpp:128
    #51 0x557e0030778c in juce::JUCEApplicationBase::main() /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:262
    #52 0x557e003078e2 in juce::JUCEApplicationBase::main(int, char const**) /home/tom/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240
    #53 0x557dffce9993 in main ../../Source/Main.h:35
    #54 0x7f4e50900001 in __libc_start_main (/usr/lib/libc.so.6+0x27001)
    #55 0x557dff03770d in _start (/home/tom/tmp/Chataigne/Chataigne/Builds/LinuxMakefile/build/Chataigne+0x94a70d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant