> 
>> 
>> 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.
> 

I don’t think that’s very graceful, no. Since the only ‘documentation’ on 
EXC_GUARD seems to be in the replies in devforums it’s hard to say exactly what 
the contract is. However that reply, to my reading, indicates means someone 
called a normal filehandle method on a guarded filehandle, ie violating the 
guard. The header file says this

#define EXC_GUARD               12      /* Violated guarded resource 
protections */

Whereas what you seem to have here is ‘filesystem call to a guarded resource 
failed in some normal way I could have reported properly’. 

Yes you’re out of filehandles and so there’s a failure, would have been much 
more useful to have the original failure code logged [EMFILE] than EXC_GUARD 
which (again to my reading) means something entirely different and is 
misleading. So I’d file a bug against that one. 

By the way - where do all these disparate max numbers of filehandles come from? 
I see the launchd one, makes sense, stuff launched from bash inherits bash’s 
2560, stuff launched from finder on my box also gets 2560 (why), Xcode has its 
own ideas, which I suppose makes some sense as debugged processes probably need 
more handles and whatever Graham did to launch his process in this case got 
256, which I haven’t yet found a way to get a process on 10.10 to do by default 
yet barring making launchd launch it. 


_______________________________________________

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