For some reason that I have yet to discover, calling - [NSAttributedString size] is causing a crash. It's rare, but it's happening. I can't yet repeat it on my system.



Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000010

Thread 0 Crashed:
0 com.apple.CoreText 0x9532d56e CFTLine::CFTLine(__CFString const*, adopted_t const&) + 16 1 com.apple.CoreText 0x9530c2a3 CTTypesetterCreateLine + 129 2 com.apple.AppKit 0x95efbabc -[NSATSLineFragment layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect :] + 965 3 com.apple.AppKit 0x95efa539 -[NSATSTypesetter _layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext :] + 2651 4 com.apple.AppKit 0x95f32e13 -[NSATSTypesetter layoutParagraphAtPoint:] + 155 5 com.apple.AppKit 0x95edb579 -[NSTypesetter _layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:maxCharacterIndex:nextGlyphIndex:nextCharacterIndex :] + 2974 6 com.apple.AppKit 0x964c8562 -[NSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments :] + 218 7 com.apple.AppKit 0x96243d98 -[NSATSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments :] + 599 8 com.apple.AppKit 0x95f309af - [NSLayoutManager(NSPrivate) _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] + 1024 9 com.apple.AppKit 0x95f47700 - [NSLayoutManager(NSPrivate) _fillLayoutHoleAtIndex:desiredNumberOfLines:] + 261 10 com.apple.AppKit 0x95f3e9be _NSFastFillAllLayoutHolesUpToEndOfContainerForGlyphIndex + 624 11 com.apple.AppKit 0x95f3e569 -[NSLayoutManager textContainerForGlyphAtIndex:effectiveRange:] + 128 12 com.apple.AppKit 0x95f3e400 -[NSLayoutManager glyphRangeForTextContainer:] + 307 13 com.apple.AppKit 0x95f6e433 - [NSStringDrawingTextStorage usedRectForTextContainer:] + 153 14 com.apple.AppKit 0x95eed172 - [NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:] + 2044 15 com.apple.AppKit 0x95fcfa5f - [NSAttributedString(NSStringDrawing) size] + 68 16 com.my.app 0x0007392c -[AQColumnTokenCell cellSize] + 46 17 com.my.app 0x00071cb9 -[AQColumnListView cellFrameForColumnIndex:] + 181 18 com.my.app 0x00072c07 -[AQColumnListView drawRect:] + 262 19 com.apple.AppKit 0x95f8529c -[NSView _drawRect:clip:] + 3853 20 com.apple.AppKit 0x95f83d93 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1050 21 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 22 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 23 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 24 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 25 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 26 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 27 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 28 com.apple.AppKit 0x95f8412a -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 29 com.apple.AppKit 0x95f826e9 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 759 30 com.apple.AppKit 0x95f8202b -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView :] + 306 31 com.apple.AppKit 0x95f7eb4f -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3090 32 com.apple.AppKit 0x95ebf523 -[NSView displayIfNeeded] + 933 33 com.apple.AppKit 0x95f71c61 -[NSWindow _setFrameCommon:display:stashSize:] + 2031 34 com.apple.AppKit 0x95f7146a -[NSWindow setFrame:display:] + 78 35 com.apple.AppKit 0x95fc4469 -[NSMoveHelper _stopAnimation] + 637 36 com.apple.AppKit 0x96120776 -[NSMoveHelper _doAnimation] + 1048 37 com.apple.AppKit 0x9619f4b0 -[NSMoveHelper _resizeWindow:toFrame:display:] + 407 38 com.apple.AppKit 0x95fac71e -[NSWindow setFrame:display:animate:] + 1038 39 com.my.app 0x0006b1fa -[AQImportPanel(Private) p_displayColumnMappingView] + 1860 40 com.apple.AppKit 0x95f8e53b -[NSApplication sendAction:to:from:] + 112 41 com.apple.AppKit 0x95f8e478 -[NSControl sendAction:to:] + 108 42 com.apple.AppKit 0x95f8e2fe -[NSCell _sendActionFrom:] + 169 43 com.apple.AppKit 0x95f8d957 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 1827 44 com.apple.AppKit 0x95f8d1aa -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 541 45 com.apple.AppKit 0x95f8ca64 -[NSControl mouseDown:] + 888 46 com.apple.AppKit 0x95f8b1a3 -[NSWindow sendEvent:] + 5381 47 com.apple.AppKit 0x95f57d49 -[NSApplication sendEvent:] + 2941 48 com.my.app 0x0009e9f4 -[AGApplication sendEvent:] + 445
49  com.apple.AppKit                    0x95eb569f -[NSApplication run] + 847
50  com.apple.AppKit                    0x95e828a4 NSApplicationMain + 574
51  com.my.app                          0x0000306e start + 54



The relevant code is:


- (NSSize)cellSize;
{
        NSAttributedString * attrStr = [self attributedStringValue];
        NSSize size = [attrStr size];
        
        size.width = ceil(size.width) + 3.0 + 16.0 + 16.0 + 3.0;
        
        return size;
}



- (NSAttributedString *)attributedStringValue;
{
        NSString * str = [self title];
NSMutableDictionary * attribs = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                [NSFont systemFontOfSize:12.0], 
NSFontAttributeName, nil];
        
        if ([str isEqual:@""]) {
                str = @"none";
[attribs setObject:[NSColor colorWithCalibratedWhite:0.75 alpha:1.0] forKey:NSForegroundColorAttributeName];
        } else if ([self isHighlightedForReplacement]) {
[attribs setObject:[NSColor colorWithCalibratedWhite:0.75 alpha:1.0] forKey:NSForegroundColorAttributeName];
        }
        
return [[[NSAttributedString alloc] initWithString:str attributes:attribs] autorelease];
}



If [self title] were nil, I'd get an exception when creating the attributed string, not a crash when calling -size. There's nothing fancy going on with the string. The only thing I can think of is that this drawing and call to -size is happening while the window is resizing caused by a simple call to -[NSWindow setFrame:display:animate:].


Am I SOL?


--
Seth Willits



_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to