[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

svnserve dumps core on apr call / pool->active (pool=0x1)

From: Alexander Elgert <alexander_elgert_at_adiva.de>
Date: 2007-04-12 21:47:37 CEST

Hello,

I got a coredump from svnserve
    VERSION: subversion-1.4.3, APR 0.9.13, APR-UTIL 1.2.8
    CONFIGURE: ./configure --prefix=/usr/local

OS: CentOS release 4.4 (Final)
    original apr and subversion deinstalled with "yum remove"

How to get the core ("svnserve -d" crashes as good as):

$ svnserve -d -r y
Segmentation fault (core dumped)

The core backtrace:

$ gdb svnserve core.30177
GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host
libthread_db library "/lib/tls/libthread_db.so.1".

Core was generated by `svnserve -d -r y'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/local/lib/libsvn_repos-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_repos-1.so.0
Reading symbols from /usr/local/lib/libsvn_fs-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_fs-1.so.0
Reading symbols from /usr/local/lib/libsvn_fs_fs-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_fs_fs-1.so.0
Reading symbols from /usr/local/lib/libsvn_delta-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_delta-1.so.0
Reading symbols from /usr/local/lib/libsvn_subr-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_subr-1.so.0
Reading symbols from /usr/local/lib/libsvn_ra_svn-1.so.0...done.
Loaded symbols for /usr/local/lib/libsvn_ra_svn-1.so.0
Reading symbols from /usr/local/lib/libaprutil-1.so.0...done.
Loaded symbols for /usr/local/lib/libaprutil-1.so.0
Reading symbols from /usr/local/lib/libsqlite3.so.0...done.
Loaded symbols for /usr/local/lib/libsqlite3.so.0
Reading symbols from /usr/local/lib/libapr-1.so.0...done.
Loaded symbols for /usr/local/lib/libapr-1.so.0
Reading symbols from /lib/libuuid.so.1...done.
Loaded symbols for /lib/libuuid.so.1
Reading symbols from /usr/lib/libpq.so.3...done.
Loaded symbols for /usr/lib/libpq.so.3
Reading symbols from /usr/lib/libexpat.so.0...done.
Loaded symbols for /usr/lib/libexpat.so.0
Reading symbols from /usr/local/lib/libapr-0.so.0...done.
Loaded symbols for /usr/local/lib/libapr-0.so.0
Reading symbols from /lib/tls/librt.so.1...done.
Loaded symbols for /lib/tls/librt.so.1
Reading symbols from /lib/tls/libm.so.6...done.
Loaded symbols for /lib/tls/libm.so.6
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/tls/libpthread.so.0...done.
Loaded symbols for /lib/tls/libpthread.so.0
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /lib/tls/libc.so.6...done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /usr/local/lib/libpq.so.5...done.
Loaded symbols for /usr/local/lib/libpq.so.5
Reading symbols from /lib/libssl.so.4...done.
Loaded symbols for /lib/libssl.so.4
Reading symbols from /lib/libcrypto.so.4...done.
Loaded symbols for /lib/libcrypto.so.4
Reading symbols from /usr/lib/libkrb5.so.3...done.
Loaded symbols for /usr/lib/libkrb5.so.3
Reading symbols from /lib/libcom_err.so.2...done.
Loaded symbols for /lib/libcom_err.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/lib/libgssapi_krb5.so.2...done.
Loaded symbols for /usr/lib/libgssapi_krb5.so.2
Reading symbols from /usr/lib/libk5crypto.so.3...done.
Loaded symbols for /usr/lib/libk5crypto.so.3
#0 0x0046af5b in apr_palloc (pool=0x1, size=56) at
memory/unix/apr_pools.c:601
601 active = pool->active;
(gdb) bt
#0 0x0046af5b in apr_palloc (pool=0x1, size=56) at
memory/unix/apr_pools.c:601
#1 0x0046f60f in alloc_socket (new=0xbfe3afd0, p=0x1) at
network_io/unix/sockets.c:61
#2 0x0046f6db in apr_socket_create (new=0xbfe3afd0, ofamily=10, type=1,
protocol=161407240, cont=0x1)
    at network_io/unix/sockets.c:96
#3 0x0804b307 in main (argc=4, argv=0xbfe3b0b4) at
subversion/svnserve/main.c:553
(gdb)

----------------------------------------------------------------------------------------------
subversion/svnserve/main.c
          /* This is the most common error. It means the user started
             svnserve from a shell, and specified the --service
             argument. svnserve cannot be started, as a service, in
             this way. The --service argument is valid only valid if
             svnserve is started by the SCM. */
          if (err->apr_err ==
              APR_FROM_OS_ERROR(ERROR_FAILED_SERVICE_CONTROLLER_CONNECT))
            {
              svn_error_clear(svn_cmdline_fprintf(stderr, pool,
                  _("svnserve: The --service flag is only valid if the"
                    " process is started by the Service Control
Manager.\n")));
            }

------------------------------------------------------------------------------------------------
memory/unix/apr_pools.c

APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size)
{
    apr_memnode_t *active, *node;
    void *mem;
    apr_size_t free_index;

    size = APR_ALIGN_DEFAULT(size);
    active = pool->active; /* <--------------------This is line 601 */

    /* If the active node has enough bytes left, use it. */
    if (size < (apr_size_t)(active->endp - active->first_avail)) {
        mem = active->first_avail;
        active->first_avail += size;

        return mem;
    }
------------------------------------------------------------------------------------------------

I think the problem is the variable pool is a pointer to 0x1 and so the
method call pool->active fails.

#0 0x0046af5b in apr_palloc (pool=0x1, size=56) at
memory/unix/apr_pools.c:601
601 active = pool->active;
(gdb) bt
#0 0x0046af5b in apr_palloc (pool=0x1, size=56) at
memory/unix/apr_pools.c:601
#1 0x0046f60f in alloc_socket (new=0xbfe3afd0, p=0x1) at
network_io/unix/sockets.c:61
#2 0x0046f6db in apr_socket_create (new=0xbfe3afd0, ofamily=10, type=1,
protocol=161407240, cont=0x1) at network_io/unix/sockets.c:96
#3 0x0804b307 in main (argc=4, argv=0xbfe3b0b4) at
subversion/svnserve/main.c:553
(gdb) up
#1 0x0046f60f in alloc_socket (new=0xbfe3afd0, p=0x1) at
network_io/unix/sockets.c:61
61 *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
(gdb) up
#2 0x0046f6db in apr_socket_create (new=0xbfe3afd0, ofamily=10, type=1,
protocol=161407240, cont=0x1) at network_io/unix/sockets.c:96
96 alloc_socket(new, cont);
(gdb) up
#3 0x0804b307 in main (argc=4, argv=0xbfe3b0b4) at
subversion/svnserve/main.c:553
553 status = apr_socket_create(&sock, APR_INET6, SOCK_STREAM, pool);
(gdb) up
Initial frame selected; you cannot go up.

Greetings,
    Alexander Elgert

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Apr 13 22:25:24 2007

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.