Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 15 Nov 2023 17:39:03 -0500
From: Rich Felker <dalias@...c.org>
To: Tavian Barnes <tavianator@...ianator.com>
Cc: musl@...ts.openwall.com
Subject: Re: Feature request: posix_spawnattr_setrlimit_np()

On Wed, Nov 15, 2023 at 05:00:51PM -0500, Tavian Barnes wrote:
> I have a program that raises its soft RLIMIT_NOFILE, but wants to
> spawn processes with the original value (in case they use select(),
> for example).  There seems to be no nice way to do this with
> posix_spawn().  I can temporarily lower the rlimit in the parent, but
> that interferes with other threads, and can make posix_spawn() fail
> with EMFILE.
> 
> Corresponding glibc feature request:
> https://sourceware.org/bugzilla/show_bug.cgi?id=31049

I don't have any objection to this as long as it's coordinated and
there's agreement from other implementors, but there *is* a way to do
it already. You posix_spawnp:

sh -c 'ulimit -n whatever && exec "$0" "$@"' your_program args...

This is the general solution to doing all sorts of "child process
state setup" things that posix_spawn doesn't have a dedicated
attribute for.

Note that for a proposal for setting rlimits via an attribute, one
complication that needs to be specified is whether the limits take
place before or after file actions, since they could change the
outcome of file actions. I'm not sure what the answer is, but just
YOLO'ing an implementation without thinking about that is a bad idea.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.