We have a 100% reproducible segfault in php 7.2. This bug was fixed in php 7.3 and is apparently in an alpha for php 7.4, but does not appear to have been cherry-picked for php 7.2.
To reproduce:
$ git review -d 523715 # git hash 32a72da6710f570b3815ca572baf9709b8f4ae40 $ tools/gen-json-blacklist.js $ git review -d 523330 # git hash 10e616658817d7915318369a06b4116def8125cc $ php bin/parserTests.php
Notes:
- steps 1 and 2 might be optional, i.e. blacklist may not be needed for the segv)
- you may have to ensure that the environment variable MW_INSTALL_PATH is *not* set
- reproducible as of PS 5 of gerrit 523330
segfault occurs on php 7.2.19, does not occur in 7.3.4-2.
git bisect narrows down the responsible patch to:
https://github.com/php/php-src/commit/3b5b64ce75b00a00a256f1a59655a0830d071036
github indicates this patch is present in php-7.4.0alpha3 (and subsequent 7.4 tags) and php-7.3.0RC1 (and subsequent 7.3 tags). But it is not present in PHP 7.2.
We should decide whether to ask PHP's maintainers to cherry-pick this back to the PHP 7.2 branch, or else bump to 7.3 in production. It's probably unwise to run PHP 7.2 with a known garbage collector bug and reproducible segfault in production.