 <p>I believe Instruments are not useful for any tracing in this case since the application crashes and then is auto-restarted (it's iPad/iPhone app), so all Intruments history is gone.<br> <br> I do not see much point instantiating NSMutableURLRequest as autoreleased object since it needs to be retained for the duration of async call spanning multiple idle loop cycles. NSURLConnection may retain it internally or not, but keeping an extra reference for safety should not hurt.<br> <br> The initialization code boils down to essentially the following: </p> <blockquote> <p>rq-&gt;url_encoded = [url_encode(rq-&gt;url) retain];<br> rq-&gt;http_url = [NSURL URLWithString:rq-&gt;url_encoded];<br> rq-&gt;http_request = [[NSMutableURLRequest alloc] initWithURL:rq-&gt;http_url];<br> [rq-&gt;http_request setHTTPMethod:@&quot;GET&quot;];<br> <br> NSArray* availableCookies = [rq-&gt;service.CookieJar cookiesForURL:rq-&gt;http_url];<br> NSDictionary* headers = [NSHTTPCookie requestHeaderFieldsWithCookies:availableCookies];<br> [rq-&gt;http_request setAllHTTPHeaderFields:headers];<br> rq-&gt;http_connection = [NSURLConnection alloc];<br> <br> [rq-&gt;http_connection initWithRequest:rq-&gt;http_request delegate:rq startImmediately:YES];</p> </blockquote> <p>The release procedure is that connectionDidFinishLoading calls [rq-&gt;http_connection cancel] and [rq autorelease], the latter eventually leading to:</p> <blockquote> <p>// [http_request autorelease];<br> // delayedAutoRelease(http_request);<br> [http_connection autorelease];<br> [http_url autorelease];<br> [url release];<br> [url_encoded release];<br> [response release];<br> </blockquote> <p>Note that [response release] just pairs previous [response retain] executed inside didReceiveResponse.</p> <p>If I leave first two lines commented out, NSURLRequest leaks with reference count 1 per Instruments, and this is the only leak observed.<br> Whenever I attempt to autorelease http_request whichever way as described above, a crash occurs.</p>