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 (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to