Subject: | load_plugin is not reentrant safe |
PluginManager uses:
eval { require $filename; };
to check for syntax error. But that is not reentrant safe.
A possible fix might be to delete $INC{$filename},
patch attached, needs peer review.
Subject: | eval_not_reent_safe.patch |
--- /usr/lib/perl5/site_perl/5.8.8/POE/Component/PluginManager.pm 2008-07-19 18:32:52.000000000 +0200
+++ /tmp/PluginManager.pm 2008-09-21 21:16:33.000000000 +0200
@@ -233,6 +233,7 @@
my $spacer = " " x $spaces;
my ( $name, $longname, $license, $version ); #name, longname, license, version (all strings)
debug "[$alias] loading $classname...$spacer compile: ";
+ if ($INC{$filename}) { delete $INC{$filename} }
eval { require $filename; };
if ($@) {
debug "FAIL\n";