1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-11 16:08:13 +00:00

Limit RLIMIT_NOFILE to FD_SETSIZE on macOS

* src/nsterm.m ([EmacsApp applicationDidFinishLaunching:]): Call
CoreFoundation functions that increase RLIMIT_NOFILE behind our back
during startup, and then set RLIMIT_NOFILE back to FD_SETSIZE to avoid
crashes in setup_process_coding_system  (Bug#39164).
This commit is contained in:
YAMAMOTO Mitsuharu 2020-04-15 10:04:21 +02:00 committed by Robert Pluim
parent e5ca8e5e73
commit d87a4d1f4e

View File

@ -5812,6 +5812,21 @@ - (void)applicationDidFinishLaunching: (NSNotification *)notification
#endif
#ifdef NS_IMPL_COCOA
/* Some functions/methods in CoreFoundation/Foundation increase the
maximum number of open files for the process in their first call.
We make dummy calls to them and then reduce the resource limit
here, since pselect cannot handle file descriptors that are
greater than or equal to FD_SETSIZE. */
CFSocketGetTypeID ();
CFFileDescriptorGetTypeID ();
[[NSFileHandle alloc] init];
struct rlimit rlim;
if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
&& rlim.rlim_cur > FD_SETSIZE)
{
rlim.rlim_cur = FD_SETSIZE;
setrlimit (RLIMIT_NOFILE, &rlim);
}
if ([NSApp activationPolicy] == NSApplicationActivationPolicyProhibited) {
/* Set the app's activation policy to regular when we run outside
of a bundle. This is already done for us by Info.plist when we