On Jun 28, 2010, at 4:32 PM, Mark Berryman wrote:
Sometime between Perl 5.8.6 and 5.12.1 a memory leak was introduced into Perl and it appears to be in the glob function. The following should reproduce the problem on any VMS system:@dirs = glob('SYS$COMMON:[000000]*.DIR'); for (;;) { foreach (@dirs) { s|\[000000\]|\[|; $_ = substr($_, 0, rindex(uc($_), '.DIR')) . ']'; @files = glob($_ . '*.*;*'); } }Execute this and then repeatedly hit control-T to watch your memory consumption climbing. Let it run long enough and it will eventually abort due to insufficient virtual memory.
I can confirm that it chews memory pretty fast (about 4,000 pages every 5 seconds on my rx2600). There is a Perl_vms_start_glob() function in [.vms]vms.c if anyone is hankering after a session with the heap analyzer and wants to know where to look. I hope to look into this at some point but can't commit to when.
________________________________________ Craig A. Berry mailto:[email protected] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser
