/usr/bin/limits (WAS: Re: Apache.sh on current)

From: Yuriy Tsibizov <Yuriy.Tsibizov_at_gfk.ru>
Date: Tue, 2 Sep 2008 09:53:11 +0400 (MSD)
On Mon, 1 Sep 2008, Manfred Antar wrote:

> At 07:19 AM 9/1/2008, Claus Guttesen wrote:
>>> /usr/local/etc/rc.d/apache.sh :
>>> /usr/bin/limits -e -U www
>>> dumps core when starting apache on current
>>> This something new, not sure when it started as I have been out of the Country for the past month.
>>> Kernel and usr are current
>>> Also /usr/local/sbin/apachect :
>>> eval `limits -e -C daemon`
>>> also dumps core
>>
>> Are you using apache and php?
>>
>> --
>> regards
>> Claus
>>
>> When lenity and cruelty play for a kingdom,
>> the gentler gamester is the soonest winner.
>>
>> Shakespeare
>
> Yes
> But if I just do limits -e -U root I get a core dump.
> I don't think the problem is with apache.
> limits -e -U (Any User) dumps core

It's not apache problem. There was new limit added to kernel, and 
/usr/src/usr.bin/limits was not updated.

looking in limits core (lines are a bit different, I had some debug 
printfs in .c file):

(gdb) bt
#0  0x00000000 in ?? ()
#1  0x0804937d in main (argc=3, argv=0xbfbfed44)
      at /usr/src/usr.bin/limits/limits.c:341
   (gdb) l
341		    val = resources[rcswhich].func(lc, resources[rcswhich].cap, limits[rcswhich].rlim_cur, limits[rcswhich].rlim_cur);
342		    limits[rcswhich].rlim_cur = resources[rcswhich].func(lc, str, val, val);
343		    /* maximum value overridden by resourcename or resourcename-max */
344		    sprintf(str, "%s-max", resources[rcswhich].cap);
345		    val = resources[rcswhich].func(lc, resources[rcswhich].cap, limits[rcswhich].rlim_max, limits[rcswhich].rlim_max);
346		    limits[rcswhich].rlim_max = resources[rcswhich].func(lc, str, val, val);
347		}
348		}
349	    }
350
   (gdb) p resources
$1 = {{cap = 0x804adc2 "cputime", func = 0x8048c84 <login_getcaptime>}, {
      cap = 0x804adca "filesize", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x804add3 "datasize", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x804addc "stacksize", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x804ade6 "coredumpsize", func = 0x8048c34 <login_getcapsize>},{
      cap = 0x804adf3 "memoryuse", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x804adfd "memorylocked", func = 0x8048c34 <login_getcapsize>},{
      cap = 0x804ae0a "maxproc", func = 0x8048c94 <login_getcapnum>}, {
      cap = 0x804ae12 "openfiles", func = 0x8048c94 <login_getcapnum>}, {
      cap = 0x804ae1c "sbsize", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x804ae23 "vmemoryuse", func = 0x8048c34 <login_getcapsize>}, {
      cap = 0x0, func = 0}}

And limits dies when processing last limit.

Yuriy Tsibizov,
GfK RUS Network Administrator

p.s. Please keep me in CC.
Received on Tue Sep 02 2008 - 04:02:06 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:34 UTC