• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSTextView EXC_BAD_ACCESS in deferred layout (RESOLVED)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTextView EXC_BAD_ACCESS in deferred layout (RESOLVED)


  • Subject: Re: NSTextView EXC_BAD_ACCESS in deferred layout (RESOLVED)
  • From: "email@hidden" <email@hidden>
  • Date: Sun, 10 Jan 2010 12:43:25 +0000

On 8 Jan 2010, at 11:35, email@hidden wrote:

> My GC app has two NSTextViews in two windows.
> Distinct attributed text can loaded into both NSTextView instances.
>
> The problem test text data size  is 2MB.
> The problem does not manifest itself for smaller data sizes.
>
> The 2MB test data can be loaded repeatedly into a single NSTextView instance without issue.
> When the same test data is loaded into the second NSTextView instance the crash occurs.
>
> Obviously NSLayoutManager has initiated deferred layout.
> Do I have to be aware of any particular layout manager issues in this case?
>
> I am not doing any manipulation of the NSTextView contents.
> The content is established using the following binding.
>
> [_textView bind:NSAttributedStringBinding
> 		   toObject:self
> 		withKeyPath:@"resultString"
> 			options:[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSConditionallySetsEditableBindingOption, nil]];
>
>
This issue may be related to garbage collection.
I was initiating [[NSGarbageCollector defaultCollector]collectExhaustively] after the end of a particular operation.
Removing this greatly reduced but did not wholly eliminate the problem.

What did have a positive effect was to to configure the NSTextView instances as -setAllowsNonContiguousLayout:YES
Presumably this initiates a different code path.

As a precautionary measure I also turned off background layout.
[[myText layoutManager] setBackgroundLayoutEnabled:NO];

