2012-09-05 1 views
5

Ho un arresto anomalo che si verifica solo nelle distribuzioni ad hoc TestFlight. So che cosa sta causando il crash (un semplice ciclo while, vedi sotto), ma non capisco perché non si blocca sul mio simulatore né su iPhone o iPad (con un profilo di sviluppo).SIGSEGV Crash su dispositivo iOS TestFlight

Distribuisco costantemente build ad hoc per tracciare il crash, ma alla fine ho rinunciato. Come posso rintracciare questo bug in modo più efficiente?

Ecco la relazione crash PROVA Scelta dei colori:

Exception reason 

SIGSEGV 

Stacktrace 

PRIMARY THREAD THREAD 0 

0 Meernotes 0x0019649a testflight_backtrace + 158 
1 Meernotes 0x001970c4 TFSignalHandler + 244 
2 libsystem_c.dylib 0x32d9d7ec _sigtramp + 48 
3 libobjc.A.dylib 0x37d34eac _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 224 
4 libobjc.A.dylib 0x37d34eac _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 224 
5 libobjc.A.dylib 0x37d34dc8 _objc_autoreleasePoolPop + 12 
6 CoreFoundation 0x358e1cfe _CFAutoreleasePoolPop + 18 
7 UIKit 0x333d5c92 _wrapRunLoopWithAutoreleasePoolHandler + 42 
8 CoreFoundation 0x35965b1a __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18 
9 CoreFoundation 0x35963d56 __CFRunLoopDoObservers + 258 
10 CoreFoundation 0x359640b0 __CFRunLoopRun + 760 
11 CoreFoundation 0x358e74a4 CFRunLoopRunSpecific + 300 
12 CoreFoundation 0x358e736c CFRunLoopRunInMode + 104 
13 GraphicsServices 0x37583438 GSEventRunModal + 136 
14 UIKit 0x333f3cd4 UIApplicationMain + 1080 
15 Meernotes 0x000850da main (main.m:16) 
16 Meernotes 0x0008508f start + 39 

E qui è il codice che sta provocando (ma che va bene sul simulatore/iphone):

 while (textStillFits) { 

     textToBeKeptBeforeCutting = textToBeKept; 
     textToBeMovedBeforeCutting = textToBeMoved; 

     rangeCutOffPosition = [settings determineFirstCutOffRangeOfString:textToBeMoved]; 
     textToBeKeptTemp = [textToBeMoved substringToIndex:rangeCutOffPosition.location]; 
     textToBeMovedTemp = [textToBeMoved substringFromIndex:rangeCutOffPosition.location]; 
     textToBeMoved = textToBeMovedTemp; 
     textToBeKept = [NSString stringWithFormat:@"%@%@", textToBeKept, textToBeKeptTemp]; 
     NSUInteger l = [settings linesOfText:textToBeKept]; 
     if (l > maxLines) { 
      textStillFits = NO; 
      textToBeKept = textToBeKeptBeforeCutting; 
      textToBeMoved = textToBeMovedBeforeCutting; 
      // brakes here! 
     }else { 
      textStillFits = YES; 
     } 
    } 

ho dato un'occhiata a questo , ma non ha aiutato: ad hoc iphone sigsegv crash

Un altro contesto, come @ott ha detto che NSNotFound può causare questo:

-(NSRange)determineFirstCutOffRangeOfString:(NSString *)s { 

    NSRange rangeSpace = [s rangeOfString:@" " options:NSCaseInsensitiveSearch]; 
    NSRange rangeReturn = [s rangeOfString:@"\n" options:NSCaseInsensitiveSearch]; 
    if (rangeSpace.location == NSNotFound && rangeReturn.location == NSNotFound) { 
     rangeSpace = NSMakeRange(1, 0); // don't take 0,0 as this will lead to endless loop 
     rangeReturn = NSMakeRange(1, 0); 
     NSLog(@"NEITHER SPACE NOR RETURN FOUND"); 
    } 

    NSRange rangeCutOffPosition = NSMakeRange(0, 0); 
    if (rangeSpace.location < rangeReturn.location) { 
     // i.e. if the space char is the lowest char where you can cut off 
     rangeCutOffPosition = NSMakeRange(rangeSpace.location+1,0); // +1, i.e. always cut off AFTER the space 
    } else { 
     // i.e. if the return char is the lowest char where you can cut off 
     rangeCutOffPosition = NSMakeRange(rangeReturn.location+1,0); // +1, i.e. always cut off AFTER the return 
    } 

    return rangeCutOffPosition; 
} 
+1

Potrebbe essere che 'rangeCutOffPosition' diventa qualcosa come' NotFound'? Il dispositivo è solitamente più schizzinoso dove il simulatore lo ignora. Puoi inserire alcuni NSLog() per vedere cosa sta succedendo, o attraversarlo. –

+0

@ott I init init NSRange rangeCutOffPosition = NSMakeRange (0, 0); quindi non può essere NSNotFound. Tuttavia, ho alcuni metodi prima di controllare alcuni altri intervalli e questo potrebbe restituire NSNotFound. Ma come può essere un problema? –

+0

@ott Ho fornito un altro contesto di codice sopra. Grazie per l'aiuto! –

risposta

0

Il loro ultimo sdk 1.2.4 risolve questo problema!