Robert Haas <robertmhaas@gmail.com> writes:
> We could do better by accounting for memory usage ourselves, inside
> the memory-context system, but that'd probably impose some overhead we
> don't have today.
Hm. We could minimize the overhead if we just accounted for entire
malloc chunks and not individual palloc allocations. That would make
the overhead not zero, but yet probably small enough to ignore.
On the other hand, this approach would entirely fail to account for
non-palloc'd allocations, which could be a significant issue in some
contexts.
I wonder how practical it would be to forestall Noah's scenario by
preallocating all the stack space we want before enabling the rlimit.
Another idea would be to do the enforcement ourselves by means of
measuring the change in "sbrk(0)"'s reported value since startup, which we
could check whenever, say, we're about to request a large malloc chunk in
aset.c. I'm not sure about the cost of that function though, nor about
whether this measurement method is meaningful in modern systems.
regards, tom lane