httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject [Bug 51689] Cross compiling causes multiple Listen directives to not work properly
Date Thu, 06 Sep 2012 15:57:02 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=51689

--- Comment #3 from dennisl <dennis.r.lacroix@hp.com> ---
I ran into another symptom of this problem when cross-compiling 2.2.22 for
Linux on PowerPC.  

When configuring a directory to require client certificates, like this:

Directory "/ramdisk/www/cert_area">
   SSLVerifyDepth 1
   SSLVerifyClient require

the renegotiation hangs every time.  The call stack looks like this:

#0  0x0fcfeae8 in __read_nocancel () from /usr/lib/libpthread.so.0
#1  0x0fc41678 in apr_socket_recv
#2  0x0fcbf9d0 in socket_bucket_read 
#3  0x1006792c in ap_core_input_filter
#4  0x10072d0c in ap_get_brigade
#6  0x0fec5a30 in BIO_read
#7  0x0ffb6b9c in ssl3_read_n
#8  0x0ffb7960 in ssl3_read_bytes
#9  0x0ffb5444 in ssl3_read
#10 0x0ffc7b64 in SSL_read
#11 0x10099920 in ssl_io_input_read
#12 0x1009a588 in ssl_io_filter_input
#13 0x10072d0c in ap_get_brigade 
#14 0x1009c318 in ssl_hook_Access
#15 0x10064e64 in ap_run_access_checker
#16 0x100669f8 in ap_process_request_internal
#17 0x100a9a38 in ap_process_request
#18 0x100a6e88 in ap_process_http_connection
#19 0x1006f70c in ap_run_process_connection
#20 0x100c38e4 in child_main
#21 0x100c3a90 in make_child
#22 0x100c4354 in ap_mpm_run
#23 0x1005693c in main

I verified in apr_socket_recv/socket_bucket_read that it expects the socket
read to be non-blocking, but it blocks.

This is the higher-level functionality that is trying to be accomplished:

/* Perform a speculative (and non-blocking) read from the connection
 * filters for the given request, to determine whether there is any
 * pending data to read.  Return non-zero if there is, else zero. */ static int
has_buffered_data(request_rec *r) {
    apr_bucket_brigade *bb;
    apr_off_t len;
    apr_status_t rv;
    int result;

    bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);

    rv = ap_get_brigade(r->connection->input_filters, bb, AP_MODE_SPECULATIVE,
                        APR_NONBLOCK_READ, 1);    <<<< HANGS HERE

This was a nasty debug.  I ended up building the same version of Apache
natively for Unbuntu where I did not find the problem, and then compared the
build configuration.

Is there a better way to handle this compilation flag than just defaulting it
to true for cross compiles?  If it isn't possible to automatically determine
the proper value for cross compiles at configuration time, could it be
defaulted to an invalid value that would force the user to set
ac_cv_o_nonblock_inherited prior to running configure?

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message