Worker reload (`octane:reload`) can SIGSEGV the whole process on aarch64: two opcache races in php-src
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 8/100
Rechercherichtung
The payload names no FrankenPHP file to change; the reporter says the fixes belong in php-src opcache. Start from php/php-src#23637 (fixed by commit 873a997d) and php/php-src#24319, which cover the inheritance cache and script hash races. Nothing here defines a done state for this repository, so confirm with a maintainer before writing code.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Prepared with an AI assistant; I reviewed the analysis and the numbers. The text below is AI-generated (quoted).
Symptom: right after a worker reload (Laravel Octane
octane:reload, i.e. a config PATCH through the admin API), the FrankenPHP process exits with 139 and nothing in the log. Seen on aarch64 (AWS Graviton); not seen at reload on x86_64 in about 1867 cycles. In our runs it did not happen with opcache disabled (900 deploy cycles) or when restarting the container instead of reloading (140 cycles).Both causes are in php-src opcache, in lock-free readers of shared memory:
- Inheritance cache entries were published before
ZCSG(map_ptr_last): php/php-src#23637, fixed by 873a997d, expected in 8.4.27 / 8.5.12. Not going to PHP 8.2 / 8.3.- Script hash entries are linked before they are fully written: php/php-src#24319 (fix proposed).
What did not help, for reference: FrankenPHP 1.12.6, #2648, #2648 + #2645, php-src #22281, php-src #23881.
Opening this so people searching here find the php-src side; nothing needs to change in FrankenPHP as far as we can tell.
- Vorherrschende Sprache
- Go
- Sterne
- 11.4k
- Forks
- 494
- Ø Merge
- 2 T. 18 Std.
- Gemergte PRs (30 T.)
- 32
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus php/frankenphp
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
php/frankenphp#2671 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Include frankenphp version in logsEvtl. vergeben @ousamabenyounes hat das vor 87 Tagen übernommen. Offenenhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
php/frankenphp#2483 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
suggestion about compile.mdEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenenhancement
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 68/100
php/frankenphp#601 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 15/100
php/frankenphp#2715 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 28/100
php/frankenphp#2713 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 81/100
apache/rocketmq-dashboard#6895 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 87/100
777genius/agent-notifications#490 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
devantler-tech/ksail#7836 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
keyxmakerx/Chronicle#1469 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag