• 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
Blocked in NSFileCoordinator
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Blocked in NSFileCoordinator


  • Subject: Blocked in NSFileCoordinator
  • From: "Gerriet M. Denkmann" <email@hidden>
  • Date: Mon, 29 Aug 2011 13:44:41 +0700

I have a document based app which collects data and updates its document.
Works fine in Snow Leopard, hangs in Lion.

At start it blocks (see sample at end of post).
This initial hang can be avoided, if for the first 3 seconds  after launch no saves are allowed. (Rather a crude hack).
But even then, it usually will hang some time later (maybe a long time later - hard to reproduce).

I guess that Lion tries to restore some windows which interferes with my own calls to saveDocument:.


MyDocument is a subclass of NSDocument.
Overridden NSDocument methods are:
- (id)init
- (id)initWithType:(NSString *)typeName error:(NSError **)outError
- (void)dealloc
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)outError
- (BOOL)writeToURL:(NSURL *)absoluteURL  ofType:(NSString *)typeName  error:(NSError **)outError
- (void)close
all of these contain log statements.
some more:
- (BOOL)prepareSavePanel:(NSSavePanel *)savePanel
- (NSString *)windowNibName
- (void)windowControllerDidLoadNib:(NSWindowController *) aController

The ap starts like this:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
	// ....
	NSDocumentController  *sDC = [ NSDocumentController sharedDocumentController ];
	NSError *outError ;
	activeDoc = [ sDC openDocumentWithContentsOfURL: absoluteURL  display: YES  error: &outError ];
	if ( activeDoc == nil )	//	error handling (no error did happen)
}

creates these logs:
2011-08-29 13:00:38.396 EnTeP[4982:707] -[MyDocument init] self <MyDocument: 0x1005278f0>
2011-08-29 13:00:38.399 EnTeP[4982:707] -[MyDocument readFromURL:ofType:error:] self <MyDocument: 0x1005278f0>
2011-08-29 13:00:38.402 EnTeP[4982:707] -[MyDocument readFromURL:ofType:error:] done


Then something happens and this code gets executed:

- (BOOL)takkeEvent: (EvenT *)eve ;
{
	//	do something then:
	NSLog(@"%s will save",__FUNCTION__);
	[ self saveDocument: nil ];
	NSLog(@"%s did save",__FUNCTION__); ← Note: never gets to here
}

which writes this log line, and then hangs forever:
2011-08-29 13:00:41.417 EnTeP[4982:707] -[MyDocument takkeEvent:] will save