> Crash details follow.
>
> Thanks
>
> Jonathan
>
> Date/Time:       2010-01-08 11:11:32.074 +0000
> OS Version:      Mac OS X 10.6.2 (10C540)
> Report Version:  6
>
> Exception Type:  EXC_BAD_ACCESS (SIGBUS)
> Exception Codes: KERN_PROTECTION_FAILURE at 0x000000000000017c
> Crashed Thread:  0  Dispatch queue: com.apple.main-thread
>
> Application Specific Information:
> objc[653]: garbage collection is ON
>
> Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
> 0   com.apple.AppKit              	0x92eadd3e -[NSATSGlyphStorage setAbsorbedCount:forIndex:] + 84
> 1   com.apple.CoreText            	0x95cbf9e3 TObjCGlyphStorage::SetAttachmentCount(long, long) + 51
> 2   com.apple.CoreText            	0x95cbf8b0 long TRun::SetAttachmentsLeftToRight<true>(long, long const*, long) + 402
> 3   com.apple.CoreText            	0x95cbf6a8 TRun::DeleteGlyphs(long, long const*, long) + 60
> 4   com.apple.CoreText            	0x95cbf5c1 TLine::DeleteGlyphs(long, long, long const*) + 243
> 5   com.apple.CoreText            	0x95cab05f TShapingEngine::ShapeGlyphs(TLine&, TCharStream const&) + 647
> 6   com.apple.CoreText            	0x95cbba47 TTypesetterRunArray::TTypesetterRunArray(__CFArray const*, __CFString const*, void const* (*)(__CTRun const*, __CFString const*, void*), void*) + 209
> 7   com.apple.CoreText            	0x95cbb962 CTTypesetterCreateWithRunArray + 90
> 8   com.apple.AppKit              	0x92dae76f -[NSATSGlyphStorage createCTTypesetter] + 1585
> 9   com.apple.AppKit              	0x92daa8bc -[NSATSTypesetter _ctTypesetter] + 323
> 10  com.apple.AppKit              	0x92da994b -[NSATSLineFragment layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:] + 72
> 11  com.apple.AppKit              	0x92da84a4 -[NSATSTypesetter _layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:] + 2760
> 12  com.apple.AppKit              	0x92e1addf -[NSATSTypesetter layoutParagraphAtPoint:] + 155
> 13  com.apple.AppKit              	0x9331ecf0 -[NSTypesetter _layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:maxCharacterIndex:nextGlyphIndex:nextCharacterIndex:] + 2935
> 14  com.apple.AppKit              	0x92e19fbe -[NSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:] + 218
> 15  com.apple.AppKit              	0x92e19ea2 -[NSATSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:] + 1316
> 16  com.apple.AppKit              	0x92e17eb4 -[NSLayoutManager(NSPrivate) _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] + 1020
> 17  com.apple.AppKit              	0x92e8a509 -[NSLayoutManager(NSPrivate) _fillLayoutHoleAtIndex:desiredNumberOfLines:] + 261
> 18  com.apple.AppKit              	0x92e8cf9c +[NSLayoutManager(NSPrivate) _doSomeBackgroundLayout] + 927
> 19  com.apple.AppKit              	0x92e51af4 _NSPostBackgroundLayout + 562
> 20  com.apple.CoreFoundation      	0x95f8b892 __CFRunLoopDoObservers + 1186
> 21  com.apple.CoreFoundation      	0x95f483e2 __CFRunLoopRun + 1154
> 22  com.apple.CoreFoundation      	0x95f47864 CFRunLoopRunSpecific + 452
> 23  com.apple.CoreFoundation      	0x95f47691 CFRunLoopRunInMode + 97
> 24  com.apple.HIToolbox           	0x96589f0c RunCurrentEventLoopInMode + 392
> 25  com.apple.HIToolbox           	0x96589cc3 ReceiveNextEventCommon + 354
> 26  com.apple.HIToolbox           	0x96589b48 BlockUntilNextEventMatchingListInMode + 81
> 27  com.apple.AppKit              	0x92ceeac5 _DPSNextEvent + 847
> 28  com.apple.AppKit              	0x92cee306 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
> 29  com.apple.AppKit              	0x92cb049f -[NSApplication run] + 821
> 30  com.apple.AppKit              	0x92ca8535 NSApplicationMain + 574
> 31  com.boo.myapp     	0x00006bf1 main + 376 (main.m:32)
> 32  com.boo.myapp     	0x00002a51 start + 53
>
> Thread 1:  Dispatch queue: com.apple.libdispatch-manager
> 0   libSystem.B.dylib             	0x94a3a0ea kevent + 10
> 1   libSystem.B.dylib             	0x94a3a804 _dispatch_mgr_invoke + 215
> 2   libSystem.B.dylib             	0x94a39cc3 _dispatch_queue_invoke + 163
> 3   libSystem.B.dylib             	0x94a39a68 _dispatch_worker_thread2 + 234
> 4   libSystem.B.dylib             	0x94a394f1 _pthread_wqthread + 390
> 5   libSystem.B.dylib             	0x94a39336 start_wqthread + 30
>
> Thread 2:
> 0   libSystem.B.dylib             	0x94a32856 select$DARWIN_EXTSN + 10
> 1   com.apple.CoreFoundation      	0x95f87ddd __CFSocketManager + 1085
> 2   libSystem.B.dylib             	0x94a40fbd _pthread_start + 345
> 3   libSystem.B.dylib             	0x94a40e42 thread_start + 34
>
> Thread 3:
> 0   libSystem.B.dylib             	0x94a39182 __workq_kernreturn + 10
> 1   libSystem.B.dylib             	0x94a39718 _pthread_wqthread + 941
> 2   libSystem.B.dylib             	0x94a39336 start_wqthread + 30
>
> Thread 4:  Dispatch queue: Garbage Collection Work Queue
> 0   libauto.dylib                 	0x927fc707 Auto::MemoryScanner::scan_range(Auto::Range const&, Auto::WriteBarrier*) + 919
> 1   libauto.dylib                 	0x927fcb24 Auto::MemoryScanner::scan_for_unmarked_blocks(Auto::Subzone*, unsigned long, void*) + 148
> 2   libauto.dylib                 	0x927fcd53 Auto::MemoryScanner::scan_pending_until_done() + 339
> 3   libauto.dylib                 	0x927fced9 Auto::MemoryScanner::scan() + 41
> 4   libauto.dylib                 	0x927f2f98 Auto::Zone::collect(bool, void*, unsigned long long*) + 152
> 5   libauto.dylib                 	0x927dca37 auto_collect_internal(Auto::Zone*, int) + 407
> 6   libauto.dylib                 	0x927dd36c auto_collection_work(Auto::Zone*) + 140
> 7   libSystem.B.dylib             	0x94a47828 _dispatch_call_block_and_release + 16
> 8   libSystem.B.dylib             	0x94a3a1f4 _dispatch_queue_drain + 249
> 9   libSystem.B.dylib             	0x94a39c52 _dispatch_queue_invoke + 50
> 10  libSystem.B.dylib             	0x94a39a68 _dispatch_worker_thread2 + 234
> 11  libSystem.B.dylib             	0x94a394f1 _pthread_wqthread + 390
> 12  libSystem.B.dylib             	0x94a39336 start_wqthread + 30
>
> Thread 5:
> 0   libSystem.B.dylib             	0x94a39182 __workq_kernreturn + 10
> 1   libSystem.B.dylib             	0x94a39718 _pthread_wqthread + 941
> 2   libSystem.B.dylib             	0x94a39336 start_wqthread + 30
>
> Thread 0 crashed with X86 Thread State (32-bit):
>  eax: 0x0000005f  ebx: 0x92eadcfe  ecx: 0x00000000  edx: 0x00000001
>  edi: 0x01422250  esi: 0x0021d400  ebp: 0xbfffcf18  esp: 0xbfffcef0
>   ss: 0x0000001f  efl: 0x00010246  eip: 0x92eadd3e   cs: 0x00000017
>   ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
>  cr2: 0x0000017c
>
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >NSTextView EXC_BAD_ACCESS in deferred layout (From: "email@hidden" <email@hidden>)

  • Prev by Date: Re: Enabling NSZombieEnabled programatically
  • Next by Date: Re: Enabling NSZombieEnabled programatically
  • Previous by thread: NSTextView EXC_BAD_ACCESS in deferred layout
  • Next by thread: saving core animation layer to file
  • Index(es):
    • Date
    • Thread