1--TEST-- 2Bug #74596 (SIGSEGV with opcache.revalidate_path enabled) 3--INI-- 4opcache.enable=1 5opcache.enable_cli=1 6opcache.file_update_protection=0 7opcache.validate_timestamps=0 8opcache.file_cache_only=0 9opcache.revalidate_path=1 10--EXTENSIONS-- 11opcache 12--FILE-- 13<?php 14 15file_put_contents(__DIR__ . "/bug74596_1.php", <<<CODE 16<?php 17class A { 18 public function __construct() { 19 \$a = true; 20 if (\$a) { 21 echo 1 + 2; 22 } else { 23 echo 2 + 3; 24 } 25 } 26} 27?> 28CODE 29); 30 31file_put_contents(__DIR__ . "/bug74596_2.php", "ok\n"); 32 33class ufilter extends php_user_filter 34{ 35 function filter($in, $out, &$consumed, $closing): int 36 { 37 include_once __DIR__ . "/bug74596_1.php"; 38 while ($bucket = stream_bucket_make_writeable($in)) { 39 stream_bucket_append($out, $bucket); 40 } 41 return PSFS_PASS_ON; 42 } 43} 44 45stream_filter_register("ufilter", "ufilter"); 46 47include "php://filter/read=ufilter/resource=" . __DIR__ . "/bug74596_2.php"; 48?> 49--CLEAN-- 50<?php 51unlink(__DIR__ . "/bug74596_1.php"); 52unlink(__DIR__ . "/bug74596_2.php"); 53?> 54--EXPECT-- 55ok 56