Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2008 08:30:16 +0200
From:      Ed Schouten <ed@80386.nl>
To:        Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru>
Cc:        ports@freebsd.org, FreeBSD Current <freebsd-current@freebsd.org>, Claus Guttesen <kometen@gmail.com>
Subject:   Re: /usr/bin/limits (WAS: Re: Apache.sh on current)
Message-ID:  <20080902063016.GK99951@hoeg.nl>
In-Reply-To: <20080902095229.Y1605@atwork.home.local>
References:  <200809011335.m81DZW8b006033@pozo.com> <b41c75520809010719pe5a8e19nb32a925f44a80a47@mail.gmail.com> <200809011436.m81Eaq2v040141@pozo.com> <20080902095229.Y1605@atwork.home.local>

next in thread | previous in thread | raw e-mail | index | archive | help

--CthBKbHMLuDDTcy3
Content-Type: multipart/mixed; boundary="MKa19fad5K0Qqc8o"
Content-Disposition: inline


--MKa19fad5K0Qqc8o
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

* Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru> wrote:
> (gdb) bt
> #0  0x00000000 in ?? ()
> #1  0x0804937d in main (argc=3D3, argv=3D0xbfbfed44)
>      at /usr/src/usr.bin/limits/limits.c:341
>   (gdb) l
> 341		    val =3D resources[rcswhich].func(lc, resources[rcswhich].cap, li=
mits[rcswhich].rlim_cur, limits[rcswhich].rlim_cur);
> 342		    limits[rcswhich].rlim_cur =3D 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 =3D resources[rcswhich].func(lc, resources[rcswhich].cap, li=
mits[rcswhich].rlim_max, limits[rcswhich].rlim_max);
> 346		    limits[rcswhich].rlim_max =3D resources[rcswhich].func(lc, str, =
val, val);
> 347		}
> 348		}
> 349	    }
> 350
>   (gdb) p resources
> $1 =3D {{cap =3D 0x804adc2 "cputime", func =3D 0x8048c84 <login_getcaptim=
e>}, {
>      cap =3D 0x804adca "filesize", func =3D 0x8048c34 <login_getcapsize>}=
, {
>      cap =3D 0x804add3 "datasize", func =3D 0x8048c34 <login_getcapsize>}=
, {
>      cap =3D 0x804addc "stacksize", func =3D 0x8048c34 <login_getcapsize>=
}, {
>      cap =3D 0x804ade6 "coredumpsize", func =3D 0x8048c34 <login_getcapsi=
ze>},{
>      cap =3D 0x804adf3 "memoryuse", func =3D 0x8048c34 <login_getcapsize>=
}, {
>      cap =3D 0x804adfd "memorylocked", func =3D 0x8048c34 <login_getcapsi=
ze>},{
>      cap =3D 0x804ae0a "maxproc", func =3D 0x8048c94 <login_getcapnum>}, {
>      cap =3D 0x804ae12 "openfiles", func =3D 0x8048c94 <login_getcapnum>}=
, {
>      cap =3D 0x804ae1c "sbsize", func =3D 0x8048c34 <login_getcapsize>}, {
>      cap =3D 0x804ae23 "vmemoryuse", func =3D 0x8048c34 <login_getcapsize=
>}, {
>      cap =3D 0x0, func =3D 0}}

Looks like I introduced this regression when importing MPSAFE TTY.
limits(1) dies when RLIMIT_NLIMITS is increased, but the array in
limits.c isn't extended (seems to be quite fragile).

Can you try the attached patch for limits(1)? Thanks!

--=20
 Ed Schouten <ed@80386.nl>
 WWW: http://80386.nl/

--MKa19fad5K0Qqc8o
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="limits.diff"
Content-Transfer-Encoding: quoted-printable

