Am 17.05.2021 um 23:36 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.48:
[X] +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: b581bcfdd939fe77c3821f7ad3863c7307374919 *httpd-2.4.48.tar.gz
sha256: 315c0bc50206b866fb17c2cdc28c1973765a8d59ca168b80286e8cb077d0510e *httpd-2.4.48.tar.gz sha512: 91980f757fc0dede8c6cbf54ed973f82a63098aa50d0fce15fe3537687b4ffbb48ed50cdb4ae14eb4a8703450f032daf73f4f3d5e2dd0f75721948e12a9c6dfb *httpd-2.4.48.tar.gz

The SVN tag is '2.4.48' at r1889975.

+1 to release and thanks a bunch for RM!

Summary: all OK except for

- one single crash on SLES 11 statically linked during SSL handshake.

- two crashes on Solaris with prefork MPM during shutdown. Only with released APR/APU not with svn heads. Tests ongoing. I think I have seen such before, so not a regression.

- minor nit: The following files in the tarballs contains french date lines probably due to exporting them from svn with your local locale:
  - ROADMAP
  - VERSIONING
  - maybe others?
  Maybe already fixed, I saw some conversation about in the future
  using a default locale in scripts.

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 r1889948 (expat)
  - APR/APU 1.7.x r1889104/1.7.x r1889948 (libxml2)
  - APR/APU 1.6.x r1876940/1.6.x r1889948 (expat)

- using external libraries
  - expat 2.3.0
  - pcre 8.44
  - lua 5.4.3 (compiled with LUA_COMPAT_MODULE)
  - libxml2 2.9.12
  - libnghttp2 1.43.0
  - brotli 1.0.9
  - curl 7.76.1
  - jansson 2.13.1
  - libldap 2.4.58 (resp. 2.4.52 when using OpenSSL 0.9.8)
and
  - openssl 0.9.8zh, 1.0.2, 1.0.2u, 1.1.1, 1.1.1k, 3.0.0alpha16

- 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 884 builds succeeded.

- compiler warnings: see earlier separate mail


Tested for

- SLES 11+12 done
- SLES 15 and RHEL 6+7+8 mostly done
- Solaris 10 Sparc about 12% done
- 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 ~8000 (more still to come, especially most of the Solaris ones and some of those with statically linked OpenSSL in combination with statically linked server on Linux).

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};

- the temporary workaround for OpenSSL 3 when using "openssl crl -hash" with STDIN in Apache-Test/lib/Apache/TestSSLCA.pm is no longer necessary, problem fixed in OpenSSL 3.0.0alpha16


The following test failures were seen:

a A single crash in SLES 11 APU 1.6.1 APR 1.7.0 OpenSSL 1.0.2u
  build statically using event.
  Crash during ssl_io_filter_handshake calling ... CRYPTO_malloc and
  finally "glibc detected *** /path/to/bin/httpd: malloc():
  memory corruption: 0x0000000000faafe1"
  gdb data see below.

b Two crashes on Solaris 10 Sparc,
  once APU 1.6.1 APR 1.6.5 OpenSSL 3.0.0alpha16
  and once APU 1.6.1 APR 1.7.0 OpenSSL 1.1.1k
  build dynamically both using prefork.
  Crash during shutdown when apr_pool_destroy() for the
  pchild pool calls allocator_free() (invalid node->next).
  Might be fixed in svn heads. I will check, whether the ongoing
  Solaris tests give some more indication.
  gdb data see below.

c 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.

d Tests 48, 51, 54 and once also 42 in t/modules/cgi.t line 232:
  Not a regression
  Only on Solaris
  98 failed test runs out of 221 until now
  Test checks log contents. Could be false positive due to
  logs not being flushed.

e Probably still hangs on Solaris when using prefork and mod_ext_filter.
  Not really checked, mod_ext_filter commented out
  to let the tests not hang.
  Would not be a regression.

Regards,

Rainer


GDB info single crash on SLES 11:

*** glibc detected *** /path/to/httpd/bin/httpd: malloc(): memory corruption: 0x0000000000faafe1 ***


Thread 1 (Thread 11610):
#0  0x00007f49fc86c945 in raise () from /lib64/libc.so.6
#1  0x00007f49fc86df21 in abort () from /lib64/libc.so.6
#2  0x00007f49fc8a98ef in __libc_message () from /lib64/libc.so.6
#3  0x00007f49fc8af018 in malloc_printerr () from /lib64/libc.so.6
#4  0x00007f49fc8b1f7f in _int_malloc () from /lib64/libc.so.6
#5  0x00007f49fc8b4057 in malloc () from /lib64/libc.so.6
#6 0x00007f49fea2d0b8 in CRYPTO_malloc (num=11557, file=0x7f49feb78935 "digest.c", line=222) at mem.c:346 #7 0x00007f49fea5c28c in EVP_DigestInit_ex (ctx=0x7f49df4f6bc0, type=0x7f49fedbf980, impl=0x0) at digest.c:222 #8 0x00007f49feaf8db4 in ssleay_rand_add (buf=0x7f49df4f6c80, num=8, add=0) at md_rand.c:269
#9  0x00007f49fe9ef34c in ssl23_accept (s=0xf25900) at s23_srvr.c:156
#10 0x000000000057a695 in ssl_io_filter_handshake (filter_ctx=0xfc8198)
    at /path/to/src/httpd/modules/ssl/ssl_engine_io.c:1340
#11 0x000000000057c09c in ssl_io_filter_input (f=0xfa0b98, bb=0xfa0eb8, mode=6, block=4294967295, readbytes=0)
    at /path/to/src/httpd/modules/ssl/ssl_engine_io.c:1528
#12 0x000000000056f665 in ssl_hook_process_connection (c=0xfc76e8) at /path/to/src/httpd/modules/ssl/mod_ssl.c:707 #13 0x000000000049861a in ap_run_process_connection (c=0xfc76e8) at /path/to/src/httpd/server/connection.c:42 #14 0x00007f49fbd4e807 in process_socket (thd=0xd97be8, p=0xfc73b8, sock=0xfc7440, cs=0xfc7640, my_child_num=9505424, my_thread_num=-67799776)
    at /path/to/src/httpd/server/mpm/event/event.c:1038
#15 0x00007f49fbd4f5a8 in worker_thread (thd=0xd97be8, dummy=<value optimized out>)
    at /path/to/src/httpd/server/mpm/event/event.c:2070
#16 0x00007f49fcda35f0 in start_thread () from /lib64/libpthread.so.0
#17 0x00007f49fc90e84d in clone () from /lib64/libc.so.6
#18 0x0000000000000000 in ?? ()
(gdb) bt full
#0  0x00007f49fc86c945 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007f49fc86df21 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00007f49fc8a98ef in __libc_message () from /lib64/libc.so.6
No symbol table info available.
#3  0x00007f49fc8af018 in malloc_printerr () from /lib64/libc.so.6
No symbol table info available.
#4  0x00007f49fc8b1f7f in _int_malloc () from /lib64/libc.so.6
No symbol table info available.
#5  0x00007f49fc8b4057 in malloc () from /lib64/libc.so.6
No symbol table info available.
#6 0x00007f49fea2d0b8 in CRYPTO_malloc (num=11557, file=0x7f49feb78935 "digest.c", line=222) at mem.c:346
        ret = 0x0
#7 0x00007f49fea5c28c in EVP_DigestInit_ex (ctx=0x7f49df4f6bc0, type=0x7f49fedbf980, impl=0x0) at digest.c:222
No locals.
#8 0x00007f49feaf8db4 in ssleay_rand_add (buf=0x7f49df4f6c80, num=8, add=0) at md_rand.c:269
        i = 0
        j = 0
        k = <value optimized out>
        st_idx = 889
        md_c = {657, 1446}
local_md = "@\321?P\352`\352\356\357\245tKd\210'=\235(p", <incomplete sequence \304> m = {digest = 0x7f49fedbf980, engine = 0x0, flags = 0, md_data = 0x0, pctx = 0x0, update = 0x7f49fea62a30 <update>}
        do_not_lock = 0
#9  0x00007f49fe9ef34c in ssl23_accept (s=0xf25900) at s23_srvr.c:156
        buf = <value optimized out>
        Time = 1621645884
        cb = <value optimized out>
        ret = <value optimized out>
        state = <value optimized out>
#10 0x000000000057a695 in ssl_io_filter_handshake (filter_ctx=0xfc8198)
    at /path/to/src/httpd/modules/ssl/ssl_engine_io.c:1340
        c = 0xfc76e8
        sc = <value optimized out>
        cert = <value optimized out>
        n = <value optimized out>
        ssl_err = <value optimized out>
        verify_result = <value optimized out>
        server = 0xc01398
#11 0x000000000057c09c in ssl_io_filter_input (f=0xfa0b98, bb=0xfa0eb8, mode=6, block=4294967295, readbytes=0)
    at /path/to/src/httpd/modules/ssl/ssl_engine_io.c:1528
        status = <value optimized out>
        start = <value optimized out>
        len = 8192
        is_init = 1
        bucket = <value optimized out>
#12 0x000000000056f665 in ssl_hook_process_connection (c=0xfc76e8) at /path/to/src/httpd/modules/ssl/mod_ssl.c:707
        temp = 0xfa0eb8
        sslconn = <value optimized out>
#13 0x000000000049861a in ap_run_process_connection (c=0xfc76e8) at /path/to/src/httpd/server/connection.c:42
        n = 4
        rv = 6
#14 0x00007f49fbd4e807 in process_socket (thd=0xd97be8, p=0xfc73b8, sock=0xfc7440, cs=0xfc7640, my_child_num=9505424, my_thread_num=-67799776)
    at /path/to/src/httpd/server/mpm/event/event.c:1038
        c = 0xfc76e8
        conn_id = 205
        rv = <value optimized out>
        rc = <value optimized out>
#15 0x00007f49fbd4f5a8 in worker_thread (thd=0xd97be8, dummy=<value optimized out>)
    at /path/to/src/httpd/server/mpm/event/event.c:2070
        csd = 0xfc7440
        cs = 0x0
        te = 0x0
        ptrans = 0xfc73b8
        process_slot = 3
        thread_slot = 13
        rv = <value optimized out>
        is_idle = 0
#16 0x00007f49fcda35f0 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#17 0x00007f49fc90e84d in clone () from /lib64/libc.so.6
No symbol table info available.


GDB info crash on Solaris 10 (both cases same gdb info):

Program terminated with signal SIGSEGV, Segmentation fault.
#0 allocator_free (node=0x1d278, allocator=0x419330) at /path/to/src/apr-1.6.5/memory/unix/apr_pools.c:462
462                 node->next = freelist;
[Current thread is 3 (Thread 1 (LWP 1))]
(gdb) bt full
#0 allocator_free (node=0x1d278, allocator=0x419330) at /path/to/src/apr-1.6.5/memory/unix/apr_pools.c:462
        freelist = 0x578010
        max_index = 1823568
        max_free_index = 1
        next = 0x4
        index = 34911
        current_free_index = 0
#1 apr_pool_destroy (pool=0x41f490) at /path/to/src/apr-1.6.5/memory/unix/apr_pools.c:1043
        active = <optimized out>
        allocator = 0x419330
#2 0xfed629e8 in clean_child_exit (code=7) at /path/to/src/httpd/server/mpm/prefork/prefork.c:227
No locals.
#3 0xfed62f34 in child_main (child_num_arg=<optimized out>, child_bucket=<optimized out>)
    at /path/to/src/httpd/server/mpm/prefork/prefork.c:481
        pfd = <optimized out>
        thd = 0x41f4d0
        osthd = 1
        ptrans = 0x421498
        allocator = 0x419330
        status = <optimized out>
        i = <optimized out>
        lr = <optimized out>
        pollset = 0x421080
        sbh = 0x421078
        bucket_alloc = <optimized out>
        last_poll_idx = <optimized out>
        lockfile = <optimized out>
#4 0xfed63604 in make_child (s=0xce5b8, slot=4) at /path/to/src/httpd/server/mpm/prefork/prefork.c:717
        bucket = 0
        pid = <optimized out>
#5  0xfed645e0 in perform_idle_server_maintenance (p=<optimized out>)
    at /path/to/src/httpd/server/mpm/prefork/prefork.c:821
        i = <optimized out>
        idle_count = <optimized out>
        ws = <optimized out>
        free_length = <optimized out>
free_slots = {3, 4, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, -49782816, 0, 7168, -18130688, 0, -15783424, 0, -4198992, 364012, 1000, -30700224, -42489328,
          1000, 2456008, -53053124, 0, 1000}
        last_non_dead = <optimized out>
        total_non_dead = <optimized out>
        bucket_kill_child_record = 0
#6 prefork_run (_pconf=<optimized out>, plog=<optimized out>, s=<optimized out>)
    at /path/to/src/httpd/server/mpm/prefork/prefork.c:1014
        status = 0
        pid = {pid = -1, in = 0xffbfed98, out = 0x3defe0, err = 0x0}
        child_slot = <optimized out>
        exitwhy = APR_PROC_EXIT
        processed_status = <optimized out>
        index = <optimized out>
        remaining_children_to_start = 0
        i = <optimized out>
#7 0x0003aa8c in ap_run_mpm (pconf=0xa9440, plog=0xd0110, s=0xce5b8) at /path/to/src/httpd/server/mpm_common.c:94
        pHook = <optimized out>
        n = 0
        rv = -1
#8 0x00077924 in main (argc=<optimized out>, argv=<optimized out>) at /path/to/src/httpd/server/main.c:819
        c = 68 'D'
        showcompile = <optimized out>
        showdirectives = 0
        confname = 0xffbff278 "*redacted*"...
        def_server_root = 0xffbff176 "/*redacted*"...
        temp_error_log = <optimized out>
        error = 0x9df48 <ap_server_conf> ""
        process = 0xa74c8
        pconf = 0xa9440
        plog = 0xd0110
        ptemp = 0xd7138
        pcommands = 0xcb4c8
        opt = 0xcb568
        rv = <optimized out>
        mod = <optimized out>
        opt_arg = 0xffbff395 "APACHE2_4"
        signal_server = 0x885f
        rc = <optimized out>

(gdb) print *node
$1 = {next = 0x4, ref = 0x11000012, index = 34911, free_index = 630500, first_avail = 0x0, endp = 0x12000000 <error: Cannot access memory at address 0x12000000>}

(gdb) print *node->next
Cannot access memory at address 0x4

(gdb) print *allocator
$2 = {max_index = 1823568, max_free_index = 1, current_free_index = 0, mutex = 0x0, owner = 0x361678, free = {0x0 <repeats 20 times>}}

(gdb) up
#1 apr_pool_destroy (pool=0x41f490) at /path/to/src/apr-1.6.5/memory/unix/apr_pools.c:1043
1043        allocator_free(allocator, active);

(gdb) print *pool
$3 = {parent = 0x0, child = 0x0, sibling = 0x41d488, ref = 0xa9444, cleanups = 0x0, free_cleanups = 0x0, allocator = 0x419330, subprocesses = 0x0, abort_fn = 0x32410 <abort_on_oom>, user_data = 0x526250, tag = 0xfed6a4e8 "pchild", active = 0x525890, self = 0x41f478, self_first_avail = 0x41f4d0 "",
  pre_cleanups = 0x0}

Reply via email to