RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1785100 - mod_cgid takes CGIDScriptTimeout x 2 seconds for timeout [rhel-7.9.z]
Summary: mod_cgid takes CGIDScriptTimeout x 2 seconds for timeout [rhel-7.9.z]
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: httpd
Version: 7.8
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Luboš Uhliarik
QA Contact: icesalov
URL:
Whiteboard:
Depends On:
Blocks: 1875844 1977234
TreeView+ depends on / blocked
 
Reported: 2019-12-19 06:44 UTC by Hisanobu Okuda
Modified: 2023-12-15 17:06 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1875844 1977234 (view as bug list)
Environment:
Last Closed: 2020-11-10 13:10:55 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2020:5033 0 None None None 2020-11-10 13:11:03 UTC

Description Hisanobu Okuda 2019-12-19 06:44:20 UTC
Description of problem:

When a cgi script takes so long time to provide a response, mod_cgid takes CGIDScriptTimeout x 2 seconds for timeout.

Version-Release number of selected component (if applicable):

    httpd-2.4.6-90.el7.x86_64

How reproducible:


Steps to Reproduce:
1. yum -y install httpd-2.4.6-90.el7.x86_64
 
2. Edit /etc/httpd/conf.modules.d/00-mpm.conf to enable the event mpm module only.
 
3. Edit /etc/httpd/conf/httpd.conf and add:

------------------------------------ 
CGIDScriptTimeout 10
KeepAlive On 
KeepAliveTimeout 2

ExtendedStatus on
<Location /server-status>
SetHandler server-status
</Location>
------------------------------------ 
 
 
4. systemctl start httpd

5. Create a cgi script and chmod+x it in /var/www/cgi-bin/test.py and chmod +x it.

------------------------------------ 
#!/usr/bin/python                                                                                                   
import os
import time
import sys
print "Content-Type: text/html"     # HTML is following                                                              
print                               # blank line, end of headers                                                     
time.sleep(31)
sys.stdout.flush()
time.sleep(65)
------------------------------------ 

6. Fetch the page with curl:

time curl -kv  http://127.0.0.1/cgi-bin/test.py

7. After 10 seconds (CGIDScriptTimeout), an error occurs in /var/log/apache/error_log

[Tue Dec 17 10:02:58.730053 2019] [cgid:error] [pid 24364:tid 140669817440000] [client 127.0.0.1:48540] Script timed out before returning headers: test.py

8. After another 10 seconds, "504 Gateway Timeout" is returned


Actual results:


Expected results:


Additional info:

Comment 2 Hisanobu Okuda 2019-12-19 06:47:18 UTC
After the message "Script timed out before returning headers: test.py" appears, discard_script_output() is called in log_script() to "Soak up script output" and takes `CGIDScriptTimeout` seconds to be timed out.
I think it is not needed:

----------------------------------------------------------
1101 static int log_script(request_rec *r, cgid_server_conf * conf, int ret,
1102                       char *dbuf, const char *sbuf, apr_bucket_brigade *bb,
1103                       apr_file_t *script_err)
1104 {
1105     const apr_array_header_t *hdrs_arr = apr_table_elts(r->headers_in);
1106     const apr_table_entry_t *hdrs = (apr_table_entry_t *) hdrs_arr->elts;
1107     char argsbuffer[HUGE_STRING_LEN];
1108     apr_file_t *f = NULL;
1109     apr_bucket *e;
1110     const char *buf;
1111     apr_size_t len;
1112     apr_status_t rv;
1113     int first;
1114     int i;
1115     struct stat finfo;
1116     char time_str[APR_CTIME_LEN];
1117 
1118     /* XXX Very expensive mainline case! Open, then getfileinfo! */
1119     if (!conf->logname ||
1120         ((stat(conf->logname, &finfo) == 0)
1121          && (finfo.st_size > conf->logbytes)) ||
1122          (apr_file_open(&f, conf->logname,
1123                   APR_APPEND|APR_WRITE|APR_CREATE, APR_OS_DEFAULT, r->pool) != APR_SUCCESS)) {
1124         /* Soak up script output */
1125         discard_script_output(bb);  <<<<==== Is it needed actually?
1126         if (script_err) {

----------------------------------------------------------

Comment 22 errata-xmlrpc 2020-11-10 13:10:55 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (httpd bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:5033


Note You need to log in before you can comment on or make changes to this bug.