Changes made to threads.xs
/* Join the thread */
#ifdef WIN32
printf( "thread handle:%x thread-id: %dx\n", thread->handle, G
+etThreadId( thread->handle ) );
if (WaitForSingleObject(thread->handle, INFINITE) != WAIT_OBJE
+CT_0) {
printf("GetLastError output: '%d'", GetLastError());
/* Timeout/abandonment unexpected here; check $^E */
Perl_croak(aTHX_ "PANIC: underlying join failed");
};
#else
if ((rc_join = pthread_join(thread->thr, &retval)) != 0) {
/* In progress/deadlock/unknown unexpected here; check $!
+*/
errno = rc_join;
Perl_croak(aTHX_ "PANIC: underlying join failed");
};
#endif
Changes made to rxd.pl
# wait to join and delete from hash
foreach my $join (threads->list(threads::joinable)) {
my $val = eval{ $join->join() } or die "Join failed with '$!'
+: '$^E'";
tprint("_handle() output: " . $join->_handle());
#my $val = $join->join();
# tprint("Deleting fd- $val");
delete $FDcache{$val};
}
OS/Version:
Microsoft Windows Server 2003 R2
Enterprise x64 Edition
Service Pack 2
And this is a VM if that makes any difference.
Perl/version:
Active perl v5.16.1
C:\>perl -v
This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x
+64-multi-t
hread
(with 1 registered patch, see perl -V for more detail)
threads/version: threads-1.86
Let me know if you need anything else!