Page MenuHomePhabricator

PHP on Beta cluster fails due to mismatching PCRE
Closed, ResolvedPublic

Description

Warning: PHP Startup: ^(text/|application/xhtml\+xml) (offset=0): unrecognised compile-time option bit(s) in Unknown on line 0
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/multiversion/MWScript.php on line 118
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/php-master/maintenance/includes/MaintenanceRunner.php on line 291
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/php-master/maintenance/includes/MaintenanceRunner.php on line 314
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/php-master/includes/config/EtcdConfig.php on line 110
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/php-master/includes/libs/http/MultiHttpClient.php on line 696
Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki-staging/php-master/includes/libs/http/MultiHttpClient.php on line 696

Details

Event Timeline

hashar triaged this task as Unbreak Now! priority.Feb 26 2025, 8:53 AM

That is due to T386006 and new php 8.1 packages that have been uploaded and automatically installed:

Start-Date: 2025-02-26  06:21:32
Commandline: /usr/bin/unattended-upgrade
Upgrade: php8.1-bcmath:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-opcache:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-mysql:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-curl:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-intl:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-mbstring:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-common:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-readline:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-gd:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-bz2:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-cli:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-dba:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-fpm:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-gmp:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4), php8.1-xml:amd64 (8.1.31-1+wmf11u3, 8.1.31-1+wmf11u4)
End-Date: 2025-02-26  06:22:15

Start-Date: 2025-02-26  06:22:16
Commandline: /usr/bin/unattended-upgrade
Upgrade: php8.1-apcu:amd64 (5.1.23-1+wmf11u3, 5.1.23-1+wmf11u4)
End-Date: 2025-02-26  06:22:18

But they need a matching libpcre2-8 which is in another apt component (component/pcre2).

deployment-deploy04.deployment-prep.eqiad1.wikimedia.cloud has:

/etc/apt/sources.list.d/wikimedia-php81.list
deb http://apt.wikimedia.org/wikimedia bullseye-wikimedia component/php81
deb-src http://apt.wikimedia.org/wikimedia bullseye-wikimedia component/php81

From December 17th 17:45. If I remove it:

Notice: /Stage[main]/Profile::Mediawiki::Php/Apt::Repository[wikimedia-php81]/File[/etc/apt/sources.list.d/wikimedia-php81.list]/ensure:
defined content as '{sha256}f6a9310fa9ca1920c0e7c0630149a6c709c29638d31898f2f860568b3a2f1fb4' (corrective)

That is not operations/puppet but is a cherry pick of a pending change https://gerrit.wikimedia.org/r/c/operations/puppet/+/1085471 .

Change #1122901 had a related patch set uploaded (by Hashar; author: Hashar):

[operations/puppet@production] php: use component/pcre2 when using Php 8.1

https://gerrit.wikimedia.org/r/1122901

Mentioned in SAL (#wikimedia-releng) [2025-02-26T09:11:38Z] <hashar> deployment-prep: cherry picking https://gerrit.wikimedia.org/r/c/operations/puppet/+/1122901 "php: use component/pcre2 when using Php 8.1" to fix php # T387276

I have manually upgraded libpcre2-8-0 on:

deployment-deploy04.deployment-prep.eqiad1.wikimedia.cloud
deployment-jobrunner05.deployment-prep.eqiad1.wikimedia.cloud
deployment-mediawiki13.deployment-prep.eqiad1.wikimedia.cloud
deployment-mediawiki14.deployment-prep.eqiad1.wikimedia.cloud
deployment-mwmaint03.deployment-prep.eqiad1.wikimedia.cloud
deployment-snapshot05.deployment-prep.eqiad1.wikimedia.cloud

I think that is good enough for the purpose of this task: fixing the beta cluster. https://integration.wikimedia.org/ci/job/beta-update-databases-eqiad/ passes now :)

Ah, thanks for the fix, @hashar! It did not occur to me that these same packages were being used in Beta.

Change #1122901 merged by Clément Goubert:

[operations/puppet@production] php: use component/pcre2 when using Php 8.1

https://gerrit.wikimedia.org/r/1122901

Daimona subscribed.

These seem to be occurring still, but only on deployment-jobrunner05. The rate is ~800 errors per minute. Random example: PHP Warning: preg_match(): Compilation failed: unrecognised compile-time option bit(s) at offset 0 in /srv/mediawiki/php-master/includes/libs/http/MultiHttpClient.php on line 722.

Also noting that these entries have program: php7.2-fpm which is confusing. Presumably a reference to update somewhere (example)?

Mentioned in SAL (#wikimedia-releng) [2025-03-18T20:25:03Z] <bd808> Rebooting deployment-jobrunner05 because things just seem weird (T387631, T387276)

Rebooting deployment-jobrunner05 seems to have fixed it's damage. I don't see any smoking gun in the /var/log/apt/history.log* files like Hashar found back in T387276#10581787. The most recent mentions of php and pcre were from Hashar's actions in T387276#10581912. Maybe the php-fpm container didn't get restarted following the libpcre2 upgrade?

Just as a note, I also had to upgrade these packages manually on the snapshot hosts, after applying this: Upgrade snapshot hosts to PHP version 8.1 - except snapshot1016

We had the same libpcre2 / PHP mismatch with the php 8.3 packages (T398245#11010808). I have filed T400693 to have it sorted out.