Macro Access Violation / pointer crash
-
I've been experiencing some weird intermittent crashes, debug symbols (and some help from mr GPT) seem to point to the Macro Control Handler.
> [Inline Frame] Aetheric.exe!juce::ReferenceCountedObjectPtr<juce::WeakReference<hise::Processor,juce::ReferenceCountedObject>::SharedPointer>::operator!=(void *) Line 406 C++ [Inline Frame] Aetheric.exe!juce::WeakReference<hise::Processor,juce::ReferenceCountedObject>::get() Line 102 C++ [Inline Frame] Aetheric.exe!hise::MacroControlBroadcaster::MacroControlledParameterData::getProcessor() Line 72 C++ Aetheric.exe!hise::MacroControlBroadcaster::MacroControlData::getParameterWithProcessorAndIndex(hise::Processor * p, int parameterIndex) Line 271 C++ Aetheric.exe!hise::MacroControlledObject::macroConnectionChanged(int macroIndex, hise::Processor * p, int parameterIndex, bool wasAdded) Line 397 C++ Aetheric.exe!hise::MacroControlBroadcaster::sendMacroConnectionChangeMessage(int macroIndex, hise::Processor * p, int parameterIndex, bool wasAdded, juce::NotificationType n) Line 118 C++ [External Code] [Inline Frame] Aetheric.exe!juce::InternalMessageQueue::dispatchMessage(juce::MessageManager::MessageBase *) Line 198 C++ Aetheric.exe!juce::InternalMessageQueue::dispatchMessages() Line 240 C++ Aetheric.exe!juce::InternalMessageQueue::dispatchNextMessage(bool returnIfNoPendingMessages) Line 124 C++ [Inline Frame] Aetheric.exe!juce::dispatchNextMessageOnSystemQueue(bool) Line 266 C++ [Inline Frame] Aetheric.exe!juce::MessageManager::runDispatchLoop() Line 107 C++ [Inline Frame] Aetheric.exe!juce::JUCEApplicationBase::main() Line 262 C++ Aetheric.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 25 C++ [External Code]
I currently depend on Macros pretty heavily (XY pad with buttons to randomize all of the other UI elements and connect them randomly to macros etc), and I know it's an older implementation.
I'm already using
deferCallbacks
and I've tried putting these on a background worker but they still crashIs there something better I should be switching to? Specifically for Rhapsody instruments (iirc vst doesn't support dynamic Parameter allocation)
Thanks in advance!
-
@iamlamprey is it crashing in HISE?
-
@d-healey Even just assigning a control to a Macro crashes HISE for me lol
-
@iamlamprey latest version of HISE?
-
@d-healey develop's still the latest branch right? if so then yeh
-
@iamlamprey oh actually i think my git might be broken lol there's been quite a few commits and it says im up to date
-
ok latest build still crashing, here's the stack (just regular old macro assignment, not the OP crash):
> HISE Debug.exe!juce::HeapBlock<std::pair<std::pair<juce::Component::SafePointer<juce::Component>,hise::simple_css::Selector>,juce::ReferenceCountedObjectPtr<hise::simple_css::StyleSheet>>,0>::operator std::pair<std::pair<juce::Component::SafePointer<juce::Component>,hise::simple_css::Selector>,juce::ReferenceCountedObjectPtr<hise::simple_css::StyleSheet>> *() Line 182 C++ HISE Debug.exe!juce::ArrayBase<std::pair<std::pair<juce::Component::SafePointer<juce::Component>,hise::simple_css::Selector>,juce::ReferenceCountedObjectPtr<hise::simple_css::StyleSheet>>,juce::DummyCriticalSection>::begin() Line 172 C++ HISE Debug.exe!juce::Array<std::pair<std::pair<juce::Component::SafePointer<juce::Component>,hise::simple_css::Selector>,juce::ReferenceCountedObjectPtr<hise::simple_css::StyleSheet>>,juce::DummyCriticalSection,0>::begin() Line 331 C++ HISE Debug.exe!hise::simple_css::StyleSheet::Collection::getWithAllStates(juce::Component * c, const hise::simple_css::Selector & s) Line 808 C++ HISE Debug.exe!hise::TableFloatingTileBase::refreshComponentForCell(int rowNumber, int columnId, bool __formal, juce::Component * existingComponentToUpdate) Line 1962 C++ HISE Debug.exe!juce::TableListBox::RowComp::update(int newRow, bool isNowSelected) Line 103 C++ HISE Debug.exe!juce::TableListBox::refreshComponentForRow(int rowNumber, bool rowSelected, juce::Component * existingComponentToUpdate) Line 474 C++ HISE Debug.exe!juce::ListBox::RowComponent::update(const int newRow, const bool nowSelected) Line 86 C++ HISE Debug.exe!juce::ListBox::ListViewport::updateContents() Line 397 C++ HISE Debug.exe!juce::ListBox::ListViewport::updateVisibleArea(const bool makeSureItUpdatesContent) Line 360 C++ HISE Debug.exe!juce::ListBox::ListViewport::visibleAreaChanged(const juce::Rectangle<int> & __formal) Line 337 C++ HISE Debug.exe!juce::Viewport::updateVisibleArea() Line 451 C++ HISE Debug.exe!juce::Viewport::componentMovedOrResized(juce::Component & __formal, bool __formal, bool __formal) Line 196 C++ HISE Debug.exe!juce::Component::sendMovedResizedMessages::__l21::<lambda_1>::operator()(juce::ComponentListener & l) Line 1248 C++ HISE Debug.exe!juce::ListenerList<juce::ComponentListener,juce::Array<juce::ComponentListener *,juce::DummyCriticalSection,0>>::callChecked<`juce::Component::sendMovedResizedMessages'::`21'::<lambda_1>,juce::Component::BailOutChecker>(const juce::Component::BailOutChecker & bailOutChecker, juce::Component::sendMovedResizedMessages::__l21::<lambda_1> && callback) Line 153 C++ HISE Debug.exe!juce::Component::sendMovedResizedMessages(bool wasMoved, bool wasResized) Line 1245 C++ HISE Debug.exe!juce::Component::sendMovedResizedMessagesIfPending() Line 1208 C++ HISE Debug.exe!juce::Component::setBounds(int x, int y, int w, int h) Line 1194 C++ HISE Debug.exe!juce::ListBox::ListViewport::updateVisibleArea(const bool makeSureItUpdatesContent) Line 358 C++ HISE Debug.exe!juce::ListBox::updateContent() Line 625 C++ HISE Debug.exe!hise::TableFloatingTileBase::updateContent() Line 1723 C++ HISE Debug.exe!hise::FrontendMacroPanel::macroConnectionChanged(int macroIndex, hise::Processor * p, int parameterIndex, bool wasAdded) Line 1333 C++ HISE Debug.exe!hise::MacroControlBroadcaster::sendMacroConnectionChangeMessage(int macroIndex, hise::Processor * p, int parameterIndex, bool wasAdded, juce::NotificationType n) Line 118 C++ HISE Debug.exe!hise::MacroControlBroadcaster::MacroControlData::addParameter(hise::Processor * p, int parameterId, const juce::String & parameterName, const hise::ValueToTextConverter & converter, juce::NormalisableRange<double> range, bool readOnly, bool isUsingCustomData, juce::NotificationType n) Line 818 C++ HISE Debug.exe!hise::MacroControlledObject::enableMidiLearnWithPopup() Line 365 C++ HISE Debug.exe!hise::SliderWithShiftTextBox::performModifierAction(const juce::MouseEvent & e, bool isDoubleClick) Line 581 C++ HISE Debug.exe!hise::HiSlider::mouseDown(const juce::MouseEvent & e) Line 955 C++ HISE Debug.exe!juce::Component::internalMouseDown(juce::MouseInputSource source, juce::Point<float> relativePos, juce::Time time, float pressure, float orientation, float rotation, float tiltX, float tiltY) Line 2528 C++ HISE Debug.exe!juce::MouseInputSourceInternal::sendMouseDown(juce::Component & comp, juce::Point<float> screenPos, juce::Time time) Line 142 C++ HISE Debug.exe!juce::MouseInputSourceInternal::setButtons(juce::Point<float> screenPos, juce::Time time, juce::ModifierKeys newButtonState) Line 218 C++ HISE Debug.exe!juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer & newPeer, juce::Point<float> positionWithinPeer, juce::Time time, const juce::ModifierKeys newMods, float newPressure, float newOrientation, juce::PenDetails pen) Line 332 C++ HISE Debug.exe!juce::MouseInputSource::handleEvent(juce::ComponentPeer & peer, juce::Point<float> pos, __int64 time, juce::ModifierKeys mods, float pressure, float orientation, const juce::PenDetails & penDetails) Line 633 C++ HISE Debug.exe!juce::ComponentPeer::handleMouseEvent(juce::MouseInputSource::InputSourceType type, juce::Point<float> pos, juce::ModifierKeys newMods, float newPressure, float newOrientation, __int64 time, juce::PenDetails pen, int touchIndex) Line 87 C++ HISE Debug.exe!juce::HWNDComponentPeer::doMouseEvent(juce::Point<float> position, float pressure, float orientation, juce::ModifierKeys mods) Line 2672 C++ HISE Debug.exe!juce::HWNDComponentPeer::doMouseDown(juce::Point<float> position, const unsigned __int64 wParam) Line 2823 C++ HISE Debug.exe!juce::HWNDComponentPeer::peerWindowProc(HWND__ * h, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 3722 C++ HISE Debug.exe!juce::HWNDComponentPeer::windowProc(HWND__ * h, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 3620 C++ [External Code] HISE Debug.exe!juce::InternalMessageQueue::dispatchNextMessage(bool returnIfNoPendingMessages) Line 149 C++ HISE Debug.exe!juce::dispatchNextMessageOnSystemQueue(bool returnIfNoPendingMessages) Line 266 C++ HISE Debug.exe!juce::MessageManager::runDispatchLoop() Line 107 C++ HISE Debug.exe!juce::JUCEApplicationBase::main() Line 266 C++ HISE Debug.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 1081 C++ [External Code]
Something to do with the MacroControlBroadcaster triggering a ui update
Edit: Don't want to jinx it but latest build seems to have fixed the original issue which is the more important one for me, clicked the randomize button a few hundred times now and haven't had it crash once