Reputation: 668
i have a app where several videos are being randomly displayed and everything was sweet and worked great. Since they program loops the same code over and over again I find it very odd that is just stops all of a sudden. What can the error message below be about?
But after many hours it crashes. The first time it ran for 13 hours before crash and tonight it crashed after 11 hours.
Process: CamRecorder [4695]
Path: /Users/wgv/Desktop/Fullscreeen/CamRecorder.app/Contents/MacOS/CamRecorder
Identifier: wgv.CamRecorder
Version: 1.0 (1)
Code Type: X86 (Native)
Parent Process: launchd [86]
Date/Time: 2011-03-01 02:21:03.509 +0100
OS Version: Mac OS X 10.6.6 (10J567)
Report Version: 6
Interval Since Last Report: 428620 sec
Crashes Since Last Report: 2
Per-App Interval Since Last Report: 257957 sec
Per-App Crashes Since Last Report: 2
Anonymous UUID: 4528D13C-54C9-413F-92D9-128D05272F57
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000fef6e1df
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: rectSetBeingDrawnForView:
objc[4695]: garbage collection is ON
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x93719ed7 objc_msgSend + 23
1 com.apple.AppKit 0x915ae95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
2 com.apple.AppKit 0x915ae95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
3 com.apple.AppKit 0x9164caa3 -[NSNextStepFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 311
4 com.apple.AppKit 0x915a9ea2 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3309
5 com.apple.AppKit 0x9150aa57 -[NSView displayIfNeeded] + 818
6 com.apple.AppKit 0x914be661 -[NSNextStepFrame displayIfNeeded] + 98
7 com.apple.AppKit 0x914d3d40 -[NSWindow displayIfNeeded] + 204
8 com.apple.AppKit 0x9150528a _handleWindowNeedsDisplay + 696
9 com.apple.CoreFoundation 0x91397e02 __CFRunLoopDoObservers + 1186
10 com.apple.CoreFoundation 0x91353d8d __CFRunLoopRun + 557
11 com.apple.CoreFoundation 0x91353464 CFRunLoopRunSpecific + 452
12 com.apple.CoreFoundation 0x91353291 CFRunLoopRunInMode + 97
13 com.apple.HIToolbox 0x9904e004 RunCurrentEventLoopInMode + 392
14 com.apple.HIToolbox 0x9904ddbb ReceiveNextEventCommon + 354
15 com.apple.HIToolbox 0x9904dc40 BlockUntilNextEventMatchingListInMode + 81
16 com.apple.AppKit 0x914db78d _DPSNextEvent + 847
17 com.apple.AppKit 0x914dafce -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
18 com.apple.AppKit 0x9149d247 -[NSApplication run] + 821
19 com.apple.AppKit 0x914952d9 NSApplicationMain + 574
20 wgv.CamRecorder 0x00001ff9 start + 53
Le Code
-(void)playMovie
{
NSError *error = nil;
NSString *pathString = [NSString stringWithFormat:@"/Users/Shared/Real/Movies"];
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error];
NSInteger lenghtOfArray = [fileList count];
NSInteger myNewFavoriteRandomNumber = arc4random() % lenghtOfArray;
NSString *fileName = [NSString stringWithFormat:@"%@",[fileList objectAtIndex:myNewFavoriteRandomNumber]];
fileName = [fileName stringByDeletingPathExtension];
NSString *fuckDS_Store = [NSString stringWithFormat:@"%@",[fileList objectAtIndex:myNewFavoriteRandomNumber]];
if([fuckDS_Store isEqualToString:@".DS_Store"])
{
[self playMovie];
}
else
{
if([lastPlayedVideo intValue] == myNewFavoriteRandomNumber)
{
if(lenghtOfArray > 3)
{
[self playMovie];
}
}
else if([lastPlayedVideo2 intValue] == myNewFavoriteRandomNumber)
{
if(lenghtOfArray > 3)
{
[self playMovie];
}
}
else
{
lastPlayedVideo2 = lastPlayedVideo;
lastPlayedVideo = [NSNumber numberWithInt:myNewFavoriteRandomNumber];
[textfield setStringValue:[fileList objectAtIndex:myNewFavoriteRandomNumber]];
NSError *cperror = nil;
NSString* stringMoviePath = [NSString stringWithFormat:@"/Users/Shared/Real/Movies/%@.mov",fileName];
QTMovie* movie = [[QTMovie alloc] initWithFile:stringMoviePath error:&cperror];
if(movie)
{
[movieViewLoop setMovie:movie];
[movieViewLoop play:@"yes"];
}
else
{
//[self playMovie];
[self performSelector:@selector(playMovie) withObject:@"Oki" afterDelay:1];
}
}
}
}
- (void)movieDidEnd:(NSNotification *)aNotification //Every time a movie has been played this is being run
{
if([blockLoop intValue] == 0)
{
[self playMovie];
}
}
Upvotes: 1
Views: 460
Reputation: 81868
The code that crashes is deeply nested in AppKit. The window is busy redrawing a part of it's view hierarchy. In this process it uses a (private) _NSDisplayOperation
objects, that responds to the mentioned rectSetBeingDrawnForView:
selector.
The stack trace looks like AppKit tries to message an erroneously collected display operation object. The crash has probably nothing at all to do with your code.
So, what can you do about it?
Upvotes: 1