How do I debug this (I'm rather new to Lion)?


And here is the sample, taken by Activity Monitor:

OS Version:      Mac OS X 10.7.1 (11B26)
Report Version:  7

Call graph:
    2678 Thread_175770   DispatchQueue_1: com.apple.main-thread  (serial)
    + 2678 start  (in EnTeP) + 52  [0x100001464]
    +   2678 main  (in EnTeP) + 34  [0x100001492]  main.m:13
    +     2678 NSApplicationMain  (in AppKit) + 867  [0x7fff9234652a]
    +       2678 -[NSApplication run]  (in AppKit) + 463  [0x7fff920c83d6]
    +         2678 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  (in AppKit) + 135  [0x7fff920cba95]
    +           2678 _DPSNextEvent  (in AppKit) + 1247  [0x7fff920cc3dd]
    +             2678 AEProcessAppleEvent  (in HIToolbox) + 102  [0x7fff8f9cb12d]
    +               2678 aeProcessAppleEvent  (in AE) + 250  [0x7fff9381e857]
    +                 2678 _ZL25dispatchEventAndSendReplyPK6AEDescPS_  (in AE) + 38  [0x7fff9381e963]
    +                   2678 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned int, unsigned char*)  (in AE) + 200  [0x7fff9381ea85]
    +                     2678 _NSAppleEventManagerGenericHandler  (in Foundation) + 105  [0x7fff8e30afdc]
    +                       2678 -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:]  (in Foundation) + 283  [0x7fff8e30b14e]
    +                         2678 __-[NSAppleEventManager setEventHandler:andSelector:forEventClass:andEventID:]_block_invoke_1  (in Foundation) + 101  [0x7fff8e30c1c7]
    +                           2678 -[NSObject performSelector:withObject:withObject:]  (in CoreFoundation) + 65  [0x7fff98ceaf51]
    +                             2678 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:]  (in AppKit) + 330  [0x7fff920cefb1]
    +                               2678 -[NSApplication(NSAppleEventHandling) _handleAEOpenEvent:]  (in AppKit) + 242  [0x7fff920cf250]
    +                                 2678 -[NSApplication _sendFinishLaunchingNotification]  (in AppKit) + 78  [0x7fff920d04df]
    +                                   2678 -[NSApplication _postDidFinishNotification]  (in AppKit) + 212  [0x7fff920d0779]
    +                                     2678 -[NSNotificationCenter postNotificationName:object:userInfo:]  (in Foundation) + 65  [0x7fff8e2d59cb]
    +                                       2678 _CFXNotificationPost  (in CoreFoundation) + 2634  [0x7fff98ca151a]
    +                                         2678 __-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_1  (in Foundation) + 47  [0x7fff8e2e9716]
    +                                           2678 -[FeuchtDel applicationDidFinishLaunching:]  (in EnTeP) + 3264  [0x100002570]  FeuchtDel.m:778
    +                                             2678 -[FeuchtDel takeEvent:]  (in EnTeP) + 59  [0x1000035fb]  FeuchtDel.m:1597
    +                                               2678 -[MyDocument takkeEvent:]  (in EnTeP) + 1654  [0x1000196e6]  MyDocument.m:1063
    +                                                 2678 -[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]  (in AppKit) + 92  [0x7fff9246ae33]
    +                                                   2678 -[NSDocument performActivityWithSynchronousWaiting:usingBlock:]  (in AppKit) + 82  [0x7fff924834b6]
    +                                                     2678 __-[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]_block_invoke_1  (in AppKit) + 192  [0x7fff9246aef9]
    +                                                       2678 -[NSDocument _commitEditingWithDelegate:didSomethingSelector:contextInfo:thenContinue:]  (in AppKit) + 91  [0x7fff924762ab]
    +                                                         2678 -[NSDocument _commitEditingThenContinue:]  (in AppKit) + 337  [0x7fff9247a5e0]
    +                                                           2678 __-[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]_block_invoke_2  (in AppKit) + 527  [0x7fff9246b170]
    +                                                             2678 __-[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]_block_invoke_6  (in AppKit) + 290  [0x7fff9246b439]
    +                                                               2678 -[NSDocument _checkForFileChangesThenSave:saveAs:orCancel:]  (in AppKit) + 797  [0x7fff924803cf]
    +                                                                 2678 __-[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]_block_invoke_7  (in AppKit) + 114  [0x7fff9246b5c0]
    +                                                                   2678 -[NSDocument continueActivityUsingBlock:]  (in AppKit) + 42  [0x7fff92467823]
    +                                                                     2678 __-[NSDocument saveDocumentWithDelegate:didSaveSelector:contextInfo:]_block_invoke_8  (in AppKit) + 194  [0x7fff9246ba13]
    +                                                                       2678 -[NSDocument saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:]  (in AppKit) + 112  [0x7fff9246c2cc]
    +                                                                         2678 -[NSDocument performActivityWithSynchronousWaiting:usingBlock:]  (in AppKit) + 82  [0x7fff924834b6]
    +                                                                           2678 __-[NSDocument saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:]_block_invoke_1  (in AppKit) + 344  [0x7fff9246c42a]
    +                                                                             2678 -[NSDocument _commitEditingWithDelegate:didSomethingSelector:contextInfo:thenContinue:]  (in AppKit) + 91  [0x7fff924762ab]
    +                                                                               2678 -[NSDocument _commitEditingThenContinue:]  (in AppKit) + 337  [0x7fff9247a5e0]
    +                                                                                 2678 __-[NSDocument saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:]_block_invoke_2  (in AppKit) + 131  [0x7fff9246c555]
    +                                                                                   2678 -[NSDocument saveToURL:ofType:forSaveOperation:completionHandler:]  (in AppKit) + 91  [0x7fff9246d860]
    +                                                                                     2678 -[NSDocument performAsynchronousFileAccessUsingBlock:]  (in AppKit) + 304  [0x7fff9248316b]
    +                                                                                       2678 -[NSDocument _performFileAccessOnMainThread:usingBlock:]  (in AppKit) + 466  [0x7fff92483413]
    +                                                                                         2678 -[NSDocument continueFileAccessUsingBlock:]  (in AppKit) + 227  [0x7fff92468bda]
    +                                                                                           2678 __-[NSDocument saveToURL:ofType:forSaveOperation:completionHandler:]_block_invoke_1  (in AppKit) + 845  [0x7fff9246dbb3]
    +                                                                                             2678 -[NSDocument _fileCoordinator:coordinateReadingContentsAndWritingItemAtURL:byAccessor:]  (in AppKit) + 248  [0x7fff9247f6fc]
    +                                                                                               2678 -[NSFileCoordinator(NSPrivate) _coordinateReadingItemAtURL:options:writingItemAtURL:options:error:byAccessor:]  (in Foundation) + 677  [0x7fff8e4c2234]
    +                                                                                                 2678 -[NSFileCoordinator(NSPrivate) _blockOnAccessClaim:]  (in Foundation) + 183  [0x7fff8e4c2bdb]
    +                                                                                                   2678 _dispatch_semaphore_wait_slow  (in libdispatch.dylib) + 109  [0x7fff90f9808e]
    +                                                                                                     2678 semaphore_wait_trap  (in libsystem_kernel.dylib) + 10  [0x7fff910b86b6]
    2678 Thread_175779   DispatchQueue_2: com.apple.libdispatch-manager  (serial)
    + 2678 _dispatch_mgr_thread  (in libdispatch.dylib) + 54  [0x7fff90f9519e]
    +   2678 _dispatch_mgr_invoke  (in libdispatch.dylib) + 923  [0x7fff90f9660e]
    +     2678 kevent  (in libsystem_kernel.dylib) + 10  [0x7fff910ba7e6]
    2678 Thread_175818: com.apple.CFSocket.private
      2678 thread_start  (in libsystem_c.dylib) + 13  [0x7fff93425b75]
        2678 _pthread_start  (in libsystem_c.dylib) + 335  [0x7fff934228bf]
          2678 __CFSocketManager  (in CoreFoundation) + 1355  [0x7fff98cd666b]
            2678 __select  (in libsystem_kernel.dylib) + 10  [0x7fff910b9df2]

Total number in stack (recursive counted multiple, when >=5):

Sort by top of stack, same collapsed (when >= 5):
        __select  (in libsystem_kernel.dylib)        2678
        kevent  (in libsystem_kernel.dylib)        2678
        semaphore_wait_trap  (in libsystem_kernel.dylib)        2678

_______________________________________________

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

  • Follow-Ups:
    • Re: Blocked in NSFileCoordinator
      • From: Kyle Sluder <email@hidden>
  • Prev by Date: Re: Long delay of NSPopUpButton first click
  • Next by Date: Saving PNG files from NSImage
  • Previous by thread: Re: Removing the Versions Button
  • Next by thread: Re: Blocked in NSFileCoordinator
  • Index(es):
    • Date
    • Thread