0

多くの処理を行う perl スクリプトがあります。この質問から受け入れられたソリューションの例を使用して、マルチスレッド化されています。

perl で並列スレッドの最大数を制限する方法

実行すると、スレッドの開始と実行が正しく開始されたようです。その後、このエラーがスローされ、コアがダンプされます。

perl: posixio.c:342: px_rel: アサーション `pxp->bf_offset <= オフセット && オフセット < pxp->bf_offset + (off_t) pxp->bf_extent' が失敗しました。

私の質問...それはどういう意味ですか?? 何が起こっている?

4

1 に答える 1

1

アサーション エラーはassert(EXPR)、引数が何か偽と評価された場合にプログラムを強制終了する C マクロである によってスローされます。(ただし、パフォーマンス上の理由から、assert非デバッグ ビルドでは何もしません。)

つまり、述べられた式が偽であり、決してそうであってはならないことを意味します。なぜそれが誤りだったのかを知りたい場合は、後戻りする必要があります。

もちろん、誰かがすでにそれを実行してバグを修正している可能性は十分にあります。そのため、新しいバージョンの Perl でコードを試してみてください。perlbrewPerl の新しいバージョンをローカルにインストールするのに役立ちます。(忘れないで-Dusethreads!)

于 2013-05-28T05:52:17.173 に答える