Ignore what I said in the earlier email about "mpm_prefork", I wasnt
using it. Sorry.

It still crashes after a few requests. This is the backtrace from
apache build with -O0 and -ggdb.

# gdb --args httpd2 -X
(gdb) run
Starting program: /usr/local/sbin/httpd2 -X
...
Program received signal SIGSEGV, Segmentation fault.
0x000018a9b2875638 in ap_mpm_pod_check (pod=0x0) at mpm_unix.c:459
459         rv = apr_file_read(pod->pod_in, &c, &len);
(gdb) bt full
#0  0x000018a9b2875638 in ap_mpm_pod_check (pod=0x0) at mpm_unix.c:459
        c = -1 '▒'
        len = 1
        rv = 2
#1  0x000018ac9892d3bb in child_main (child_num_arg=0, child_bucket=0)
at prefork.c:732
        current_conn = (conn_rec *) 0x18abbed08f00
        csd = (void *) 0x18abb4508000
        thd = (apr_thread_t *) 0x18ac9e058b40
        osthd = 0x18abeee85920
        ptrans = (apr_pool_t *) 0x18abc3acce00
        allocator = (apr_allocator_t *) 0x18abe0001700
        status = 0
        i = -1
        lr = (ap_listen_rec *) 0x18abfdd7be00
        pollset = (apr_pollset_t *) 0x18abb4509e00
        sbh = (ap_sb_handle_t *) 0x18abed2a6e40
        bucket_alloc = (apr_bucket_alloc_t *) 0x18ac537a7028
        last_poll_idx = 1
        lockfile = 0x7f7ffffd4d20 "▒▒▒▒"
#2  0x000018ac9892d4d5 in make_child (s=0x18ac45b90d00, slot=0,
bucket=0) at prefork.c:767
        pid = 1
#3  0x000018ac9892dc2d in prefork_run (_pconf=0x18abc7307d00,
plog=0x18abc7307700, s=0x18ac45b90d00) at prefork.c:979
        index = 6316
        remaining_children_to_start = 2134903585
        i = 6315
#4  0x000018a9b283a8b7 in ap_run_mpm (pconf=0x18abc7307d00,
plog=0x18abc7307700, s=0x18ac45b90d00) at mpm_common.c:94
        pHook = (ap_LINK_mpm_t *) 0x18abd5664000
        n = 0
        rv = -1
#5  0x000018a9b28324a3 in main (argc=2, argv=0x7f7ffffd5158) at main.c:777
        c = 88 'X'
        showcompile = 0
        showdirectives = 0
        confname = 0x18a9b299083b "/etc/apache2/httpd2.conf"
        def_server_root = 0x18a9b2990854 "/var/www"
        temp_error_log = 0x0
        error = 0x0
        process = (process_rec *) 0x18ac9cb312c0
        pconf = (apr_pool_t *) 0x18abc7307d00
        plog = (apr_pool_t *) 0x18abc7307700
        ptemp = (apr_pool_t *) 0x18abbb0bb800
        pcommands = (apr_pool_t *) 0x18ac5cf89500
        opt = (apr_getopt_t *) 0x18ac48aed600
        rv = 0
        mod = (module **) 0x18a9b2cac518
        opt_arg = 0x0
        signal_server = (apr_OFN_ap_signal_server_t *) 0x18a9b2875ee5
<ap_signal_server>



On Sat, Jan 16, 2016 at 7:28 PM, Michael McConville <mm...@mykolab.com> wrote:
> Pedro de Oliveira wrote:
>> Following your tips I built Apache with -O0 and the segfaults in
>> "mpm_prefork" no longer happen. Maybe its a gcc optimization issue. I
>> dont know which -O OpenBSD uses by default, but I will try it also
>> with -O1 and report back.
>
> Remember, compiler optimizations can worsen the impact of undefined
> behavior. That seems more likely than a compiler bug to me.

Reply via email to