表題のとおりですが、
# PHP7.4.3(Ubuntu 20.04)にxdebugをインストール apt install php-xdebug phpenmod xdebug systemctl restart apache2 # xdebugを無効にする phpdismod xdebug systemctl restart apache2
ApacheでPHPのページにアクセスするとsegmentation faultになる。
[Thu Dec 16 19:32:08.276046 2021] [core:notice] [pid 421823] AH00051: child pid 421937 exit signal Segmentation fault (11), possible coredump in /etc/apache2
Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) where #0 0x0000000000000000 in ?? () #1 0x00005555558793ad in ?? () #2 0x000055555587bb33 in execute_ex () #3 0x00007fffecd2cf81 in tideways_xhprof_execute_ex (execute_data=<optimized out>) at /usr/local/src/php-xhprof-extension/tideways_xhprof.c:72 #4 tideways_xhprof_execute_ex (execute_data=0x7ffff5413020) at /usr/local/src/php-xhprof-extension/tideways_xhprof.c:61 #5 0x000055555588324b in zend_execute () #6 0x00005555557fa2ec in zend_execute_scripts () #7 0x0000555555799fd0 in php_execute_script () #8 0x0000555555885382 in ?? () #9 0x0000555555661938 in ?? () #10 0x00007ffff76460b3 in __libc_start_main (main=0x555555661530, argc=2, argv=0x7fffffffe478, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe468) at ../csu/libc-start.c:308 #11 0x0000555555661ade in _start ()
原因はtidewaysなのかxdebugなのか分かりませんが、とりあえずopcacheのファイルをクリア(全削除)してapacheを再起動すると直ります。おそらくxdebugがある時にhookが入ったopcacheが出来上がる→無効化してもそれが残ってsegfaultになる、みたいな感じではないかと思います。
それはそうと、なぜxdebugをoffにしたのかというと、xdebugのextentionをロードすると、それだけで実行速度が遅くなるからです。
Xdebug 2 vs Xdebug 3 Performance Comparison • PHP.Watch
この記事によると、xdebug2では、xdebugのextensionをロードしているだけで(xdebugをoffにしていたとしても)実行時間が8-9倍になっています。
テストを流す際の時間節約のためにoffにしたのですが、上の記事にあるようにxdebug3では性能低下は非常に小さいようなので、xdebug3を入れるべきなのでしょう。