php-src のmasterのログを見ていたら今日こんなバグ修正が入っていました。
今日(2015/6/2)コミットされていたので、現時点で世の中で出回ってる全てのPHPインタープリタにはこのバグがあるかと思われます。
再現方法
<?php
class wpq {
private $unreferenced;
public function __get($name) {
return $this->$name . "XXX";
}
}
function ret_assoc() {
$x = "XXX";
return array('foo' => 'bar', $x);
}
$wpq = new wpq;
$wpq->interesting =& ret_assoc();
$x = $wpq->interesting;
printf("%s\n", $x);
これを実行するとsegmentation faultがおきます。
$ /usr/bin/php ~/php/a.php
[1] 787 segmentation fault /usr/bin/php ~/php/a.php
手元のPHP5.5.20, PHP5.6.9で確かに再現しました。
特に真新しい機能を使ってるわけでもなく、PHP5.1あたりでも動きそうな何の変哲もないコードなのに、こんなとこでsegmentation faultが発生したりするんですね。
興味深い。
次のパッチリリースで直っていることでしょう。