Hello everybody.
I have an issue that is difficult for me to track down since it only happens sporadically and only in the AU version of my plugin on OSX. I would really appreciate any hint that points me in the right direction to fix it.
From what I see in the crashlog it seems that it caused by a component that I have subclassed from juce::ComboBox. During paint a lot of AppKit stuff is done but in the end something goes wrong in juce::GlyphArrangement::addCurtailedLineOfText and finally juce::OSXTypeface::getGlyphPositions.
The only two suspicions that I have at the moment are:
- Maybe the String in the ComboBox item is not a valid UTF8 String. But from what I see this would have been rejected in the String class before and I do not see combobox strings that would cause a problem here.
- Maybe it is a multithreading issue with loading the Font? But why would this only happen on OSX? And I am creating the Typeface with createSystemTypefaceFor in the constructor of my LookAndFeel instance.
Any ideas? And here the crashlog - sorry for the long post.
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000126ecc004
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [6845]
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libFontParser.dylib 0x00007fff43d6cb08 TSFNTFont::GetTableOffset(unsigned int, unsigned long&) const + 58
1 libFontParser.dylib 0x00007fff43d6ca8b TSFNTFont::GetTable(unsigned int, unsigned long&) const + 43
2 libFontParser.dylib 0x00007fff43dac2e8 TTrueTypeMemoryFont::GetTable(unsigned int, unsigned long&) const + 114
3 libFontParser.dylib 0x00007fff43d6fcd3 TsfntTable::TsfntTable(TSFNTFont const&, unsigned int) + 51
4 libFontParser.dylib 0x00007fff43d71949 TcmapUnicodeTable::TcmapUnicodeTable(TSFNTFont const&) + 31
5 libFontParser.dylib 0x00007fff43d9ea78 TSFNTFont::GetGlyphsForCharacterRange(unsigned short*, CFRange) const + 42
6 libFontParser.dylib 0x00007fff43dc44aa FPFontGetGlyphsForCharacterRange + 154
7 com.apple.CoreText 0x00007fff475b760c TBaseFont::GetGlyphsForCharacterRange(CFRange, unsigned short*) const + 74
8 com.apple.CoreText 0x00007fff47599aae TASCIIDataCache::TASCIIDataCache(TFont const*) + 74
9 com.apple.CoreText 0x00007fff47599a2e TFont::InitASCIIDataCache() const + 34
10 com.apple.CoreText 0x00007fff475ccdfe TASCIIEncoder::Encode() + 82
11 com.apple.CoreText 0x00007fff475cc7e3 TGlyphEncoder::EncodeChars(CFRange, TAttributes const&, TGlyphEncoder::Fallbacks) + 1189
12 com.apple.CoreText 0x00007fff475cbe82 TTypesetterAttrString::Initialize(__CFAttributedString const*) + 238
13 com.apple.CoreText 0x00007fff475cbb64 TTypesetterAttrString::TTypesetterAttrString(__CFAttributedString const*, __CFDictionary const*) + 176
14 com.apple.CoreText 0x00007fff475cb9ae CTLineCreateWithAttributedString + 60
15 com.vastdynamics.VAST2 0x00000001209bdb5e juce::OSXTypeface::getGlyphPositions(juce::String const&, juce::Array<int, juce::DummyCriticalSection, 0>&, juce::Array<float, juce::DummyCriticalSection, 0>&) + 238
16 com.vastdynamics.VAST2 0x00000001209c1d95 juce::Font::getGlyphPositions(juce::String const&, juce::Array<int, juce::DummyCriticalSection, 0>&, juce::Array<float, juce::DummyCriticalSection, 0>&) const + 117
17 com.vastdynamics.VAST2 0x00000001209c1578 juce::GlyphArrangement::addCurtailedLineOfText(juce::Font const&, juce::String const&, float, float, float, bool) + 88
18 com.vastdynamics.VAST2 0x0000000120a6324d juce::TextEditor::TextHolderComponent::paint(juce::Graphics&) + 1005
19 com.vastdynamics.VAST2 0x0000000120a7bf39 juce::Component::paintComponentAndChildren(juce::Graphics&) + 137
20 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
21 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
22 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
23 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
24 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
25 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
26 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
27 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
28 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
29 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
30 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
31 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
32 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
33 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
34 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
35 com.vastdynamics.VAST2 0x0000000120a7c2ea juce::Component::paintComponentAndChildren(juce::Graphics&) + 1082
36 com.vastdynamics.VAST2 0x0000000120aa4a3f juce::ComponentPeer::handlePaint(juce::LowLevelGraphicsContext&) + 719
37 com.vastdynamics.VAST2 0x0000000120a9e3c6 juce::JuceNSViewClass::drawRect(objc_object*, objc_selector*, CGRect) + 502
38 com.apple.AppKit 0x00007fff42f38c29 _NSViewDrawRect + 66
39 com.apple.AppKit 0x00007fff42f23a22 -[NSView _drawRect:clip:] + 1745
40 com.apple.logic10 0x000000010a5f7f34 0x109bdc000 + 10600244
41 com.apple.AppKit 0x00007fff42f218e6 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4808
42 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
43 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
44 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
45 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
46 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
47 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
48 com.apple.AppKit 0x00007fff42f21226 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3080
49 com.apple.AppKit 0x00007fff42f1df2a -[NSView _oldDisplayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 1887
50 com.apple.AppKit 0x00007fff42f1d569 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 253
51 com.apple.AppKit 0x00007fff42f1a152 -[NSView displayIfNeeded] + 1300
52 com.apple.AppKit 0x00007fff42f16ee8 -[NSWindow displayIfNeeded] + 283
53 com.apple.AppKit 0x00007fff42f16d27 __NSWindowGetDisplayCycleObserverForDisplay_block_invoke + 722
54 com.apple.AppKit 0x00007fff42f11e2a NSDisplayCycleObserverInvoke + 170
55 com.apple.AppKit 0x00007fff42f1199f NSDisplayCycleFlush + 1073
56 com.apple.QuartzCore 0x00007fff5087225b CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
57 com.apple.QuartzCore 0x00007fff50871c22 CA::Transaction::commit() + 186
58 com.apple.AppKit 0x00007fff42f11305 __65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke + 274
59 com.apple.CoreFoundation 0x00007fff4591a8ed __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
60 com.apple.CoreFoundation 0x00007fff4591a822 __CFRunLoopDoObservers + 452
61 com.apple.CoreFoundation 0x00007fff458bc345 __CFRunLoopRun + 1166
62 com.apple.CoreFoundation 0x00007fff458bbc64 CFRunLoopRunSpecific + 463
63 com.apple.HIToolbox 0x00007fff44b52ab5 RunCurrentEventLoopInMode + 293
64 com.apple.HIToolbox 0x00007fff44b526f4 ReceiveNextEventCommon + 371
65 com.apple.HIToolbox 0x00007fff44b52568 _BlockUntilNextEventMatchingListInModeWithFilter + 64
66 com.apple.AppKit 0x00007fff42e0d363 _DPSNextEvent + 997
67 com.apple.AppKit 0x00007fff42e0c102 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1362
68 com.apple.logic10 0x000000010b261a7d 0x109bdc000 + 23616125
69 com.vastdynamics.VAST2 0x00000001209ba94c juce::MessageManager::runDispatchLoopUntil(int) + 252
70 com.vastdynamics.VAST2 0x0000000120a722bd juce::Component::runModalLoop() + 477
71 com.vastdynamics.VAST2 0x00000001207c5e0d VASTComboPreset::showPopup() + 4525
72 com.vastdynamics.VAST2 0x00000001209b797c juce::MessageQueue::deliverNextMessage() + 236
73 com.vastdynamics.VAST2 0x00000001209b784a juce::MessageQueue::runLoopSourceCallback(void*) + 26
74 com.apple.CoreFoundation 0x00007fff458d9395 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
75 com.apple.CoreFoundation 0x00007fff458d933b __CFRunLoopDoSource0 + 108
76 com.apple.CoreFoundation 0x00007fff458bcdd1 __CFRunLoopDoSources0 + 195
77 com.apple.CoreFoundation 0x00007fff458bc37a __CFRunLoopRun + 1219
78 com.apple.CoreFoundation 0x00007fff458bbc64 CFRunLoopRunSpecific + 463
79 com.apple.HIToolbox 0x00007fff44b52ab5 RunCurrentEventLoopInMode + 293
80 com.apple.HIToolbox 0x00007fff44b526f4 ReceiveNextEventCommon + 371
81 com.apple.HIToolbox 0x00007fff44b52568 _BlockUntilNextEventMatchingListInModeWithFilter + 64
82 com.apple.AppKit 0x00007fff42e0d363 _DPSNextEvent + 997
83 com.apple.AppKit 0x00007fff42e0c102 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1362
84 com.apple.logic10 0x000000010b261a7d 0x109bdc000 + 23616125
85 com.apple.AppKit 0x00007fff42e06165 -[NSApplication run] + 699
86 com.apple.AppKit 0x00007fff42df58a3 NSApplicationMain + 780
87 com.apple.logic10 0x000000010a5f825d 0x109bdc000 + 10601053
88 libdyld.dylib 0x00007fff72b0ded9 start + 1