title: objc_msgSend() and EXC_BAD_ACCESS in cocoa app
body: <p>Generally speaking, how do we avoid objc_msgSend() crashes in our Mac Apps? Also, how do we avoid the EXC_BAD_ACCESS crashes? Why do we get it? How can we manage these kinds of errors? They are on the increase on our app and would like to ask guidance and help on this matter.</p>
  
  <p>We are using XCode 3.2.5 and our project is a Cocoa one, using Objective-C language. Our webservice is an IIS-powered ASP.Net website (from where we can download/upload an XML files and images).</p>
  
  <p>We are developing a cocoa-app in Mac, and we encounter this like two times in ten tries of launching the app. This app has a sketch app, and when we run the app, it just freezes and crashes within 1 minute without doing anything. Some functions this app does is:</p>
  
  <ul>
  <li>download xml from web and interpret on our app</li>
  <li>login to a web service</li>
  <li>has a sketch pad</li>
  <li>has a timer</li>
  <li>drag and drop functions</li>
  <li>upload xml data</li>
  <li>download images and display on our app</li>
  </ul>
  
  <p>The crash is not limited to the post-launch of the app. Sometimes, when manipulating the program like drag-drop, downloading dataset, and doing add/edit/delete functions on our mac app, the app crashes as well.</p>
  
  <p>Honestly speaking, we are relatively new to this development platform and environment, and we are still learning. Can you guide us on this issue? Like some resources or hints on where we did it wrong? Thanks a lot and more power to everyone here.</p>
  
  <hr>
  
  <p>The folowing is an example of a crash report:</p>
  
  <pre><code>Process:         Sketch [63065]
  Path:            /Users/william_hooley_27Inch/Desktop/untitled folder/MacGlass.app/Contents/MacOS/Sketch
  Identifier:      com.apple.CocoaExamples.Sketch
  Version:         1.049 (48.1)
  Code Type:       X86 (Native)
  Parent Process:  launchd [116]
  Date/Time:       2011-04-14 13:12:15.421 +1000
  OS Version:      Mac OS X 10.6.5 (10H574)
  Report Version:  6
  Interval Since Last Report:          714907 sec
  Crashes Since Last Report:           17
  Per-App Interval Since Last Report:  206437 sec
  
  Per-App Crashes Since Last Report:   5
  Anonymous UUID:                     
  086C860F-E28E-4256-84F9-9692782AAD01
  Exception Type:  EXC_BAD_ACCESS
  (SIGBUS) Exception Codes:
  KERN_PROTECTION_FAILURE at
  0x0000000000000044 Crashed Thread:  0 
  Dispatch queue: com.apple.main-thread
  Thread 0 Crashed:  Dispatch queue:
  com.apple.main-thread 0  
  com.apple.AppKit             
  0x91a8e6cb
  _recursiveInvalidateCachedVisibleRectValue
  + 24 1   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  2   com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 3   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  4   com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 5   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  6   com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 7   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  8   com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 9   com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  10  com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 11  com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  12  com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 13  com.apple.CoreFoundation      0x995f02c0 CFArrayApplyFunction + 224
  14  com.apple.AppKit             
  0x91a8e70d
  _recursiveInvalidateCachedVisibleRectValue
  + 90 15  com.apple.AppKit              0x91a8e2e1 -[NSView _setSuperview:] +
  684 16  com.apple.AppKit             
  0x91a8db02 -[NSView addSubview:] + 383
  17  com.apple.CocoaExamples.Sketch
  0x00094cbf -[viewTasksDisplay Appear:]
  + 242 18  com.apple.CocoaExamples.Sketch
  0x000c2e8f -[MainWindow
  ShowLeftScreen:] + 964 19 
  com.apple.CocoaExamples.Sketch
  0x0003e301 -[viewOptionMenuItemmouseDown:] + 2055 20 
  com.apple.AppKit             
  0x91bc6c68 -[NSWindow sendEvent:] +
  5549 21  com.apple.AppKit             
  0x91adf817 -[NSApplication sendEvent:]
  + 6431 22  com.apple.AppKit              0x91a732a7 -[NSApplication run] + 917
  23  com.apple.AppKit             
  0x91a6b2d9 NSApplicationMain + 574 24 
  com.apple.CocoaExamples.Sketch
  0x0001b33e main + 30 25 
  com.apple.CocoaExamples.Sketch
  0x00001eba start + 54 Thread 1: 
  Dispatch queue:
  com.apple.libdispatch-manager 0  
  libSystem.B.dylib            
  0x98002982 kevent + 10 1  
  libSystem.B.dylib            
  0x9800309c _dispatch_mgr_invoke + 215
  2   libSystem.B.dylib            
  0x98002559 _dispatch_queue_invoke +
  163 3   libSystem.B.dylib            
  0x980022fe _dispatch_worker_thread2 +
  240 4   libSystem.B.dylib            
  0x98001d81 _pthread_wqthread + 390 5  
  libSystem.B.dylib            
  0x98001bc6 start_wqthread + 30 Thread
  2: 0   libSystem.B.dylib            
  0x97fdc0fa mach_msg_trap + 10 1  
  libSystem.B.dylib            
  0x97fdc867 mach_msg + 68 2  
  com.apple.CoreFoundation     
  0x995f837f __CFRunLoopRun + 2079
  </code></pre>
  
  <hr>
  
  <p>Another crash report:</p>
  
  <pre><code>Date/Time:       2011-04-14 13:27:02
  +1000 OS Version:      10.6.5 (Build 10H574) Architecture:    x86_64 Report
  Version:  6 Command:         MacGlass
  Path:           
  /Users/william_hooley_27Inch/Desktop/untitled
  folder/MacGlass.app/Contents/MacOS/Sketch
  Version:         1.050 (48.1) Parent: 
  launchd [116] PID:             63101
  Event:           hang Duration:       
  3.58s (sampling started after 2 seconds) Steps:           16 (100ms
  sampling interval) Pageins:         0
  Pageouts:        0 Process:        
  Sketch [63101] Path:           
  /Users/william_hooley_27Inch/Desktop/untitled
  folder/MacGlass.app/Contents/MacOS/Sketch
  UID:             501   Thread edef3d4 
  DispatchQueue 100   User stack:
      16 start + 54 (in Sketch) [0x1f6a]
        16 main + 30 (in Sketch) [0x1b3ee]
          16 NSApplicationMain + 574 (in AppKit) [0x91a6b2d9]
            16 -[NSApplication run] + 821 (in AppKit) [0x91a73247]
              16 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
  + 156 (in AppKit) [0x91ab0fce]
                16 _DPSNextEvent + 847 (in AppKit) [0x91ab178d]
                  16 BlockUntilNextEventMatchingListInMode
  + 81 (in HIToolbox) [0x95bd0bd6]
                    16 ReceiveNextEventCommon + 354 (in
  HIToolbox) [0x95bd0d51]
                      16 RunCurrentEventLoopInMode + 392 (in
  HIToolbox) [0x95bd0f9c]
                        16 CFRunLoopRunInMode + 97 (in
  CoreFoundation) [0x995f7291]
                          16 CFRunLoopRunSpecific + 452 (in
  CoreFoundation) [0x995f7464]
                            16 __CFRunLoopRun + 8059 (in CoreFoundation) [0x995f9adb]
                              16 __NSFireTimer + 141 (in Foundation) [0x972c39b0]
                                16 _handleWindowNeedsDisplay + 696 (in AppKit) [0x91adb28a]
                                  16 -[NSWindow displayIfNeeded] + 204 (in AppKit) [0x91aa9d40]
                                    16 -[NSView displayIfNeeded] + 818 (in AppKit) [0x91ae0a57]
                                      16 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
  + 4122 (in AppKit) [0x91b801cf]
                                        16 CAViewEndDraw + 134 (in QuartzCore)
  [0x961bd926]
                                          16 pthread_cond_wait$UNIX2003 + 73 (in
  libSystem.B.dylib) [0x9800b9f8]
                                            16 __semwait_signal + 10 (in
  libSystem.B.dylib) [0x9800a0a6]  
  Kernel stack:
      15 semaphore_wait_continue + 0 [0x22a3dd]
      1 lo_alltraps + 454 [0x2a08a6]
        1 i386_astintr + 47 [0x2a9a9a]
          1 ast_taken + 247 [0x219107]
            1 bsd_ast + 806 [0x489088]
              1 postsig + 432 [0x4861df]
                1 exit1 + 449 [0x47ab28]
                  1 task_terminate_internal + 315
  [0x22c56a]
  </code></pre>