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

Attachment: signature.asc
Description: Digital Signature

Reply via email to