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:
parent
e5ca8e5e73
commit
d87a4d1f4e
15
src/nsterm.m
15
src/nsterm.m
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user