Mark
Mark

Reputation: 23

iOS App Crash on startup

The latest version of my app has started to crash on startup for some users. There is only 1 crash report in itunes which is included below. I have been unable to reproduce on any devices.

The changes between the two version are

  1. Integrated two third party libraries (iNotify, openUDID)
  2. Switched from the GCC compiler to the Apple LLVM 3.1 compiler (new libraries need arc support)
  3. Compiled the new libraries's code with arc enabled, left arc disabled for the rest of the project.

I added 1 line to the didFinishLaunchingWithOptions in my appdelegate for iNotify. From the stack trace through I do not think its crashing in there.

At a bit of a loss where to go with this. Any help would be appreciated. Thanks!

Hardware Model:      iPhone4,1
Process:         MyAPP [3251]
Path:            /var/mobile/Applications/228BBF42-A374-4773-8C18-EFA47CE98C02/MyAPP.app/MyAPP
Identifier:      MyAPP
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2012-05-03 19:50:07.917 -0500
OS Version:      iPhone OS 5.1 (9B179)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Last Exception Backtrace:
0   CoreFoundation                    0x3729e88f __exceptionPreprocess + 163
1   libobjc.A.dylib                   0x357a4259 objc_exception_throw + 33
2   CoreFoundation                    0x372a1a9b -[NSObject doesNotRecognizeSelector:] + 175
3   CoreFoundation                    0x372a0915 ___forwarding___ + 301
4   CoreFoundation                    0x371fb650 _CF_forwarding_prep_0 + 48
5   UIKit                             0x33aa9f93 -[UIAlertView(Private) _popoutAnimationDidStop:finished:] + 855
6   UIKit                             0x3395fc53 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 471
7   UIKit                             0x3396557d -[UIViewAnimationState animationDidStop:finished:] + 53
8   QuartzCore                        0x341fbc2f CA::Layer::run_animation_callbacks(void*) + 203
9   libdispatch.dylib                 0x344f6ee7 _dispatch_main_queue_callback_4CF$VARIANT$mp + 195
10  CoreFoundation                    0x372712ad __CFRunLoopRun + 1269
11  CoreFoundation                    0x371f44a5 CFRunLoopRunSpecific + 301
12  CoreFoundation                    0x371f436d CFRunLoopRunInMode + 105
13  GraphicsServices                  0x32101439 GSEventRunModal + 137
14  UIKit                             0x33978e7d UIApplicationMain + 1081
15  MyAPP                          0x00002bfb main (main.m:14)
16  MyAPP                          0x00002bb4 0x00002bb4


Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib            0x3571d32c __pthread_kill + 8
1   libsystem_c.dylib                 0x3186b208 pthread_kill + 48
2   libsystem_c.dylib                 0x31864298 abort + 88
3   libc++abi.dylib                   0x34e70f64 abort_message + 40
4   libc++abi.dylib                   0x34e6e346 _ZL17default_terminatev + 18
5   libobjc.A.dylib                   0x357a4350 _objc_terminate + 140
6   libc++abi.dylib                   0x34e6e3be _ZL19safe_handler_callerPFvvE + 70
7   libc++abi.dylib                   0x34e6e44a std::terminate() + 14
8   libc++abi.dylib                   0x34e6f81e __cxa_rethrow + 82
9   libobjc.A.dylib                   0x357a42a2 objc_exception_rethrow + 6
10  CoreFoundation                    0x371f4506 CFRunLoopRunSpecific + 398
11  CoreFoundation                    0x371f4366 CFRunLoopRunInMode + 98
12  GraphicsServices                  0x32101432 GSEventRunModal + 130
13  UIKit                             0x33978e76 UIApplicationMain + 1074
14  MyAPP                          0x00002bf4 main (main.m:14)
15  MyAPP                          0x00002bac 0x00002bac

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib            0x3570d3a8 kevent + 24
1   libdispatch.dylib                 0x344f7f04 _dispatch_mgr_invoke + 708
2   libdispatch.dylib                 0x344f7c22 _dispatch_mgr_thread + 30

