tarが-1を返してきた?

とある場所で使っているGNU tarが終了ステータス*1-1を返してきたんです。そもそも終了ステータスに負の値ってどうなんですかって話ですが、失敗した原因がわからないと困るので-1が何を意味するかtarのソースコードを調べてみたんです。

#define TAREXIT_SUCCESS 0
#define TAREXIT_DIFFERS 1
#define TAREXIT_FAILURE 2

アレ?ない。

実はtarコマンドはシェルで実行しているのではなくて、PHPpopen()関数から実行しているのです。pclose()関数の説明には

実行していたプロセスの終了ステータスを返します。

とあるので、終了ステータスはちゃんと渡ってきているはずなんですが。

仕方が無いのでPHPソースコードを調べたら、どういう場合になのかはよくわからんのですが、-1を返している箇所が。
さらりとドキュメントに無い動作をするのはかんべんしておくれ…*2

追記
ソースをよく見ると、システムコールwaitpidがEINTRのエラーを返した場合にpopen()は-1を返しているようです。
EINTERの説明には

WNOHANG が設定されておらず、禁止 (block) されていないシグナルや SIGCHLD を受信した。

と書いてあり、WNOHANGは設定されていないのでtarが何か受信したみたいですが何を受信したのでしょうか兄さん頭が痛いよ。

*1:Linux等のシェルで終了したプロセスが返す値 0なら成功 非0で失敗 普通は0〜255の範囲

*2:協力せよという暗示?