Perl脚本(使用大量本地编写的模块,并且正在积极开发中)刚刚开始生成零星的
"尝试释放未引用的标量:SV 0xa6e685c,Perl解释器:0x96d9008在全局销毁期间."
消息.这总是可重复的,因为特定的命令序列总是产生消息,但是我没有设法隔离出一个简单的或独立的案例来引发它.特别是,从Perl调试器运行脚本时我还没有看到它(我可以在调试使用IPC :: Open3运行目标脚本的脚本时得到它.)
我意识到这可能只是Perl中的一个错误,但更有可能是我正在做的事情,很可能是我对SVN :: Client的调用; 但我很难找到一种方法来调查它,我想知道是否有人有任何指针.
Perl 5.10.0; 各种版本的Fedora Linux.我将在Perl 5.12上尝试它,但除非它也在那里出现,否则它对我没有帮助. 编辑:在5.12中可靠地给出消息的特定情况不在5.12中.不幸的是,这并没有真正告诉我什么.
这通常与线程问题相关,特别是在将变量从一个线程传递到另一个线程中运行的子例程时。这是该模式的一个抽象示例:
A.pl
....
my $dummy;
threads->create("B::c", ($dummy));
....
Run Code Online (Sandbox Code Playgroud)
下午
....
sub c{...}
....
Run Code Online (Sandbox Code Playgroud)
我意识到在“本地编写的模块负载”中搜索类似的东西并不容易。也许您可以删除程序的大部分内容,直到找到可以改变行为的内容为止;这应该可以帮助您隔离问题。