2022-04-20 14:31:29 |
Antonios Tsianakas |
bug |
|
|
added bug |
2022-04-20 15:40:30 |
Antonios Tsianakas |
summary |
mod_http2: fixes 2 regressions in server limit handling. |
Apache 2.4.x: mod_http2 sends empty response after MaxRequestsPerChild |
|
2022-04-20 15:43:15 |
Launchpad Janitor |
apache2 (Ubuntu): status |
New |
Confirmed |
|
2022-04-21 09:46:13 |
Paride Legovini |
apache2 (Ubuntu): status |
Confirmed |
Fix Released |
|
2022-04-21 09:46:24 |
Paride Legovini |
nominated for series |
|
Ubuntu Focal |
|
2022-04-21 09:46:24 |
Paride Legovini |
bug task added |
|
apache2 (Ubuntu Focal) |
|
2022-04-21 09:46:24 |
Paride Legovini |
nominated for series |
|
Ubuntu Impish |
|
2022-04-21 09:46:24 |
Paride Legovini |
bug task added |
|
apache2 (Ubuntu Impish) |
|
2022-04-21 09:46:24 |
Paride Legovini |
nominated for series |
|
Ubuntu Bionic |
|
2022-04-21 09:46:24 |
Paride Legovini |
bug task added |
|
apache2 (Ubuntu Bionic) |
|
2022-04-21 09:46:31 |
Paride Legovini |
apache2 (Ubuntu Bionic): status |
New |
Triaged |
|
2022-04-21 09:46:38 |
Paride Legovini |
apache2 (Ubuntu Focal): status |
New |
Triaged |
|
2022-04-21 09:46:41 |
Paride Legovini |
apache2 (Ubuntu Impish): status |
New |
Triaged |
|
2022-04-21 09:50:50 |
Paride Legovini |
tags |
|
server-todo |
|
2022-04-26 21:11:02 |
Sergio Durigan Junior |
description |
We run into a bug in mod_http2 for Apache 2.4.x.
Every time MaxRequestsPerChild is reached, an empty response is sent to the client:
https://bz.apache.org/bugzilla/show_bug.cgi?id=65731
This bug was fixed and backported to v2.4.52:
https://github.com/apache/httpd/pull/281
Any chance that this fix get backported to the Bionic and Focal Package? |
[ Impact ]
Apache2 users with mod_http2 enabled can face problems when the MaxRequestsPerChild limit is reached. In this scenario, apache2 will send a GOAWAY packet too early in the connection, which will cause no data to be transferred to the client (i.e., an empty HTTP response from the server).
[ Test Plan ]
This problem reproduces on Bionic, Focal and Impish. The instructions are almost the same for all 3, but on Bionic an extra step is necessary to make sure apache2 will use HTTP2.
$ lxc launch ubuntu-daily:focal bug1969629-focal
$ lxc shell bug1969629-focal
# apt update
# apt install -y apache2
# a2enmod http2
# [ $(lsb_release -sc) = "bionic" ] && (echo -e "\nProtocols h2 h2c http/1.1" >> /etc/apache2/apache2.conf)
# cat > /etc/apache2/mods-available/mpm_event.conf << __EOF__
<IfModule mpm_event_module>
StartServers 2
MaxRequestsPerChild 3
</IfModule>
__EOF__
# systemctl restart apache2.service
# while true; do if [[ $(curl -o /dev/null -s -k --http2 http://localhost/ -w '%{size_download}') == 0 ]]; then echo "BUG DETECTED"; break; fi; done
BUG DETECTED
The "while" command above should never stop, but as can be seen, it does stop because the size of the downloaded file (index.html, in this case) is zero. This can also be confirmed by looking at the server logs:
127.0.0.1 - - [26/Apr/2022:20:13:46 +0000] "GET / HTTP/1.1" 101 125 "-" "curl/7.58.0"
127.0.0.1 - - "GET / HTTP/2.0" 200 0 "-" "curl/7.58.0"
[ Where problems could occur ]
Even though the patch is relatively simple, it touches an area that can be a bit complex: session processing of an HTTP request. There are upstream tests that exercise this area and I believe we can be reasonably confident that this change does the right thing. If a regression is to occur, it would likely manifest in the form of a bug in the HTTP2 session handling, and the quicker solution here would be to revert the change while revisiting the patch to determine what went wrong (possibly with upstream help).
[ Original Description ]
We run into a bug in mod_http2 for Apache 2.4.x.
Every time MaxRequestsPerChild is reached, an empty response is sent to the client:
https://bz.apache.org/bugzilla/show_bug.cgi?id=65731
This bug was fixed and backported to v2.4.52:
https://github.com/apache/httpd/pull/281
Any chance that this fix get backported to the Bionic and Focal Package? |
|
2022-04-26 21:11:07 |
Sergio Durigan Junior |
apache2 (Ubuntu Bionic): assignee |
|
Sergio Durigan Junior (sergiodj) |
|
2022-04-26 21:11:09 |
Sergio Durigan Junior |
apache2 (Ubuntu Focal): assignee |
|
Sergio Durigan Junior (sergiodj) |
|
2022-04-26 21:11:10 |
Sergio Durigan Junior |
apache2 (Ubuntu Impish): assignee |
|
Sergio Durigan Junior (sergiodj) |
|
2022-04-26 21:11:12 |
Sergio Durigan Junior |
apache2 (Ubuntu Bionic): status |
Triaged |
In Progress |
|
2022-04-26 21:11:13 |
Sergio Durigan Junior |
apache2 (Ubuntu Focal): status |
Triaged |
In Progress |
|
2022-04-26 21:11:14 |
Sergio Durigan Junior |
apache2 (Ubuntu Impish): status |
Triaged |
In Progress |
|
2022-04-26 21:11:36 |
Sergio Durigan Junior |
bug watch added |
|
https://bz.apache.org/bugzilla/show_bug.cgi?id=65731 |
|
2022-04-26 21:11:36 |
Sergio Durigan Junior |
bug task added |
|
apache2 |
|
2022-04-26 21:12:43 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~sergiodj/ubuntu/+source/apache2/+git/apache2/+merge/420581 |
|
2022-04-26 21:16:56 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~sergiodj/ubuntu/+source/apache2/+git/apache2/+merge/420582 |
|
2022-04-26 21:18:11 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~sergiodj/ubuntu/+source/apache2/+git/apache2/+merge/420583 |
|
2022-04-26 21:36:32 |
Bug Watch Updater |
apache2: status |
Unknown |
Fix Released |
|
2022-04-26 21:36:32 |
Bug Watch Updater |
apache2: importance |
Unknown |
Medium |
|
2022-04-26 21:36:35 |
Bug Watch Updater |
bug watch added |
|
https://github.com/icing/mod_h2/issues/212 |
|
2022-05-02 23:43:26 |
Brian Murray |
apache2 (Ubuntu Impish): status |
In Progress |
Fix Committed |
|
2022-05-02 23:43:27 |
Brian Murray |
bug |
|
|
added subscriber Ubuntu Stable Release Updates Team |
2022-05-02 23:43:29 |
Brian Murray |
bug |
|
|
added subscriber SRU Verification |
2022-05-02 23:43:33 |
Brian Murray |
tags |
server-todo |
server-todo verification-needed verification-needed-impish |
|
2022-05-02 23:47:44 |
Brian Murray |
apache2 (Ubuntu Focal): status |
In Progress |
Fix Committed |
|
2022-05-02 23:47:49 |
Brian Murray |
tags |
server-todo verification-needed verification-needed-impish |
server-todo verification-needed verification-needed-focal verification-needed-impish |
|
2022-05-02 23:49:41 |
Brian Murray |
apache2 (Ubuntu Bionic): status |
In Progress |
Fix Committed |
|
2022-05-02 23:49:48 |
Brian Murray |
tags |
server-todo verification-needed verification-needed-focal verification-needed-impish |
server-todo verification-needed verification-needed-bionic verification-needed-focal verification-needed-impish |
|
2022-05-27 20:42:04 |
Sergio Durigan Junior |
tags |
server-todo verification-needed verification-needed-bionic verification-needed-focal verification-needed-impish |
verification-done-bionic verification-done-focal verification-done-impish |
|
2022-05-30 09:30:08 |
Ćukasz Zemczak |
removed subscriber Ubuntu Stable Release Updates Team |
|
|
|
2022-05-30 09:30:07 |
Launchpad Janitor |
apache2 (Ubuntu Impish): status |
Fix Committed |
Fix Released |
|
2022-05-30 09:35:43 |
Launchpad Janitor |
apache2 (Ubuntu Focal): status |
Fix Committed |
Fix Released |
|
2022-05-30 09:37:16 |
Launchpad Janitor |
apache2 (Ubuntu Bionic): status |
Fix Committed |
Fix Released |
|