[peruser] interesting peruser problem

Severn solar.inversion at gmail.com
Tue Apr 4 14:24:38 MDT 2006


I've been poking at it some more... I did make some mistakes in the config I
posted before.

-KeepAlive is now Off
-In the vhost, Processor is now ServerEnvironment (this caused the senv
segfault)
-Typoed the IPs while editing it (though it was right in my actual config)

It doesn't segfault at the senv enymore.. instead it does this--

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 182919131456 (LWP 22254)]
apr_os_sock_put (sock=0x7fbfffe038, thesock=0x7fbfffe044, cont=0x5bd138)
    at sockets.c:383
383         (*sock)->local_port_unknown = (*sock)->local_interface_unknown =
1;
(gdb) bt full
#0  apr_os_sock_put (sock=0x7fbfffe038, thesock=0x7fbfffe044, cont=0x5bd138)
    at sockets.c:383
No locals.
#1  0x000000000045d41d in child_main (child_num_arg=Variable "child_num_arg"
is not available.
) at peruser.c:1566
        ptrans = (apr_pool_t *) 0x6913f8
        allocator = (apr_allocator_t *) 0x685230
        status = Variable "status" is not available.
(gdb) list
1566        apr_os_sock_put((void*)&pod_sock, &fd, pconf);
1567        listen_add(pconf, pod_sock, check_pipe_of_death);
1568
1569        (peruser_setup_child(my_child_num) &&
clean_child_exit(APEXIT_CHILDFATAL));
1570        ap_run_child_init(pchild, ap_server_conf);
1571
1572        ap_create_sb_handle(&sbh, pchild, my_child_num, 0);
1573        (void) ap_update_child_status(sbh, SERVER_READY, (request_rec *)
NULL);
1574
1575        /* Set up the pollfd array */
(gdb) print pod_sock
No symbol "pod_sock" in current context.
(gdb) list apr_os_sock_put
368         return APR_SUCCESS;
369     }
370
371     apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t
*thesock,
372                                apr_pool_t *cont)
373     {
374         /* XXX Bogus assumption that *sock points at anything legit */
375         if ((*sock) == NULL) {
376             alloc_socket(sock, cont);
377             /* XXX IPv6 figure out the family here! */
(gdb) print sock
$1 = (apr_socket_t **) 0x7fbfffe038
(gdb) print *sock
$2 = (apr_socket_t *) 0x14
(gdb) print **sock
Cannot access memory at address 0x14

--

If I enable MPM_PERUSER_DEBUG however, *sock is 0x0 and everything seems to
work fine... (how the heck does turning on debug affect pointers?)

-Severn

On 4/2/06, Stefan Seufert <stefan at seuf.de> wrote:
>
> I've been able to attach a debugger and thus have been able to locate
> the cause of the crash:
>
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread -1208174912 (LWP 11331)]
> > 0x0809cffa in peruser_post_read (r=0x8bc9c30) at peruser.c:2566
> > 2566            processor =
> &CHILD_INFO_TABLE[sconf->senv->processor_id];
> > (gdb) bt full
> > #0  0x0809cffa in peruser_post_read (r=0x8bc9c30) at peruser.c:2566
> >         sconf = (peruser_server_conf *) 0x8bb9628
> >         processor = Variable "processor" is not available.
> > (gdb) list
> > 2566            processor =
> &CHILD_INFO_TABLE[sconf->senv->processor_id];
> > 2567        else
> > 2568            processor = &CHILD_INFO_TABLE[r->connection->id];
> > 2569
> > 2570
> > 2571        if (!strlen(r->the_request))
> > 2572        {
> > 2573            _DBG("corrupt request. aborting",0);
> > 2574            return DECLINED;
> > 2575        }
> > (gdb) print sconf
> > $1 = (peruser_server_conf *) 0x8bb9628
> > (gdb) print sconf->senv
> > $2 = (server_env_t *) 0x0
> > (gdb)
>
> It looks like sconf->senv isn't set. The ->processor_id access then
> causes the segfault. So the next question is: Why is it empty? Maybe
> just a configuration problem we haven't covered? Sean, any ideas?
>
> Stefan
> _______________________________________________
> Peruser mailing list
> Peruser at telana.com
> http://www.telana.com/mailman/listinfo/peruser
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.telana.com/pipermail/peruser/attachments/20060404/339d1096/attachment-0003.html


More information about the Peruser mailing list