2010-12-08 9 views
2

j'ai eu les éléments suivants crash rapport:Des indices sur le crash "SIGSEGV"?

OS Version:  iPhone OS 4.2.1 
Report Version: 104 

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x12803ea4 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x0000930a realizeClass(class_t*) + 18 
1 libobjc.A.dylib      0x0000935d realizeClass(class_t*) + 101 
2 libobjc.A.dylib      0x0000953f prepareForMethodLookup + 51 
3 libobjc.A.dylib      0x00005f39 lookUpMethod + 41 
4 libobjc.A.dylib      0x00003781 _class_lookupMethodAndLoadCache + 13 
5 libobjc.A.dylib      0x000034b7 objc_msgSend_uncached + 27 
6 Oculus        0x0001449f -[TestSingleView downLightingEnded] (TestSingleView.m:52) 

Dans la méthode suivante:

- (void) downLightingEnded { 
    [currentTestItem removeFromSuperview]; 
    currentTestItem = nil; 
    CGRect frame = CGRectMake(0, 0, [myTestData heightOfRow:newI], [myTestData heightOfRow:newI]); //line 52 
    currentTestItem = [[TestItemView alloc] initWithFrame:frame AndEyeTestItem:[myTestData signAtRow:newI Column:newJ]]; 
    currentTestItem.alpha = 0.0; 
    [self addSubview:currentTestItem]; 
    currentTestItem.center = self.center; 

    [UIView beginAnimations:nil context:nil]; 
    currentTestItem.alpha = 1.0; 
    [UIView commitAnimations]; 

    [currentTestItem release]; 
} 

Bien sûr « currentTestItem » pourrait être nul lorsque la méthode est startet, mais l'envoi d'un message à ISN nul 't un problème, alors ce n'est pas la raison de l'accident.

Des idées dans quelle direction je devrais chercher?

Je ne savais pas où chercher le bogue, parce que c'est un rapport envoyé par un client, et je ne suis pas encore capable de le recréer.

+3

Quelle ligne est le numéro 52? – Migol

+0

Bon point, le problème semble résider dans "myTestData". J'ai été très fixé sur "currentTestItem" jusqu'à présent, merci. Malheureusement, je ne peux pas créer un crash en cliquant ici, donc je suis toujours coincé. – Bersaelor

+3

'6 Oculus' ... Est-ce que c'est ce que je pense? –

Répondre

3

CurrentTestItem peut-il être non nul, mais pointant vers un objet libéré?

Vérifiez en permettant Zombies (Astuce n ° 1):

http://www.loufranco.com/blog/files/debugging-memory-iphone.html

Modifier (basé sur le commentaire à la question par OP): myTestData pourrait être un zombie - vérifier en permettant des zombies. Fondamentalement, il dit à Objective-C de ne pas libérer les objets qui ont un nombre de retenue de 0. Au lieu de cela, il les marquera comme un Zombie. Si vous envoyez un message à un Zombie, il vous le fera savoir.

+0

Puisqu'il lui attribue zéro, je ne pense pas que ce soit ça. –

+0

Il envoie d'abord un message de libération à l'ancienne instance avant de lui attribuer la valeur zéro. – Eiko

+0

Ce que Lou a dit dans son edit; jusqu'à ce que nous voyions plus de code, l'hypothèse que 'myTestData' a été sur-relâchée est une bonne chose. (J'ai édité la réponse pour ne pas mentionner 'retainCount', un objet ne peut jamais avoir un' retainCount' de zéro ...) – bbum