Skip to content
  1. Jul 23, 2018
  2. Jul 20, 2018
  3. Jul 19, 2018
  4. Jul 18, 2018
  5. Jul 17, 2018
  6. Jul 16, 2018
  7. Jul 13, 2018
    • Yann Ylavic's avatar
      util_filter: follow up to r1835640: pending_filter_cleanup() precedence. · 93bab76a
      Yann Ylavic authored
      Register pending_filter_cleanup() as a normal cleanup (not pre_cleanup) so
      that the pending filters are still there on pool cleanup, and f->bb is set
      to NULL where needed.
      
      Then is_pending_filter() check is moved where relevant.
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835847 13f79535-47bb-0310-9956-ffa450edef68
      93bab76a
    • Yann Ylavic's avatar
      event: always favor APR_POLLSET_WAKEABLE over method/implementation. · b4f758c9
      Yann Ylavic authored
      (probably more about correctness than a real issue since systems are
      unlikely to implement more than one/their method...).
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835846 13f79535-47bb-0310-9956-ffa450edef68
      b4f758c9
    • Yann Ylavic's avatar
      event, worker: runtime pool. · 3088f2b0
      Yann Ylavic authored
      MPMs event and worker both need a dedicated pool to handle the creation of
      the threads (listener, workers) and synchronization objects (queues, pollset,
      mutexes...) in the start_threads() thread, with at least the lifetime of
      the connections they handle, and thus survive pchild destruction (notably
      in ONE_PROCCESS mode, but SIG_UNGRACEFUL is concerned too).
      
      For instance, without this fix, the below backtrace can happen in ONE_PROCCESS
      mode and a signal/^C is received (with active connections):
      
      Thread 1 "httpd" received signal SIGSEGV, Segmentation fault.
      (gdb) bt
      #0  <BOOM>
      #1  0x00007ffff7c7e016 in apr_file_write (thefile=0x0, ...)
                                                ^ NULL (cleared)
                             at file_io/unix/readwrite.c:230
      #2  0x00007ffff7c7e4a7 in apr_file_putc (ch=1 '\001', thefile=0x0)
                                                            ^ NULL (cleared)
                             at file_io/unix/readwrite.c:377
      #3  0x00007ffff7c8da4a in apr_pollset_wakeup (pollset=0x55555568b870)
                                                    ^ already destroyed by pchild
                             at poll/unix/pollset.c:224
      #4  0x00007ffff7fc16c7 in decrement_connection_count (cs_=0x7fff08000ea0)
                             at event.c:811
      #5  0x00007ffff7c83e15 in run_cleanups (cref=0x7fffe4002b78)
                             at memory/unix/apr_pools.c:2672
      #6  0x00007ffff7c82c2f in apr_pool_destroy (pool=0x7fffe4002b58)
                                                  ^ master_conn
                             at memory/unix/apr_pools.c:1007
      #7  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x7fff08000c28)
                                                  ^ ptrans
                             at memory/unix/apr_pools.c:1004
      #8  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x555555638698)
                                                  ^ pconf
                             at memory/unix/apr_pools.c:1004
      #9  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x555555636688)
                                                  ^ pglobal
                             at memory/unix/apr_pools.c:1004
      #10 0x00005555555f4709 in ap_terminate ()
                             at unixd.c:522
      #11 0x00007ffff6dbc8f1 in __run_exit_handlers (...)
                             at exit.c:108
      #12 0x00007ffff6dbc9ea in __GI_exit (status=<optimized out>)
                             at exit.c:139
      #13 0x00007ffff7fc1616 in clean_child_exit (code=0)
                             at event.c:774
                                        ^ pchild already destroyed here
      #14 0x00007ffff7fc5ae4 in child_main (child_num_arg=0, child_bucket=0)
                             at event.c:2869
      ...
      
      
      While at it, add comments about the lifetimes of MPMs pools and their objects,
      and give each pool a tag (e.g. "pchild" accordingly to other MPMs).
      
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835845 13f79535-47bb-0310-9956-ffa450edef68
      3088f2b0
  8. Jul 12, 2018