Am 10.07.2018 um 16:03 schrieb Jim Jagielski:
The pre-release test tarballs for Apache httpd
version 2.4.34 can be found at the usual place:

        http://httpd.apache.org/dev/dist/

I'm calling a VOTE on releasing these as Apache httpd 2.4.34 GA.

[ ] +1: Good to go
[ ] +0: meh
[ ] -1: Danger Will Robinson. And why.

+1 to release and thank for RM!

Summary: some old test failures are gone.

Builds with APR/APU 1.7.x crash already during "httpd -l" due to some problem with NULL apr_hook_global_pool or process->pconf. See below for details. IMHO Not a showstopper because it doesn't happen for released APR/APU.

Builds on Linux against APR trunk crash during test suite run in just_die() due to some likely double free in a following apr_allocator_destroy(). IMHO again not a showstopper due to APR trunk not being released yet.

Detailed report:

- Sigs and hashes OK
- contents of tarballs identical
- contents of tag and tarballs identical
  except for expected deltas
- deps convenience tarball contains latest APR/APU 1.6.3/1.6.1

Built on

- Solaris 10 Sparc as 32 Bit Binaries
- SLES 11+12 (64 Bits)
- RHEL 6+7 (64 Bits)

For all platforms built

- with default (shared), static and explicit shared modules
- with module sets reallyall, all, most, few, none and default
- using --enable-load-all-modules
- against "included" APR/APU from deps tarball,
  plus two types of external APR/APU 1.6.3/1.6.1 plus 1.5.2/1.5.4
  plus latest trunk plus 1.6.x head plus 1.7.x head

- using external libraries
  - expat 2.2.5
  - pcre 8.42
  - openssl 1.0.2o plus patches
  - lua 5.3.4 (compiled with LUA_COMPAT_MODULE)
  - distcache 1.5.1
  - libxml2 2.9.8
  - libnghttp2 1.32.0
  - brotli 1.0.5
  - curl 7.60.0
  - jansson 2.11

- Tool chain:
    - platform gcc except on Solaris
(gcc 8.1.0 Solaris 10, only older APR/APU 1.5.x compiled with older gcc 4.9.2)
    - 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

Most of the 420 builds succeeded, 1 failed on RHEL 6 due to a core dump of /bin/bash during "make install" (happens there occasionally) and 14 failed on Solaris, all of them when building against the external APR/APU 1.6.3/1.6.1. That is a (now) understood local build problem, not relevant to this release.

The builds against APR/APU 1.7.x head immediately crash during "httpd -l". Since this does not happen for other APR/APU and 1.7.x does not yet have a release, IMHO this is not a showstopper, but we must take care of this before releasing 1.7.x.

gdb info for the crash shows a NULL pool apr_hook_global_pool.
That pool seems to get set in server/config.c line 770 from process->pconf.

#0 apr_palloc (pool=0x0, in_size=20) at /sources/apr/1.7.x/r1835601/memory/unix/apr_pools.c:838
        active = <optimized out>
        node = <optimized out>
        mem = <optimized out>
        size = 24
        free_index = <optimized out>
#1 0xfed85bec in apr_array_make (p=0x0, nelts=1, elt_size=8) at /sources/apr/1.7.x/r1835601/tables/apr_tables.c:88
        res = <optimized out>
#2 0xff327d44 in apr_hook_sort_register (szHookName=0x1b6e50 "generate_log_id", paHooks=0x21b6c4 <_hooks+4>)
    at /sources/apr-util/1.7.x/r1835601/hooks/apr_hooks.c:237
        pEntry = <optimized out>
#3 0x0007e0cc in ap_hook_generate_log_id (pf=0x7d9b8 <core_generate_log_id>, aszPre=0x0, aszSucc=0x0, nOrder=30)
    at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/log.c:1954
        pHook = <optimized out>
#4 0x0007e0f0 in ap_register_log_hooks (p=0x228da0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/log.c:915 #5 0x0006c0b8 in register_hooks (p=0x228da0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/core.c:5397 #6 0x00079940 in ap_register_hooks (m=0x2085c4 <core_module>, p=0x228da0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/config.c:499 #7 0x0007aa00 in ap_register_hooks (p=0x228da0, m=0x2085c4 <core_module>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/config.c:650 #8 ap_add_module (m=0x2085c4 <core_module>, p=0x228da0, sym_name=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/config.c:650
        sym = <optimized out>
        m = 0x2085c4 <core_module>
        sym_name = <optimized out>
        p = 0x228da0
#9 0x0007ae54 in ap_setup_prelinked_modules (process=0x226e28) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/config.c:808
        m = 0x206ce8 <ap_prelinked_modules>
        m2 = <optimized out>
        error = <optimized out>
