title: Crash with NSURLSessionUploadTask when trying to upload in background
body: <p>In my app I try to upload some data to a server when the app enters the background.
  This is the code I am using:</p>
  
  <h2>Session</h2>
  
  <pre><code>self.session = [self backgroundSession];
  </code></pre>
  
  <p>This is how my session is set up</p>
  
  <pre><code>- (NSURLSession *)backgroundSession
  {
      static NSURLSession *session = nil;
      static dispatch_once_t onceToken;
      dispatch_once(&amp;onceToken, ^{
          NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.uploadSession"];
          configuration.HTTPMaximumConnectionsPerHost = 1;
          session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
      });
      return session;
  }
  </code></pre>
  
  <h2>Initiate upload</h2>
  
  <pre><code>- (void)applicationDidEnterBackground:(UIApplication *)application
  {
      [self uploadPossibleDrives];
  }
  </code></pre>
  
  <h2>Upload</h2>
  
  <pre><code>// Start uploading the remaing gps log in th right order:
  
  NSOperationQueue *queue = [[NSOperationQueue alloc] init];
  [queue setMaxConcurrentOperationCount:1];
  
  for (int i = 0; i &lt; arrayOfGPSLogChunks.count; i++)
  {
  
      // This will ensure the chunks are sent in the right order
      // Add an operation as a block to a queue:
  
      [queue addOperationWithBlock: ^ {
  
          NSData *requestData;
          NSMutableURLRequest *request;
  
          if (i == 0)
          {
              NSLog(@"Initial drive upload %i",ID.integerValue);
  
              requestData = [NSJSONSerialization dataWithJSONObject:historyToUpload options:NSJSONWritingPrettyPrinted error:nil];
              request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kInitialUploadDriveURL];
              [request setHTTPMethod:@"POST"];
              [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
              [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
  
          }
          else
          {
              NSLog(@"Chunk %i",i);
  
              NSMutableDictionary *chunk = [[NSMutableDictionary alloc] init];
              [chunk setObject:driveID forKey:@"driveID"];
              [chunk setObject:[arrayOfGPSLogChunks objectAtIndex:i] forKey:@"gpsLog"];
  
              requestData = [NSJSONSerialization dataWithJSONObject:chunk options:NSJSONWritingPrettyPrinted error:nil];
              request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kUploadDrivesChunkURL]];
              [request setHTTPMethod:@"POST"];
              [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
              [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
  
  
          }
  
          NSLog(@"_session: %@",self.session);
          NSLog(@"request: %@",request);
          NSLog(@"requestData: %lu",(unsigned long)requestData.length);
          NSLog(@"uploadTask: %@",self.uploadTask);
  
          self.uploadTask = [self.session uploadTaskWithRequest:request fromData:requestData];
          [self.uploadTask resume];
  
          if (i == arrayOfGPSLogChunks.count-1)
          {
              // All gps logs were uploaded so now we save its state as 'uploaded to server':
              NSLog(@"Finished sending to server!");
              [self setSentToServerForDriveID:ID];
          }
  
      }];
  
  }
  </code></pre>
  
  <h2>Error</h2>
  
  <p>Now here is the error I get:</p>
  
  <p><img src="https://i.stack.imgur.com/DxE3W.png" alt="enter image description here"></p>
  
  <p>I do hope somebody can help me out. I have looked into everything I know but cant seem to figure out what ist going wrong.
  I also tried uploading without using the blocks but the result is the same.</p>
  
  <p>Any help would be greatly appreciated!</p>