prototype mismatchが出まくる件
ModPerl::PerlRunとして実行しているcgiスクリプトがあるのですが、
こないだのDBD::Pg非同期対応したらprototype mismatchがエラーログにがしがし出まくっていた。*1
Prototype mismatch: sub ModPerl::ROOT::ModPerl::PerlRun::hoge_2excgi::PG_OLDQUERY_CANCEL: none vs () at hoge.xcgi line 38 Prototype mismatch: sub ModPerl::ROOT::ModPerl::PerlRun::hoge_2excgi::PG_OLDQUERY_WAIT: none vs () at hoge.xcgi line 38 Prototype mismatch: sub ModPerl::ROOT::ModPerl::PerlRun::hoge_2excgi::PG_ASYNC: none vs () at hoge.xcgi line 38
ただし、DBD::PgだけじゃなくてTime::HiResのsleep対応でもログに出てた。
どうも
use DBD::Pg qw/:async/;
use Time::HiRes qw/sleep/;
のようにサブルーチンインポートしてるuse部分でエラーが出てるっぽい。
たぶん、このメッセージ自体はあまり気にしなくてもいいのかなーという気もするが
余計なエラーログが出まくるのはよろしくないので調べた。
…が、原因は結局わからず><
でもModPerl::Registryモードにしたらエラーメッセージ出なくなったのでおkとする。
※補足
なんでPerlRunで実行してたかというと、ベンチマーク結果はPerlRunでもRegistryでも変わらなかったので、
変な動作おこさなそうなPerlRunを使っていたという事です。
ただRegistryモードでも問題なく動くように書いていたので今回の対応で問題ない!はず。