Date: Tue, 12 Apr 2011 13:11:01 GMT From: Petr Lampa <lampa@fit.vutbr.cz> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/156352: misleading "maxproc limit exceeded by uid" message Message-ID: <201104121311.p3CDB1qG049803@red.freebsd.org> Resent-Message-ID: <201104121320.p3CDKAhS097377@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 156352 >Category: kern >Synopsis: misleading "maxproc limit exceeded by uid" message >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Apr 12 13:20:10 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Petr Lampa >Release: 8.2-STABLE >Organization: BUT FIT >Environment: FreeBSD xxxx 8.2-STABLE FreeBSD 8.2-STABLE #35: Fri Feb 25 22:05:28 CET 2011 >Description: The message maxproc limit exceeded by uid xxxx, please see tuning(7) and login.conf(5) can be misleading when user hits his process limit. In this case notice about maxproc and tuning is pointless, the message shoud be rather: user xxxx process limit exceeded, see ulimit -u and login.conf Short history. Rev 1.171 (2002) changed handling of user proclimit to "goto fail" - the same as for maxproc case. Rev 1.203 (2003) added the message with this comment: ---- Add a ratelimited message of the form "maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5)." Which will be triggered whenever a user hits his/her maxproc limit or the systemwide maxproc limit is reached. ---- >How-To-Repeat: >Fix: --- kern_fork.c.old 2011-04-12 15:04:57.000000000 +0200 +++ kern_fork.c 2011-04-12 15:08:48.000000000 +0200 @@ -216,6 +216,7 @@ struct vmspace *vm2; vm_ooffset_t mem_charged; int error; + const char *msg; /* Can't copy and clear. */ if ((flags & (RFFDG|RFCFDG)) == (RFFDG|RFCFDG)) @@ -339,6 +340,7 @@ sx_xlock(&allproc_lock); if ((nprocs >= maxproc - 10 && priv_check_cred(td->td_ucred, PRIV_MAXPROC, 0) != 0) || nprocs >= maxproc) { + msg = "maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5).\n"; error = EAGAIN; goto fail; } @@ -359,6 +361,7 @@ PROC_UNLOCK(p1); } if (!ok) { + msg = "user %i process limit exceeded, please see ulimit -u and login.conf(5).\n"; error = EAGAIN; goto fail; } @@ -803,8 +806,7 @@ fail: sx_sunlock(&proctree_lock); if (ppsratecheck(&lastfail, &curfail, 1)) - printf("maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5).\n", - td->td_ucred->cr_ruid); + printf(msg, td->td_ucred->cr_ruid); sx_xunlock(&allproc_lock); #ifdef MAC mac_proc_destroy(newproc); >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104121311.p3CDB1qG049803>