On Wed, Jul 10, 2019 at 05:59:05AM +0000, David Holland wrote: > On Tue, Jul 09, 2019 at 10:24:53AM -0700, Graham Percival wrote: > > RLIMIT_DATA > > This is the maximum size of a data segment of the process, in bytes. If > > this limit is exceeded, the malloc() function shall fail with errno > set to > > [ENOMEM]. > > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/getrlimit.html > > > > The relevant part is the second sentence. > > Ah, but how do you ask malloc to exceed RLIMIT_DATA? Not by passing it > a large number, or any number, since that doesn't change the size of > any data segment.
Aha! I misunderstood "this limit" to mean "the number returned by getrlimit()", not "the size of the data segment". So I thought that second sentence was about talking about what should happen if you passed malloc() a large value. My sincere apologies for wasting everybody's time. > (Note: if you're trying to do something practical, you might find > RLIMIT_AS or RLIMIT_RSS more helpful.) We were checking all three, actually: https://github.com/Tarsnap/scrypt/blob/master/lib/util/memlimit.c#L153 but since RLIMIT_DATA is not relevant, I've submitted a patch to remove it. Using that patch allows the scrypt tests to complete successfully on NetBSD. Thank you for the clarifications, and sorry again, - Graham