Further to Perl threads test intermittently hangs on Windows, the simple program below appears to be leaking handles on Windows. That is, at the end of the run, Windows Task Manager (and sysinternals pslist command) both show the perl process has 1017 open handles. It seems the underlying Win32 thread handles are not being closed. Is there a way to force them to be closed? (I am using Active State Perl 5.8.3 build 809 on Windows XP).
#!/usr/bin/perl -w use strict; use threads; sub do_one_thread { warn "in kid\n" } sub do_thread { my $t = threads->new(\&do_one_thread); warn "parent $$: waiting for join\n"; $t->join(); warn "parent $$: thread exited\n"; } for my $i (1..1000) { warn "i=$i:---\n"; do_thread(); } warn "sleeping for 60 seconds (check handle count in Task Manager)\n"; sleep(60);
At the end of the run, the sysinternals pslist command reports 1017 open handles:
Name Pid Pri Thd Hnd Mem User Time Kernel Time Ela +psed Time perl 6560 8 1 1017 3232 0:00:15.203 0:00:00.203 0: +00:18.390
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |