Am 22.04.2021 um 11:25 schrieb Christophe JAILLET:
Hi, all;
Please find below the proposed release tarball and signatures:
https://dist.apache.org/repos/dist/dev/httpd/
I would like to call a VOTE over the next few days to release this
candidate tarball as 2.4.47:
[ ] +1: It's not just good, it's good enough!
[ ] +0: Let's have a talk.
[ ] -1: There's trouble in paradise. Here's what's wrong.
The computed digests of the tarball up for vote are:
sha1: f4281be0bf08489a51d818b596a92bfcfbb2c708 *httpd-2.4.47.tar.gz
sha256: 567d5ac72ea643e3828e8e54f32e06f1fad10095d33ae4071eeaec3c78b70a34
*httpd-2.4.47.tar.gz
sha512:
de4c80e1ddebe3286c234179fd01d4917f479f75a7fe958032c19a8f22546e95f31e3b50073844d09f20f54894e7d511bcd9fd2f1cd2b2c71b3a182d6e62bab3
*httpd-2.4.47.tar.gz
The SVN tag is '2.4.47' at r1889091.
--
Christophe JAILLET
+1 to release and thanks a bunch for stepping in as RM!
I think I wasn't able to import your key from a pgp key server, but
maybe I wasn't using the right ones. Your key is in the KEYS file,
probably just not in the network of key servers.
Summary: all OK except for
- one single crash on SLES 11 using prefork.
Detailed report:
- Sigs and hashes OK
- contents of tarballs identical
- contents of tag and tarballs identical
except for expected deltas
Built on
- Solaris 10 Sparc as 32 Bit Binaries
- SLES 11+12+15 (64 Bits)
- RHEL 6+7+8 (64 Bits)
For all platforms built
- with default (shared) and static modules
- with module set reallyall
- using --enable-load-all-modules
- against
- bundled APR/APU from deps tarball
- external APR/APU 1.7.0/1.6.1 (expat)
- APR/APU 1.6.5/1.6.1 (expat)
- APR/APU 1.7.x r1889104/1.7.x r1884108 (expat)
- APR/APU 1.7.x r1889104/1.7.x r1884108 (libxml2)
- APR/APU 1.6.x r1876940/1.6.x r1876943 (expat)
- APR/APU 1.6.x r1876940/1.6.x r1876943 (libxml2)
- using external libraries
- expat 2.3.0
- pcre 8.44
- lua 5.4.3 (compiled with LUA_COMPAT_MODULE)
- libxml2 2.9.10
- libnghttp2 1.43.0
- brotli 1.0.9
- curl 7.76.1
- jansson 2.13.1
- libldap 2.4.58
and
- openssl 0.9.8zh, 1.0.2, 1.0.2u, 1.1.1, 1.1.1k, 3.0.0alpha15
- Tool chain:
- platform gcc except on Solaris
(gcc 9.3.0 Solaris 10)
- CFLAGS: -O2 -g -Wall -fno-strict-aliasing
- on Solaris additionally -mpcu=v9, -D_XOPEN_SOURCE,
-D_XOPEN_SOURCE_EXTENDED=1, -D__EXTENSIONS__
and -D_XPG6
All of the 852 builds done until now succeeded, 32 builds on Solaris yet
to come.
- compiler warnings:
- only on Solaris 10 Sparc (GCC 9.3.0): APR 1.7.x
srclib/apr/locks/unix/proc_mutex.c:979:49: warning:
'mutex_proc_pthread_cond_methods' defined but not used
[-Wunused-const-variable=]
=> the declaration checks for APR_USE_PROC_PTHREAD_MUTEX_COND,
which is defined on Solaris, the use in line 1437 also checks
HAVE_PTHREAD_MUTEX_ROBUST, which is not defined on Solaris.
- deprecation warnings when building against OpenSSL 3.0.0, see other
mail
Tested for
- SLES 11+12+15, RHEL 6+7+8
- Tests for Solaris 10 Sparc still to come, when builds finish there
- MPMs prefork, worker, event
- default and static module builds
- log level trace8
- module set reallyall (129 modules plus 3 MPMs)
- Perl client bundle build against OpenSSL 1.1.1g plus patches, 1.1.0l,
1.0.2u and 0.9.8zh
- OpenSSL once linked statically and once as a shared library
Every OpenSSL version in the client is tested with every OpenSSL version
in the server.
The total number of test suite runs until now is ~3800 (many more still
to come, especially those with statically linked OpenSSL and most of the
Solaris ones).
Some local adjustments to tests were used:
- t/modules/buffer.t: removing huge buffer tests
- my $bigsize = 100000;
+ my $bigsize = 10000;
- fixing limitrequestline overwrite which does not yet really work in
Apache-Test/lib/Apache/TestConfig.pm
87d86
< limitrequestline => 'global LimitRequestLine setting (default is 128)',
96a96
> # limitrequestline => 'global LimitRequestLine setting (default is
128)',
372,373c372,373
< $vars->{limitrequestline} ||= 128;
< $vars->{limitrequestlinex2} = 2 * $vars->{limitrequestline};
---
> # $vars->{limitrequestline} ||= 128;
> # $vars->{limitrequestlinex2} = 2 * $vars->{limitrequestline};
- temporary workaround for a OpenSSL 3 when using "openssl crl -hash"
with STDIN in Apache-Test/lib/Apache/TestSSLCA.pm
39a40
> my $openssl_workaround = $ENV{APACHE_TEST_OPENSSL_CMD_WORKAROUND} ||
$openssl;
426c427
< chomp(my $hash = `$openssl $type -noout -hash < $file`);
---
> chomp(my $hash = `$openssl_workaround $type -noout -hash <
$file`);
This enables to use OpenSSL 3 everywhere in test suite configuration and
setup and override it only in the CRL hash command line, for which it is
currently buggy.
The following test failures were seen:
a All https tests fail between OpenSSL 0.9.8zh and 3.0.0alpha15
Not a regression.
Probably need to figure out how to load the legacy provider
during the tests
b Tests 48, 51, 54 in t/modules/cgi.t line 232:
Not a regression
Only on Solaris
3 failed test runs out of 11 until now
Test checks log contents. Could be false positive due to
logs not being flushed.
c A single crash in SLES 11 APU 1.6.1 APR 1.6.5 Openssl_3.0.0alpha15
build statically using prefork. Crash during apr_pool_destroy for pool
"proxy_worker_cp" triggered via just_die and clean_child_exit due to a
signal received while being in accept_mutex_on. gdb data see below.
d Hangs on Solaris when using prefork and mod_ext_filter.
Not a regression.
Regards,
Rainer
GDB info single crash on SLES 11:
Program terminated with signal 11, Segmentation fault.
#0 allocator_free (node=<value optimized out>, allocator=<value
optimized out>)
at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:455
455 index = node->index;
(gdb) bt full
#0 allocator_free (node=<value optimized out>, allocator=<value
optimized out>)
at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:455
max_index = 0
max_free_index = 1
current_free_index = 0
#1 apr_pool_destroy (node=<value optimized out>, allocator=<value
optimized out>)
at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:1043
active = 0xd340d0
allocator = 0xd3b700
#2 0x00007fa2dc52dd25 in apr_pool_destroy (pool=0xdada18) at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:997
active = <value optimized out>
allocator = <value optimized out>
#3 0x00007fa2db51c783 in clean_child_exit (code=0) at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:227
No locals.
#4 0x00007fa2db51cf3b in just_die (sig=<value optimized out>) at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:355
No locals.
#5 <signal handler called>
No symbol table info available.
#6 0x00007fa2dba21107 in semop () from /lib64/libc.so.6
No symbol table info available.
#7 0x00007fa2dc52c4cc in proc_mutex_sysv_acquire (mutex=0x9ff048) at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/locks/unix/proc_mutex.c:279
rc = <value optimized out>
#8 0x00007fa2db51cb7f in accept_mutex_on () at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:241
No locals.
#9 child_main () at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:521
current_conn = 0xdafc90
csd = 0xdafaa0
thd = 0xdada90
osthd = 140337511352064
ptrans = 0xdafa28
allocator = 0xd3b700
status = 14351504
i = <value optimized out>
lr = 0xdafc90
pollset = 0xe1a458
sbh = 0xe1a450
bucket_alloc = 0xe50eb8
last_poll_idx = 1
lockfile = <value optimized out>
#10 0x00007fa2db51d080 in make_child (s=<value optimized out>, slot=10)
at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:717
bucket = <value optimized out>
#11 0x00007fa2db51dab2 in perform_idle_server_maintenance (p=<value
optimized out>)
---Type <return> to continue, or q <return> to quit---
at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:821
i = 2
idle_count = 10
free_length = 8
free_slots = {9, 10, 11, 12, 13, 14, 15, 16, 9689576, 0,
9392440, 0, 6738880, 0, 4556880, 0, 14327760, 0, -598550223, 32674,
9727688, 0, 0, 0, 9727688, 0,
9392440, 0, 9678040, 0, 9392440, 0}
last_non_dead = 1
total_non_dead = 514
bucket_kill_child_record = 0
#12 prefork_run (p=<value optimized out>) at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm/prefork/prefork.c:1014
status = 0
pid = {pid = -1, in = 0x5634c0, out = 0x458850, err = 0x93d9e8}
child_slot = <value optimized out>
exitwhy = APR_PROC_EXIT
processed_status = <value optimized out>
index = <value optimized out>
remaining_children_to_start = 0
i = <value optimized out>
#13 0x00000000004631c8 in ap_run_mpm (pconf=0x8f5138, plog=0x94efe8,
s=0x93acd8)
at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/mpm_common.c:96
n = 0
rv = <value optimized out>
#14 0x000000000045bf6a in main (argc=11, argv=0x7fffaa236ab8) at
/path/to/sources/httpd/2.4.x/2.4.47/httpd-2.4.47/server/main.c:819
c = 68 'D'
showcompile = 0
showdirectives = 0
confname = 0x7fffaa238daf
"/path/to/sles11.x86_64-1.6.5-dso_enable-1.6.1-modular_enable-apr_1.6.5-dso_enable-expat_2.3.0-1-ldap_2.4.58-300-1-openssl_3.0.0alpha15-1-shared-sqlite_3.35.5-1-bdb_6.1.19-1-3.0.0alpha15-1-share"...
def_server_root = 0x7fffaa238cb7
"/path/to/sles11.x86_64-1.6.5-dso_enable-1.6.1-modular_enable-apr_1.6.5-dso_enable-expat_2.3.0-1-ldap_2.4.58-300-1-openssl_3.0.0alpha15-1-shared-sqlite_3.35.5-1-bdb_6.1.19-1-3.0.0alpha15-1-share"...
temp_error_log = 0x0
error = <value optimized out>
process = 0x8f3218
pconf = 0x8f5138
plog = 0x94efe8
ptemp = 0x93d9e8
pcommands = 0x917248
opt = 0x917338
rv = <value optimized out>
mod = 0x8df2b0
opt_arg = 0x7fffaa238ecf "PERL_USEITHREADS"
rc = 9302704
(gdb) up
#1 apr_pool_destroy (node=<value optimized out>, allocator=<value
optimized out>)
at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:1043
1043 allocator_free(allocator, active);
(gdb) up
#2 0x00007fa2dc52dd25 in apr_pool_destroy (pool=0xdada18) at
/path/to/sources/apr/1.6.x/1.6.5/apr-1.6.5/memory/unix/apr_pools.c:997
997 apr_pool_destroy(pool->child);
(gdb) print *pool
$1 = {parent = 0x8f5138, child = 0xe2fe28, sibling = 0xdaba08, ref =
0x8f5140, cleanups = 0xe1af38, free_cleanups = 0x0, allocator =
0xd3b700, subprocesses = 0x0,
abort_fn = 0x45c1e0 <abort_on_oom>, user_data = 0xe1af60, tag =
0x7fa2db51e583 "pchild", active = 0xe19d50, self = 0xdad9f0,
self_first_avail = 0xdada90 "\030\332", <incomplete sequence \332>,
pre_cleanups = 0x0}
(gdb) print *pool->child
$2 = {parent = 0xdada18, child = 0x0, sibling = 0xe2be08, ref =
0xdada20, cleanups = 0x0, free_cleanups = 0xe2ffa0, allocator =
0xd3b700, subprocesses = 0x0,
abort_fn = 0x45c1e0 <abort_on_oom>, user_data = 0x0, tag = 0x662f7b
"proxy_worker_cp", active = 0xe2fe00, self = 0xe2fe00,
self_first_avail = 0xe2fea0 "(\376", <incomplete sequence \342>,
pre_cleanups = 0x0}