Crash inexpliqué NSOpenPanel (Leopard + gc)

Aurélien-A

Membre confirmé
19 Mai 2005
76
3
42
Edinburgh
www.billou-net.info
Je procède à l'ouverture d'un NSOpenPanel tout simple dans mon appli, avec comme filetypes des extensions de fichiers audio (m4a, mp3 etc).

Tout se passe bien sauf que Leopard me propose (dans l'explorateur) un raccourci vers ma musique iTunes (sur la gauche de la fenêtre) et quand je clique dessus, ça plante bêtement (return code 11, SIGSEGV). Je peux me promener dans mon système de fichier peinard, c'est juste quand je clique là que ça me pète à la gueule.

Si je désactive le garbage collectore ça refonctionne, mais j'ai pas envie de retourner écrire tous les release manquants si vous voyez ce que je veux dire. Une idée du problème ?

Voilà le message d'erreur de la console:
Bloc de code:
[Session started at 2008-04-08 09:09:22 +0100.]
osxConvertAudio(1600,0xb0103000) malloc: free_garbage: garbage ptr = 0x1011b40, has non-zero refcount = 1
osxConvertAudio(1600,0xb0103000) malloc: free_garbage: garbage ptr = 0x101e450, has non-zero refcount = 1
osxConvertAudio(1600,0xb0103000) malloc: free_garbage: garbage ptr = 0x10312d0, has non-zero refcount = 1
osxConvertAudio(1600,0xb0103000) malloc: free_garbage: garbage ptr = 0x101dbb0, has non-zero refcount = 1

The Debugger has exited due to signal 11 (SIGSEGV).The Debugger has exited due to signal 11 (SIGSEGV).


Et voici le code de ma méthode:

Bloc de code:
- (IBAction)addFile:(id)sender
{
	NSArray *types = [NSArray arrayWithObjects:@"wav",
					  @"m4a",
					  @"mp3",
					  @"aif",
					  nil];
	NSOpenPanel *openPanel = [NSOpenPanel openPanel];
	[openPanel beginSheetForDirectory:nil
							file:nil
						    types:types
			          modalForWindow:self.window
				      modalDelegate:self
			              didEndSelector:@selector(openPanelDidEnd:
								returnCode:
								contextInfo:)
				           contextInfo:nil];
}

- (void)openPanelDidEnd:(NSOpenPanel *)openPanel
			 returnCode:(int)returnCode
			contextInfo:(void *)x
{
	if(returnCode == NSOKButton) {
		NSMutableDictionary *fileURL = [[NSMutableDictionary alloc] init];
		[fileURL setValue:[openPanel filename] forKey:@"URL"];
		[arrayController addObject:fileURL];
	}
}

Quelqu'un saurait-il m'expliquer ce qui fait faire "pshit" au Garbage Collector ?

Merci,
Aurélien
 
les premiers logs sont juste des warnings (side effect) c est le garbage collector qui parle
il manque des choses dans tes logs il doit y avoir un crash report avec l adresse incriminee

tu alloc ou y a un release qui traine dans ton code, c est proprement un probleme provenant de ton appli