Transfer closed for httpd parent and subrequest double bailout
Dieses Issue hat noch niemand übernommen.
- #17653 von @bukka — ohne Merge geschlossen
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.2k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
This can be recreated by setting memory_limit to 128MB and hitting virtual.php script that calls subrequest.php script
The following code:
<?php
// subrequest.php
$mep = str_repeat('test', 256 * 1000000);
echo count($mem);
<?php
// virtual.php
virtual('/subrequest.php');
echo "test";
$mep = str_repeat('test', 256 * 1000000);
echo "virtual!\n";
Resulted in this curl result:
* transfer closed with outstanding read data remaining
* Closing connection 0
curl: (18) transfer closed with outstanding read data remaining
The error logs showed following:
[Sat Jan 18 14:07:36.162766 2025] [php:error] [pid 86048:tid 86048] [client 127.0.0.1:48464] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted at /home/jakub/prog/php/81/Zend/zend_string.h:163 (tried to allocate 1024000032 bytes) in /home/jakub/prog/php/tests/apache2handler/basic/subrequest.php on line 3
[Sat Jan 18 14:07:36.162842 2025] [php:error] [pid 86048:tid 86048] [client 127.0.0.1:48464] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted at /home/jakub/prog/php/81/Zend/zend_string.h:163 (tried to allocate 1024000032 bytes) in /home/jakub/prog/php/tests/apache2handler/basic/virtual.php on line 7
/home/jakub/prog/php/81/Zend/zend_alloc.c(393) : Bailed out without a bailout address!
But I expected normal output with 2 errors for allowed memory size
I tested this with 8.1 but it will be the same for supported version I'm sure - will double check later.
PHP Version
PHP 8.1+
Operating System
Ubuntu 20.04
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduzieren Sie den Fehler, indem Sie virtual.php unter einem Speicherlimit von 128MB subrequest.php aufrufen, und untersuchen Sie anschließend die gemeldeten Pfade in Zend/zend_string.h und Zend/zend_alloc.c. Vergleichen Sie die Apache-Übertragungs- und Fehlerausgabe mit den erwarteten zwei Speicherlimitfehlern, ohne einen bailout-address-Fehler oder eine abgeschnittene Antwort.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- apache, php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100