pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/35246: apr1 failure to use kqueue for apr_pollset_poll



>Number:         35246
>Category:       pkg
>Synopsis:       pkgsrc/devel/apr1 kqueue does not work for netbsd
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 13 14:15:00 +0000 2006
>Originator:     jeremias%optushome.com.au@localhost
>Release:        NetBSD 3.99.21
>Organization:
        
>Environment:
        apache 2.2.3 ( from pkgsrc)
        apr 1  (which seems to be aliased to apache 2.2.3 )

        
        
System: NetBSD maggi 3.99.21 NetBSD 3.99.21 (NBX) #1: Sat Jul 22 16:52:00 EST 
2006 root@maggi:/sys/src/sys/arch/i386/compile/NBX i386
Architecture: i386
Machine: i386
>Description:
        The problem showed when using apache 2.2.3 and the cgi-scripts did not 
show any output
        althought they executed properly.

        Traceing the problem revealed, that apache thinks it had a timeout out 
the stdout connection to the cgi script.

        Disabling kqueue in apr1 for netbsd seems to have fixed the problem

        It seems the same problem that darwin has is for this netbsd
        so diableing kqueue in apr fixes the problem for my netbsd kernel
        ( I dunno if there is a kernel patch available for this, but 
        google did not show anything except for darwin )

>How-To-Repeat:
        accessing /cgi-bin/printenv does not work (http error),
        althought the script successfully executed.
        inserting a delay in the apache mog_cgi before the apr_poll get called
        (see in the fix section) helps

>Fix:

        disabling kqueue in apr1 for netbsd (as it is done for darwin)  seems 
to have fixed the problem

        diff -r ./work/httpd-2.2.3/srclib/apr/configure 
/sys/pkgsrc/www/apache22/work/httpd-2.2.3/srclib/apr/configure
        4378,4388d4377
        <  # See issue 34332
        < 
        <         # kqueue is broken on OS X, the poll tests work, but the 
socket tests
        <         # hang when it's turned on.  if you decide to reenable this 
please be
        <         # sure to test that ALL the tests continue to work with it 
turned on.
        < 
        <   if test -z "$ac_cv_func_kqueue"; then
        <     test "x$silent" != "xyes" && echo "  setting ac_cv_func_kqueue to 
\"no\""
        <     ac_cv_func_kqueue="no"
        <   fi
        < 


        Inserting the test below also fixes the problem, but.....

        diff -bcr ./work/httpd-2.2.3/modules/generators/mod_cgi.c 
/sys/pkgsrc/www/apache22/work/httpd-2.2.3/modules/generators/mod_cgi.c
        *** ./work/httpd-2.2.3/modules/generators/mod_cgi.c     Wed Jul 12 
13:38:44 2006
        --- 
/sys/pkgsrc/www/apache22/work/httpd-2.2.3/modules/generators/mod_cgi.c      Wed 
Dec 13 23:44:23 2006
        ***************
        *** 672,677 ****
        --- 672,681 ----
          
                timeout = block == APR_NONBLOCK_READ ? 0 : 
data->r->server->timeout;
                  
                  + #if FIX_PROBLEM_EXECUTING_CGI_SCRIPTS_WITH_APR
                  +       ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, data->r,
                  +                               "Timeout set: %d",timeout);
                  + #endif
                        do {
                                  const apr_pollfd_t *results;
                                            apr_int32_t num;
                                            Only in 
/sys/pkgsrc/www/apache22/work/httpd-2.2.3/modules/generators: mod_cgi.lo


>Unformatted:
        
        



Home | Main Index | Thread Index | Old Index