On Tue, 08 Dec 2020 16:17:11 +0100, Steinar H. Gunderson wrote: > On Tue, Dec 08, 2020 at 04:14:32PM +0100, gregor herrmann wrote: > > It looks like changing the value to 131072 doesn't work. > > Hmm, perhaps one also needs to try raising rlim.rlim_max, which works since > we're root? What happens if you do something like > > rlim.rlim_cur = rlim.rlim_max = 131072;
This looks much better indeed :)
With
#v+
--- a/updatedb.cpp
+++ b/updatedb.cpp
@@ -743,8 +743,16 @@
rlimit rlim;
if (getrlimit(RLIMIT_NOFILE, &rlim) != -1) {
rlim_t wanted = std::max<rlim_t>(rlim.rlim_cur, 131072);
- rlim.rlim_cur = std::min<rlim_t>(wanted, rlim.rlim_max);
+ rlim.rlim_cur = rlim.rlim_max = wanted;
setrlimit(RLIMIT_NOFILE, &rlim); // Ignore errors.
+
+ if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) {
+ fprintf(stderr, "Hint: getrlimit failed.\n");
+ } else {
+ fprintf(stderr, "Hint: getrlimit: current limit is %lu,
max limit is %lu.\n",
+ rlim.rlim_cur, rlim.rlim_max);
+ }
+
}
conf_prepare(argc, argv);
#v-
I get:
# /usr/sbin/updatedb.plocate
Hint: getrlimit: current limit is 131072, max limit is 131072.
# echo $?
0
Cheers,
gregor
--
.''`. https://info.comodo.priv.at -- Debian Developer https://www.debian.org
: :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D 85FA BB3A 6801 8649 AA06
`. `' Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
`- NP: Joe Cocker: Pardon Me Sir
signature.asc
Description: Digital Signature

