0

我有一个执行大量处理的 perl 脚本。它是多线程的,使用这个问题中接受的解决方案中的示例:

如何限制perl中的最大并行线程数

当它运行时,它似乎开始正确地启动和运行线程。然后它抛出这个错误并转储核心。

perl: posixio.c:342: px_rel: 断言 `pxp->bf_offset <= offset && offset < pxp->bf_offset + (off_t) pxp->bf_extent' 失败。

我的问题...这是什么意思?怎么了?

4

1 回答 1

1

assert(EXPR)一个断言错误是由一个 C 宏引发的,如果它的参数评估为假,它会杀死程序。(尽管出于性能原因,assert在非调试版本中是无操作的。)

所以这意味着陈述的表达是错误的,它不应该是错误的。如果你想找出它为什么是假的,你将不得不回溯。

当然,很有可能有人已经完成并修复了错误,因此您应该使用更新版本的 Perl 尝试您的代码。perlbrew可以帮助您在本地安装新版本的 Perl。(别忘了-Dusethreads!)

于 2013-05-28T05:52:17.173 回答