eyepopslikeamosquito has asked for the wisdom of the Perl Monks concerning the following question:
I've started running some large Test::More programs (perl 5.8.4) under Windows and noticed that each ok() appears to consume 14 Windows semaphore handles. The test program below demonstrates.
use strict; use Test::More; my $niter = shift or die "usage: $0 number-of-iterations\n"; plan tests => $niter; ok(1) for 1 .. $niter; print "Look at handle count in Windows Task Manager\n"; print "Then press [RETURN] to exit...\n";<STDIN>;
For example, when I run this program for 10,000 iterations, Windows Task Manager reports there are 140,021 handles being used by the perl process. The sysinternals nthandle utility reports they are mainly semaphore handles.
I suspect the underlying reason for all these semaphore handles is the use of share() in Test::Builder. For example:
# Test to simulate semaphore growth in Test::Builder. # Grows by 4 semaphore handles per iteration. use strict; use threads; use threads::shared; my @Test_Results = (); share(@Test_Results); sub ok { my $result = {}; share($result); push(@Test_Results, $result); } my $niter = shift or die "usage: $0 number-of-iterations\n"; ok(1) for 1 .. $niter; print "Look at handle count in Windows Task Manager\n"; print "Then press [RETURN] to exit...\n";<STDIN>;
This is not a handle leak in that the handles are released when the variable goes out of scope.
I'm wondering if anyone has seen this issue before or can shed some more light on it. Since you should generally try to keep each test program quite small, it's unlikely to prove a practical limitation. However, it may prevent you from writing very large stress tests due to handle starvation.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Test::More and semaphore handles on Windows
by chromatic (Archbishop) on Aug 25, 2004 at 05:19 UTC | |
by blm (Hermit) on Aug 25, 2004 at 05:27 UTC | |
by chromatic (Archbishop) on Aug 25, 2004 at 17:03 UTC | |
|
Re: Test::More and semaphore handles on Windows
by blm (Hermit) on Aug 25, 2004 at 04:02 UTC | |
|
Re: Test::More and semaphore handles on Windows
by blm (Hermit) on Aug 25, 2004 at 05:44 UTC | |
by eyepopslikeamosquito (Archbishop) on Aug 25, 2004 at 06:37 UTC | |
|
Re: Test::More and semaphore handles on Windows
by schwern (Scribe) on Dec 01, 2004 at 06:40 UTC |