title: Objective-C crash on __destroy_helper_block_
body: <p>I have an iOS application that's crashing on calls like <code>__destroy_helper_block_253</code> and <code>__destroy_helper_block_278</code> and I'm not really sure what either "destroy_helper_block" is referencing or what the number after it is supposed to point to.</p>
  
  <p>Does anyone have any pointers for how to track down where exactly these crashes might be occuring?</p>
  
  <p>Here's an example traceback (note that the lines with <code>__destroy_helper_block</code> only references the file it's contained in and nothing else, when normally the line number would be included as well).</p>
  
  <pre><code>Thread : Crashed: com.apple.root.default-priority
  0  libdispatch.dylib              0x000000018fe0eb2c _dispatch_semaphore_dispose + 60
  1  libdispatch.dylib              0x000000018fe0e928 _dispatch_dispose + 56
  2  libdispatch.dylib              0x000000018fe0e928 _dispatch_dispose + 56
  3  libdispatch.dylib              0x000000018fe0c10c -[OS_dispatch_object _xref_dispose] + 60
  4  Example App                    0x00000001000fe5a4 __destroy_helper_block_278 (TSExampleApp.m)
  5  libsystem_blocks.dylib         0x000000018fe53908 _Block_release + 256
  6  Example App                    0x00000001000fda18 __destroy_helper_block_253 (TSExampleApp.m)
  7  libsystem_blocks.dylib         0x000000018fe53908 _Block_release + 256
  8  libdispatch.dylib              0x000000018fe0bfd4 _dispatch_client_callout + 16
  9  libdispatch.dylib              0x000000018fe132b8 _dispatch_root_queue_drain + 556
  10 libdispatch.dylib              0x000000018fe134fc _dispatch_worker_thread2 + 76
  11 libsystem_pthread.dylib        0x000000018ffa16bc _pthread_wqthread + 356
  </code></pre>
  
  <p>Edit 1: Here's an example of one of the blocks defined in the file where the crash occurs (with application-specific code edited out).</p>
  
  <pre><code>- (void)doSomethingWithCompletion:(void (^)())completion {
      void (^ExampleBlock)(NSString *) = ^{
          NSNotification *notification = [NSNotification notificationWithName:kExampleNotificationName object:nil userInfo:nil];
          [[NSNotificationCenter defaultCenter] postNotification:notification];
  
          if (completion) {
              completion();
          }
      };
  
      // Async network call that calls ExampleBlock on either success or failure below...
  }
  </code></pre>
  
  <p>There are many other blocks in the file, but most of them are provided as arguments to methods instead of being defined first and then referenced later.</p>
  
  <p>Edit 2: Added more context to above function.</p>