Thread 2 name:  WebThread
Thread 2:
0   libsystem_kernel.dylib            0x3570d004 mach_msg_trap + 20
1   libsystem_kernel.dylib            0x3570d1fa mach_msg + 50
2   CoreFoundation                    0x372723ec __CFRunLoopServiceMachPort + 120
3   CoreFoundation                    0x37271124 __CFRunLoopRun + 876
4   CoreFoundation                    0x371f449e CFRunLoopRunSpecific + 294
5   CoreFoundation                    0x371f4366 CFRunLoopRunInMode + 98
6   WebCore                           0x32eb40f0 _ZL12RunWebThreadPv + 396
7   libsystem_c.dylib                 0x3182c72e _pthread_start + 314
8   libsystem_c.dylib                 0x3182c5e8 thread_start + 0

Thread 3:
0   libsystem_kernel.dylib            0x3571dcd4 __workq_kernreturn + 8
1   libsystem_c.dylib                 0x31826f36 _pthread_wqthread + 610
2   libsystem_c.dylib                 0x31826cc8 start_wqthread + 0

Thread 4 name:  com.apple.CFSocket.private
Thread 4:
0   libsystem_kernel.dylib            0x3571d570 __select + 20
1   CoreFoundation                    0x3727663a __CFSocketManager + 726
2   libsystem_c.dylib                 0x3182c72e _pthread_start + 314
3   libsystem_c.dylib                 0x3182c5e8 thread_start + 0

Thread 5:
0   libsystem_kernel.dylib            0x3571dcd4 __workq_kernreturn + 8
1   libsystem_c.dylib                 0x31826f36 _pthread_wqthread + 610
2   libsystem_c.dylib                 0x31826cc8 start_wqthread + 0

Some additional code.

There is an alertview defined in the appdelegate as follows:

#import <UIKit/UIKit.h>


@class MyAPPViewController;


@interface MyAPPAppDelegate : NSObject <UIApplicationDelegate> {
    UIViewController *rvc;
    UIAlertView *m_cAlertControl;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;


-(BOOL)shouldNag;
-(void)shouldEnableUI:(BOOL)pIsEnable;
-(void)updateRunCount;

@end

and a method implemented in the app delegate as follows:

-(void)shouldEnableUI:(BOOL)pIsEnable
{ 
    if(NO == pIsEnable)
    {
        if (nil == m_cAlertControl) {
        m_cAlertControl = [[UIAlertView alloc] init];
    }
    m_cAlertControl.backgroundColor = [UIColor clearColor];
    m_cAlertControl.opaque = NO;
    [m_cAlertControl setHidden:YES];
    [m_cAlertControl show];
}
else {
    if (nil != m_cAlertControl) {
        [m_cAlertControl dismissWithClickedButtonIndex:0 animated:YES];
    }
}

}

The View controller's make calls to the method like this:

[appDelegate shouldEnableUI:NO];

Upvotes: 2

Views: 4367

Answers (2)

rishi
rishi

Reputation: 11839

On seeing crash logs issue seems like call has been made to UIAlertViewDelegate after it has been released.

You need to release that in the controller where you are using alert -

-(void)dealloc {
    self.alertView.delegate = nil; //setting delegate to nil
    self.alertView = nil; //if you have defined alert as property
    //other release statements of your controller
    [super dealloc];
}

You can add some code of your app if you want some other information, or this is not the case with your app.

EDIT 1 -

-(void)dealloc {
    m_cAlertControl.delegate = nil; //setting delegate to nil
    [m_cAlertControl release];

    //other release statements of your controller
    [super dealloc];
}

Upvotes: 4

simongking
simongking

Reputation: 740

I would say that this is the biggest pointer you have

[NSObject doesNotRecognizeSelector:] + 175

Looks like you have a missing selector method somewhere.

Upvotes: 0

Related Questions