From: David Peer <davidpeer@cs.huji.ac.il>
To: Micah Cowan <micah@cowan.name>, zsh-workers@sunsite.dk
Subject: Re: Bug in ulimit ?
Date: Tue, 17 Apr 2007 16:54:50 +0300 [thread overview]
Message-ID: <4624D1AA.4030902@cs.huji.ac.il> (raw)
In-Reply-To: <20070417133416.GF4955@sc.homeunix.net>
I hope kernel people will add it to the next kernel release,
but here is one rapid fix that solves the problem.
(you will not see the new limit of 1 sec but you'll still see it set to
0, but its 1 sec - believe me && try,
if you want to see it, fork another any shell and you'll see it....bug
or feature?!)
Before the line: *old_rlim = new_rlim;
add:
if (resource == RLIMIT_CPU && new_rlim.rlim_cur == 0) {
/*
* The caller is asking for an immediate RLIMIT_CPU
* expiry. But we use the zero value to mean "it was
* never set". So let's cheat and make it one second
* instead
*/
new_rlim.rlim_cur = 1;
}
You can remove the dumb if statement that does nothing cause the
assignment occurs(*old_rlim = new_rlim) before
so it has no meaning! : if (rlim_cur == 0) {....}
David
Stephane Chazelas wrote:
> On Tue, Apr 17, 2007 at 02:24:46PM +0100, Stephane Chazelas wrote:
>
>> On Tue, Apr 17, 2007 at 02:03:16PM +0100, Stephane Chazelas wrote:
>> [...]
>>
>>> So it would seem that the limit is inherited but not applied in
>>> the child (and I couldn't see any signal being blocked or
>>> ignored). So that's probably not a libc issue, rather a Linux
>>> issue.
>>>
>> [...]
>>
>
> Please ignore this email, I was talking rubbish again, I should
> probably get back to sleep....
>
>
>> The Linux code for setrlimit gives a hint:
>>
>> if (it_prof_secs == 0 || new_rlim.rlim_cur <= it_prof_secs) {
>> unsigned long rlim_cur = new_rlim.rlim_cur;
>> cputime_t cputime;
>>
>> if (rlim_cur == 0) {
>> /*
>> * The caller is asking for an immediate RLIMIT_CPU
>> * expiry. But we use the zero value to mean "it was
>> * never set". So let's cheat and make it one second
>> * instead
>> */
>> rlim_cur = 1;
>> }
>>
>> It's stored as being "0" and armed with a 1 second delay. And on a fork,
>> obviously, for the new process, there's no way to distinguish
>> between a 0 that means "not set" and a 0 that means exit
>> immediately.
>>
>> And one can verify that it_prof_expires will be set to 0 in
>> copy_signal during the fork and that 0 means not armed in
>> check_process_timers.
>>
>> But what's the point of setting a cputime of 0 anyway?
>>
>
>
--
David Peer <!> davidpeer@cs.huji.ac.il
CS System Group | Phone: 02 - 6586942
School of Computer Science and Engineering
Hebrew University of Jerusalem - Israel
Edmund Safra Campus - Givat Ram
next prev parent reply other threads:[~2007-04-17 13:55 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-17 9:00 David Peer
2007-04-17 9:30 ` Micah Cowan
2007-04-17 9:33 ` David Peer
2007-04-17 9:42 ` Stephane Chazelas
2007-04-17 10:04 ` Micah Cowan
2007-04-17 10:43 ` Stephane Chazelas
2007-04-17 10:55 ` Micah Cowan
2007-04-17 12:53 ` Stephane Chazelas
2007-04-17 13:03 ` Stephane Chazelas
2007-04-17 13:24 ` Stephane Chazelas
2007-04-17 13:34 ` Stephane Chazelas
2007-04-17 13:54 ` David Peer [this message]
2007-04-17 13:57 ` David Peer
2007-04-17 15:02 ` [OT] " Stephane Chazelas
2007-04-17 10:49 ` Micah Cowan
2007-04-17 14:15 ` Tom Alsberg
2007-04-17 15:48 ` David Peer
[not found] ` <20070417151501.GH4955@sc.homeunix.net>
2007-04-18 7:46 ` (Off-Topic) " Tom Alsberg
2007-04-18 8:22 ` Stephane Chazelas
2007-04-18 9:23 ` (Off-Topic) Bug in ulimit? Tom Alsberg
2007-04-18 10:10 ` Stephane Chazelas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4624D1AA.4030902@cs.huji.ac.il \
--to=davidpeer@cs.huji.ac.il \
--cc=micah@cowan.name \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).