> On Feb 5, 2015, at 3:54 PM, Graham Cox <graham....@bigpond.com> wrote:
> 
> This is great. Running from XCode I get 7168, archiving and exporting a final 
> build of my app, I get 256... bingo! Only the built version was seeing this 
> crash, another reason I was having a lot of trouble debugging it.
> 
> With 50 tasks, creating 50 NSURLSession, that accounts for 100 file 
> descriptors. I'm supposing the rest come from other places - in fact each of 
> my tasks potentially creates 2 NSURLSession, though these second ones are 
> highly conditional on what the first ones return, and usually are NOT 
> created, so I doubt that I was immediately creating 200 file handles.

You can use `sudo lsof -p <PID> -a -d 0-99999` to list the file descriptors in 
a process. (The `-d 0-99999` flag hides open files that don't have file 
descriptors.)


>> If you hit that limit you should see errors from various network API. File a 
>> bug report if you find some API that causing weird crashes instead of 
>> failing gracefully or halting with an appropriate error message when you run 
>> out of file descriptors.
> 
> Well I'm seeing EXC_GUARD. Is that considered "graceful"? From the user's 
> perspective it isn't, because it causes summary termination of the app which 
> is almost always reported as "it crashed, wah!, you suck!". Ultimately this 
> should propagate up to the NSURLSession API in some way - e.g. by returning 
> nil instead of an object if it can't create its resources. I think one 
> problem there is that the API is asynchronous - it creates the object which 
> then starts a thread to open the socket - that's what the stack trace implies 
> anyway. That would make it hard to simply not return a valid object. Not sure 
> what the right design would be there - that's one for the networking 
> architects to ponder I guess.

EXC_GUARD is very bad, usually on the order of use-after-free bad. Acceptable 
results are an error or exception from the API, preferably one that says "too 
many open files", or a crash log that says "too many open files". Anything that 
doesn't say "too many open files" somewhere is hard to diagnose.


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to