I am trying to test a specific condition the will only occur if perl
has a malloc
that fails due to there being no memory left. I would like perl
to die as quickly as possible. I figured the fasted way would be create some huge arrays like
perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
But I had to kill it after my swap hit 5 gig with no signs of stopping (I am on OS X 10.6).
I just tested it on Linux and it dies pretty quick:
time perl -le '$_->[1_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Out of memory!
real 0m0.023s
user 0m0.012s
sys 0m0.008s
So the problem seems to be OS X and its dynamic_pager
.
I just tried disabling the dynamic_pager
with
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
and rebooting, but the machine just hangs completely. My next attempt will be to change the com.apple.dynamic_pager.plist
config file to write the vm files to a very small partition.