Accessibility commit is crashing OS X 10.9

Just noticed that the Accessibility commit from May 10 (Added VoiceOver…) is crashing a plugin on 10.9. Catalina and Big Sur are fine. I don’t have much time to test further though. From the log, it looks like it crashes on a TextEditor.

Can you post the crash log? Unfortunately I don’t have a 10.9 machine here to test on.

Is it not crashing on startup ? Here is what I get here, when starting DemoRunner:

Thread 0 Crashed:: JUCE Message Thread  Dispatch queue: com.apple.main-thread
0   com.apple.CoreFoundation            0x00007fff98eac25d ___forwarding___ + 989
1   com.apple.CoreFoundation            0x00007fff98eabdf8 _CF_forwarding_prep_0 + 120
2   libobjc.A.dylib                     0x00007fff981ec371 _class_initialize + 645
3   libobjc.A.dylib                     0x00007fff981f8254 lookUpImpOrForward + 170
4   libobjc.A.dylib                     0x00007fff981eb169 objc_msgSend + 233
5   com.rmsl.jucedemorunner             0x0000000103acc193 juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityElement::create(juce::AccessibilityHandler&) + 163
6   com.rmsl.jucedemorunner             0x0000000103acc0d4 juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityNativeImpl(juce::AccessibilityHandler&) + 36
7   com.rmsl.jucedemorunner             0x0000000103a057fd juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityNativeImpl(juce::AccessibilityHandler&) + 29
8   com.rmsl.jucedemorunner             0x0000000103913c80 juce::AccessibilityHandler::createNativeImpl(juce::AccessibilityHandler&) + 48
9   com.rmsl.jucedemorunner             0x0000000103913b14 juce::AccessibilityHandler::AccessibilityHandler(juce::Component&, juce::AccessibilityRole, juce::AccessibilityActions, juce::AccessibilityHandler::Interfaces) + 180
10  com.rmsl.jucedemorunner             0x0000000103913db3 juce::AccessibilityHandler::AccessibilityHandler(juce::Component&, juce::AccessibilityRole, juce::AccessibilityActions, juce::AccessibilityHandler::Interfaces) + 35
11  com.rmsl.jucedemorunner             0x00000001039f6dd8 std::__1::__unique_if<juce::AccessibilityHandler>::__unique_single std::__1::make_unique<juce::AccessibilityHandler, juce::TopLevelWindow&, juce::AccessibilityRole>(juce::TopLevelWindow&&&, juce::AccessibilityRole&&) + 216
12  com.rmsl.jucedemorunner             0x00000001039f6cee juce::TopLevelWindow::createAccessibilityHandler() + 46
13  com.rmsl.jucedemorunner             0x00000001039151d8 juce::Component::getAccessibilityHandler() + 216
14  com.rmsl.jucedemorunner             0x000000010391745f juce::Component::internalHierarchyChanged() + 447
15  com.rmsl.jucedemorunner             0x0000000103917b76 juce::Component::addToDesktop(int, void*) + 1270
16  com.rmsl.jucedemorunner             0x00000001039e899e juce::TopLevelWindow::TopLevelWindow(juce::String const&, bool) + 206
17  com.rmsl.jucedemorunner             0x000000010394c5e4 juce::ResizableWindow::ResizableWindow(juce::String const&, juce::Colour, bool) + 52
18  com.rmsl.jucedemorunner             0x000000010395dd55 juce::DocumentWindow::DocumentWindow(juce::String const&, juce::Colour, int, bool) + 85
19  com.rmsl.jucedemorunner             0x00000001031afef0 DemoRunnerApplication::MainAppWindow::MainAppWindow(juce::String const&) + 96

Also the following messages are displayed in the terminal:

JUCE v6.0.8
2021-05-23 14:05:23.489 DemoRunner[400:507] *** NSForwarding: warning: object 0x7fc41ac1dc30 of class 'JUCEAccessibilityElement_5ab9cca426878eab' does not implement methodSignatureForSelector: -- trouble ahead
2021-05-23 14:05:23.489 DemoRunner[400:507] *** NSForwarding: warning: object 0x7fc41ac1dc30 of class 'JUCEAccessibilityElement_5ab9cca426878eab' does not implement doesNotRecognizeSelector: -- abort
Trace/BPT trap: 5

btw it is not too complicated to install 10.9 in a Parallels VM – I did it two days ago, the only annoying step is creating the mavericks iso file from its dmg file.

It seems accessibility api have changed a lot in macos 10.10 , maybe it should just be disabled for older osx versions ?

https://developer.apple.com/documentation/accessibility/integrating_accessibility_into_your_app?language=objc

Sure, there you go:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.music.apps.MAWorkspace	0x0000000114dc04a4 0x114d22000 + 648356
1   com.AudioThing.Speakers       	0x0000000145d6443a juce::ObjCClass<NSAccessibilityElement<NSAccessibility> >::ObjCClass(char const*) + 122
2   com.AudioThing.Speakers       	0x0000000145d63a63 juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityElement::AccessibilityElement() + 35
3   com.AudioThing.Speakers       	0x0000000145d63995 juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityElement::AccessibilityElement() + 21
4   com.AudioThing.Speakers       	0x0000000145d6387c juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityElement::create(juce::AccessibilityHandler&) + 76
5   com.AudioThing.Speakers       	0x0000000145d63814 juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityNativeImpl(juce::AccessibilityHandler&) + 36
6   com.AudioThing.Speakers       	0x0000000145caf87d juce::AccessibilityHandler::AccessibilityNativeImpl::AccessibilityNativeImpl(juce::AccessibilityHandler&) + 29
7   com.AudioThing.Speakers       	0x0000000145bb91a0 juce::AccessibilityHandler::createNativeImpl(juce::AccessibilityHandler&) + 48
8   com.AudioThing.Speakers       	0x0000000145bb9034 juce::AccessibilityHandler::AccessibilityHandler(juce::Component&, juce::AccessibilityRole, juce::AccessibilityActions, juce::AccessibilityHandler::Interfaces) + 180
9   com.AudioThing.Speakers       	0x0000000145e2fc3b juce::TextEditorAccessibilityHandler::TextEditorAccessibilityHandler(juce::TextEditor&) + 251
10  com.AudioThing.Speakers       	0x0000000145e2fafd juce::TextEditorAccessibilityHandler::TextEditorAccessibilityHandler(juce::TextEditor&) + 29
11  com.AudioThing.Speakers       	0x0000000145c8738f std::__1::__unique_if<juce::TextEditorAccessibilityHandler>::__unique_single std::__1::make_unique<juce::TextEditorAccessibilityHandler, juce::TextEditor&>(juce::TextEditor&&&) + 79
12  com.AudioThing.Speakers       	0x0000000145c8731e juce::TextEditor::createAccessibilityHandler() + 46
13  com.AudioThing.Speakers       	0x0000000145bba758 juce::Component::getAccessibilityHandler() + 216
14  com.AudioThing.Speakers       	0x0000000145c7cd31 juce::TextEditor::updateCaretPosition() + 385
15  com.AudioThing.Speakers       	0x0000000145c7be0f juce::TextEditor::scrollToMakeSureCursorIsVisible() + 31
16  com.AudioThing.Speakers       	0x0000000145c853c4 juce::TextEditor::resized() + 196
17  com.AudioThing.Speakers       	0x0000000145bbfc59 juce::Component::sendMovedResizedMessages(bool, bool) + 169
18  com.AudioThing.Speakers       	0x0000000145bbfba4 juce::Component::sendMovedResizedMessagesIfPending() + 132
19  com.AudioThing.Speakers       	0x0000000145bbfa1b juce::Component::setBounds(int, int, int, int) + 843

Thanks for the crash logs, this has been fixed on develop:

2 Likes