--- limits.c
+++ limits.c
@@ -76,17 +76,18 @@
 {
     { "", "infinity", "Resource limits%s%s:\n", "-max", "-cur", "",
       {
-	  { "  cputime%-4s      %8s", " secs\n",  1    },
-	  { "  filesize%-4s     %8s", " kB\n",    1024 },
-	  { "  datasize%-4s     %8s", " kB\n",    1024 },
-	  { "  stacksize%-4s    %8s", " kB\n",    1024 },
-	  { "  coredumpsize%-4s %8s", " kB\n",    1024 },
-	  { "  memoryuse%-4s    %8s", " kB\n",    1024 },
-	  { "  memorylocked%-4s %8s", " kB\n",    1024 },
-	  { "  maxprocesses%-4s %8s", "\n",       1    },
-	  { "  openfiles%-4s    %8s", "\n",       1    },
-	  { "  sbsize%-4s       %8s", " bytes\n", 1    },
-	  { "  vmemoryuse%-4s   %8s", " kB\n",    1024 }
+	  { "  cputime%-4s          %8s", " secs\n",  1    },
+	  { "  filesize%-4s         %8s", " kB\n",    1024 },
+	  { "  datasize%-4s         %8s", " kB\n",    1024 },
+	  { "  stacksize%-4s        %8s", " kB\n",    1024 },
+	  { "  coredumpsize%-4s     %8s", " kB\n",    1024 },
+	  { "  memoryuse%-4s        %8s", " kB\n",    1024 },
+	  { "  memorylocked%-4s     %8s", " kB\n",    1024 },
+	  { "  maxprocesses%-4s     %8s", "\n",       1    },
+	  { "  openfiles%-4s        %8s", "\n",       1    },
+	  { "  sbsize%-4s           %8s", " bytes\n", 1    },
+	  { "  vmemoryuse%-4s       %8s", " kB\n",    1024 },
+	  { "  pseudo-terminals%-4s %8s", "\n",       1    }
       }
     },
     { "sh", "unlimited", "", " -H", " -S", "",
@@ -101,22 +102,24 @@
 	  { "ulimit%s -u %s", ";\n",  1    },
 	  { "ulimit%s -n %s", ";\n",  1    },
 	  { "ulimit%s -b %s", ";\n",  1    },
-	  { "ulimit%s -v %s", ";\n",  1024 }
+	  { "ulimit%s -v %s", ";\n",  1024 },
+	  { "ulimit%s -p %s", ";\n",  1    }
       }
     },
     { "csh", "unlimited", "", " -h", "", NULL,
       {
-	  { "limit%s cputime %s",      ";\n",  1    },
-	  { "limit%s filesize %s",     ";\n",  1024 },
-	  { "limit%s datasize %s",     ";\n",  1024 },
-	  { "limit%s stacksize %s",    ";\n",  1024 },
-	  { "limit%s coredumpsize %s", ";\n",  1024 },
-	  { "limit%s memoryuse %s",    ";\n",  1024 },
-	  { "limit%s memorylocked %s", ";\n",  1024 },
-	  { "limit%s maxproc %s",      ";\n",  1    },
-	  { "limit%s openfiles %s",    ";\n",  1    },
-	  { "limit%s sbsize %s",       ";\n",  1    },
-	  { "limit%s vmemoryuse %s",   ";\n",  1024 }
+	  { "limit%s cputime %s",         ";\n",  1    },
+	  { "limit%s filesize %s",        ";\n",  1024 },
+	  { "limit%s datasize %s",        ";\n",  1024 },
+	  { "limit%s stacksize %s",       ";\n",  1024 },
+	  { "limit%s coredumpsize %s",    ";\n",  1024 },
+	  { "limit%s memoryuse %s",       ";\n",  1024 },
+	  { "limit%s memorylocked %s",    ";\n",  1024 },
+	  { "limit%s maxproc %s",         ";\n",  1    },
+	  { "limit%s openfiles %s",       ";\n",  1    },
+	  { "limit%s sbsize %s",          ";\n",  1    },
+	  { "limit%s vmemoryuse %s",      ";\n",  1024 },
+	  { "limit%s pseudoterminals %s", ";\n",  1    }
       }
     },
     { "bash|bash2", "unlimited", "", " -H", " -S", "",
@@ -131,22 +134,24 @@
 	  { "ulimit%s -u %s", ";\n",  1    },
 	  { "ulimit%s -n %s", ";\n",  1    },
 	  { "ulimit%s -b %s", ";\n",  1    },
-	  { "ulimit%s -v %s", ";\n",  1024 }
+	  { "ulimit%s -v %s", ";\n",  1024 },
+	  { "ulimit%s -p %s", ";\n",  1    }
       }
     },
     { "tcsh", "unlimited", "", " -h", "", NULL,
       {
-	  { "limit%s cputime %s",      ";\n",  1    },
-	  { "limit%s filesize %s",     ";\n",  1024 },
-	  { "limit%s datasize %s",     ";\n",  1024 },
-	  { "limit%s stacksize %s",    ";\n",  1024 },
-	  { "limit%s coredumpsize %s", ";\n",  1024 },
-	  { "limit%s memoryuse %s",    ";\n",  1024 },
-	  { "limit%s memorylocked %s", ";\n",  1024 },
-	  { "limit%s maxproc %s",      ";\n",  1    },
-	  { "limit%s descriptors %s",  ";\n",  1    },
-	  { "limit%s sbsize %s",       ";\n",  1    },
-	  { "limit%s vmemoryuse %s",   ";\n",  1024 }
+	  { "limit%s cputime %s",         ";\n",  1    },
+	  { "limit%s filesize %s",        ";\n",  1024 },
+	  { "limit%s datasize %s",        ";\n",  1024 },
+	  { "limit%s stacksize %s",       ";\n",  1024 },
+	  { "limit%s coredumpsize %s",    ";\n",  1024 },
+	  { "limit%s memoryuse %s",       ";\n",  1024 },
+	  { "limit%s memorylocked %s",    ";\n",  1024 },
+	  { "limit%s maxproc %s",         ";\n",  1    },
+	  { "limit%s descriptors %s",     ";\n",  1    },
+	  { "limit%s sbsize %s",          ";\n",  1    },
+	  { "limit%s vmemoryuse %s",      ";\n",  1024 },
+	  { "limit%s pseudoterminals %s", ";\n",  1    }
       }
     },
     { "ksh|pdksh", "unlimited", "", " -H", " -S", "",
@@ -161,7 +166,8 @@
 	  { "ulimit%s -p %s", ";\n",  1    },
 	  { "ulimit%s -n %s", ";\n",  1    },
 	  { "ulimit%s -b %s", ";\n",  1    },
-	  { "ulimit%s -v %s", ";\n",  1024 }
+	  { "ulimit%s -v %s", ";\n",  1024 },
+	  { "ulimit%s -p %s", ";\n",  1    }
       }
     },
     { "zsh", "unlimited", "", " -H", " -S", "",
@@ -176,22 +182,24 @@
 	  { "ulimit%s -u %s", ";\n",  1    },
 	  { "ulimit%s -n %s", ";\n",  1    },
 	  { "ulimit%s -b %s", ";\n",  1    },
-	  { "ulimit%s -v %s", ";\n",  1024 }
+	  { "ulimit%s -v %s", ";\n",  1024 },
+	  { "ulimit%s -p %s", ";\n",  1    }
       }
     },
     { "rc|es", "unlimited", "", " -h", "", NULL,
       {
-	  { "limit%s cputime %s",      ";\n",  1    },
-	  { "limit%s filesize %s",     ";\n",  1024 },
-	  { "limit%s datasize %s",     ";\n",  1024 },
-	  { "limit%s stacksize %s",    ";\n",  1024 },
-	  { "limit%s coredumpsize %s", ";\n",  1024 },
-	  { "limit%s memoryuse %s",    ";\n",  1024 },
-	  { "limit%s lockedmemory %s", ";\n",  1024 },
-	  { "limit%s processes %s",    ";\n",  1    },
-	  { "limit%s descriptors %s",  ";\n",  1    },
-	  { "limit%s sbsize %s",       ";\n",  1    },
-	  { "limit%s vmemoryuse %s",   ";\n",  1024 }
+	  { "limit%s cputime %s",         ";\n",  1    },
+	  { "limit%s filesize %s",        ";\n",  1024 },
+	  { "limit%s datasize %s",        ";\n",  1024 },
+	  { "limit%s stacksize %s",       ";\n",  1024 },
+	  { "limit%s coredumpsize %s",    ";\n",  1024 },
+	  { "limit%s memoryuse %s",       ";\n",  1024 },
+	  { "limit%s lockedmemory %s",    ";\n",  1024 },
+	  { "limit%s processes %s",       ";\n",  1    },
+	  { "limit%s descriptors %s",     ";\n",  1    },
+	  { "limit%s sbsize %s",          ";\n",  1    },
+	  { "limit%s vmemoryuse %s",      ";\n",  1024 },
+	  { "limit%s pseudoterminals %s", ";\n",  1    }
       }
     },
     { NULL, NULL, NULL, NULL, NULL, NULL,
@@ -213,7 +221,8 @@
     { "maxproc",	login_getcapnum  },
     { "openfiles",	login_getcapnum  },
     { "sbsize",		login_getcapsize  },
-    { "vmemoryuse",	login_getcapsize  }
+    { "vmemoryuse",	login_getcapsize  },
+    { "pseudoterminals",login_getcapnum  },
 };
=20
 /*

--MKa19fad5K0Qqc8o--

--CthBKbHMLuDDTcy3
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iEYEARECAAYFAki83XgACgkQ52SDGA2eCwWPPwCfYoGazVxBOv24F1thn4PvllyC
1jAAnigG4Zi1W8C6BeyOkpPSboTtQo+b
=eVms
-----END PGP SIGNATURE-----

--CthBKbHMLuDDTcy3--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080902063016.GK99951>