#10 0x001ac3d8 in main (argc=<optimized out>, argv=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/main.c:513
        c = 44 ','
        showcompile = 0
        showdirectives = 0
        confname = 0x1adb90 "conf/httpd.conf"
        def_server_root = 0x1adb30 "/install/httpd/2.4.x/2.4.34"
        temp_error_log = 0x0
        error = 0x56400 <register_tm_clones+52> "\222"
        process = 0x226e28
        pconf = 0x228da0
        plog = 0xfeac2324 <atexit+128>
        ptemp = 0xfee60140
        pcommands = 0x24ae28
        opt = 0xffbffb28
        rv = <optimized out>
        mod = <optimized out>
        opt_arg = 0x226d98 ""
        signal_server = 0xfed85bdc <apr_array_make>
        rc = 0

The builds on Linux against trunk using module sets all and reallyall andonly with MPM prefork crash during the test suite. I only checked three cores on RHEL 7 and they showed that during some wait, just_die is getting called and in apr_allocator_destroy there's a double free:

#0 0x00007fa38a201989 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007fa38a203098 in __GI_abort () at abort.c:90
#2 0x00007fa38a242197 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fa38a34ab88 "*** Error in `%s': %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:196
#3 0x00007fa38a24956d in malloc_printerr (ptr=<optimized out>, str=0x7fa38a34ac60 "double free or corruption (!prev)", action=3) at malloc.c:4972 #4 _int_free (av=0x7fa38a586760 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:3804 #5 0x00007fa38c283cfd in apr_allocator_destroy (allocator=0x27e9e70) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:202 #6 0x00007fa38c2846ee in apr_pool_destroy (pool=<optimized out>) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:1058 #7 0x00007fa38901e313 in clean_child_exit (code=code@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:227 #8 0x00007fa38901e34b in just_die (sig=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:355
#9  <signal handler called>
#10 0x00007fa38a2c3bd7 in semop () at ../sysdeps/unix/syscall-template.S:81
#11 0x00007fa38c282380 in proc_mutex_sysv_acquire (mutex=0x25e9260) at /sources/apr/trunk/r1835601/locks/unix/proc_mutex.c:347 #12 0x00007fa38901e7ae in accept_mutex_on () at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:241 #13 child_main (child_num_arg=child_num_arg@entry=0, child_bucket=child_bucket@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:521 #14 0x00007fa38901ebe2 in make_child (s=0x255d0f0, slot=slot@entry=0, bucket=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:716 #15 0x00007fa38901ec56 in startup_children (number_to_start=2) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:735 #16 0x00007fa38901f5cb in prefork_run (_pconf=<optimized out>, plog=0x2588d38, s=0x255d0f0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:901 #17 0x000000000048a68e in ap_run_mpm (pconf=0x2517148, plog=0x2588d38, s=0x255d0f0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm_common.c:94 #18 0x000000000048365b in main (argc=11, argv=0x7fff59c0dc18) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/main.c:819


#0 0x00007fa38a201989 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007fa38a203098 in __GI_abort () at abort.c:90
#2 0x00007fa38a242197 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fa38a34ab88 "*** Error in `%s': %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:196
#3 0x00007fa38a24956d in malloc_printerr (ptr=<optimized out>, str=0x7fa38a34ac60 "double free or corruption (!prev)", action=3) at malloc.c:4972 #4 _int_free (av=0x7fa38a586760 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:3804 #5 0x00007fa38c283cfd in apr_allocator_destroy (allocator=0x27e9e70) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:202 #6 0x00007fa38c2846ee in apr_pool_destroy (pool=<optimized out>) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:1058 #7 0x00007fa38901e313 in clean_child_exit (code=code@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:227 #8 0x00007fa38901e34b in just_die (sig=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:355
#9  <signal handler called>
#10 0x00007fa38a2c3bd7 in semop () at ../sysdeps/unix/syscall-template.S:81
#11 0x00007fa38c282380 in proc_mutex_sysv_acquire (mutex=0x25e9260) at /sources/apr/trunk/r1835601/locks/unix/proc_mutex.c:347 #12 0x00007fa38901e7ae in accept_mutex_on () at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:241 #13 child_main (child_num_arg=child_num_arg@entry=1, child_bucket=child_bucket@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:521 #14 0x00007fa38901ebe2 in make_child (s=0x255d0f0, slot=slot@entry=1, bucket=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:716 #15 0x00007fa38901ec56 in startup_children (number_to_start=1) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:735 #16 0x00007fa38901f5cb in prefork_run (_pconf=<optimized out>, plog=0x2588d38, s=0x255d0f0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:901 #17 0x000000000048a68e in ap_run_mpm (pconf=0x2517148, plog=0x2588d38, s=0x255d0f0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm_common.c:94 #18 0x000000000048365b in main (argc=11, argv=0x7fff59c0dc18) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/main.c:819


#0 0x00007fa38a201989 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007fa38a203098 in __GI_abort () at abort.c:90
#2 0x00007fa38a242197 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fa38a34ab88 "*** Error in `%s': %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:196
#3 0x00007fa38a24956d in malloc_printerr (ptr=<optimized out>, str=0x7fa38a34ac60 "double free or corruption (!prev)", action=3) at malloc.c:4972 #4 _int_free (av=0x7fa38a586760 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:3804 #5 0x00007fa38c283cfd in apr_allocator_destroy (allocator=0x27e9e70) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:202 #6 0x00007fa38c2846ee in apr_pool_destroy (pool=<optimized out>) at /sources/apr/trunk/r1835601/memory/unix/apr_pools.c:1058 #7 0x00007fa38901e313 in clean_child_exit (code=code@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:227 #8 0x00007fa38901e34b in just_die (sig=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:355
#9  <signal handler called>
#10 0x00007fa38a2c29b3 in epoll_wait () at ../sysdeps/unix/syscall-template.S:81 #11 0x00007fa38c28b409 in impl_pollset_poll (pollset=0x2821e60, timeout=<optimized out>, num=0x7fff59c0d86c, descriptors=0x7fff59c0d8a8)
    at /sources/apr/trunk/r1835601/poll/unix/epoll.c:267
#12 0x00007fa38901e89e in child_main (child_num_arg=child_num_arg@entry=2, child_bucket=child_bucket@entry=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:546 #13 0x00007fa38901ebe2 in make_child (s=0x255d0f0, slot=2, bucket=0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:716 #14 0x00007fa38901f9e4 in perform_idle_server_maintenance (p=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:824 #15 prefork_run (_pconf=<optimized out>, plog=<optimized out>, s=<optimized out>) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm/prefork/prefork.c:1019 #16 0x000000000048a68e in ap_run_mpm (pconf=0x2517148, plog=0x2588d38, s=0x255d0f0) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/mpm_common.c:94 #17 0x000000000048365b in main (argc=11, argv=0x7fff59c0dc18) at /sources/httpd/2.4.x/2.4.34/httpd-2.4.34/server/main.c:819






- compiler warnings:

  - modules/core/mod_watchdog.c:436: warning: 'rv' may be used
    uninitialized in this function
  -> only on SLES 11, warning is correct but not critical (debug log);
     not a regression

  and only on Solaris (gcc 8.1.0)

  - srclib/apr-util/xlate/xlate.c:120:38: warning: passing argument 2 of
    'iconv' from incompatible pointer type
    [-Wincompatible-pointer-types]

  - srclib/apr-util/xlate/xlate.c:343:42: warning: passing argument 2 of
    'iconv' from incompatible pointer type
    [-Wincompatible-pointer-types]

- for libaprutil-1.so "symbol XXX: relocation bound to a symbol with STV_PROTECTED visibility" with XXX:
    - apr_bucket_type_eos
    - apr_bucket_type_file
    - apr_bucket_type_flush
    - apr_bucket_type_heap
    - apr_bucket_type_immortal
    - apr_bucket_type_mmap
    - apr_bucket_type_pipe
    - apr_bucket_type_pool
    - apr_bucket_type_socket
    - apr_bucket_type_transient
    - apr_hook_debug_current
    - apr_hook_debug_enabled
    - apr_hook_global_pool

Tested for

- Solaris 10, SLES 11+12, RHEL 6+7
- MPMs prefork, worker, event
  - prefork skipped on Solaris due to the accept lock problem that
    leads to timeouts and thus excessive testing times in the proxy
- default, shared and static module builds
- log level trace8
- module sets reallyall, all, most, few, none and default
  - for "reallyall" 128 modules plus MPMs, less for other module sets
- in total 1176 combinations

- module set "none" always fails due to "User" directive in default
  config not supported (no mod_unixd)
  AH00526: Syntax error on line 30 of .../t/conf/httpd.conf:
  Invalid command 'User'
  not a regression

The following test failures were seen:

a t/ab/base.t tests 4 and 5 fail for module set "few"
  These are the ssl tests and "few" does not include mod_ssl.
  It seems the check for "is ssl available" in the test file
  does not really work. So this is a test design error.

b Test 59 of t/modules/include.t only and always on
  Solaris.
  Not a regression
  Old analysis was:
  This is due to a bug in the test, which uses strftime()
  with a "%s" pattern that is not supported on Solaris.
  Until recently the server and the test client both returned
  verbatim "%s" and the test succeeded. After updating some
  Perl modules for the http2 tests, the perl client even
  on Solaris now supports "%s" in strftime and the test starts
  to fail. It seems we have to fix the test.

c Various tests in t/apache/expr_string.t
  Not a regression.
  Test numbers : 11, 14, 17, 20, 23
  Happens for 12 out of about 1100 runs (this time always on RHEL6).
  The failure is always on line 87, where the error_log contents
  are checked.

d Test 5 in t/modules/dav.t:
  Only once, this time on Solaris.
  Creation, modified and now times not in the correct order.
  This seems to be a system issue, all tests done on NFS,
  many tested on virtualized guests.
  Not a regression.

e I expect prefork on Solaris still to observe timeouts during
  proxy tests like reported for previous versions, but didn't test
  it this time due to the long test runs when the problem happens.
  I started these runs right now just to be able to report,
  whether the old problem is still there or has changed.

So no show stoppers seen here.

Regards,

Rainer

Reply via email to