httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 15655] New: - mod_perl 1.99_07 "make test" causes Apache2 threadpool mpm core dump
Date Tue, 24 Dec 2002 18:20:06 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15655>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15655

mod_perl 1.99_07 "make test" causes Apache2 threadpool mpm core dump

           Summary: mod_perl 1.99_07 "make test" causes Apache2 threadpool
                    mpm core dump
           Product: APR
           Version: HEAD
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: Critical
          Priority: Other
         Component: APR
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: karlheg@hegbloom.net


When I run "make test" after building mod_perl 1.99_07, Apache2 mpm threadpool
dumps core.  I rebuilt Apache2 from the Debian sources, with "-g -O0" and not
stripped (patch to support DEB_BUILD_OPTIONS for "debug,nostrip" submitted
against Debian Apache2), then ran "export LD_LIBRARY_PATH=/usr/lib/debug" to get
the debug libc and libpthread involved.  I then removed the core file, and ran
"make test" again.  I found that it's probably trying to free memory that has
already been freed.  Here's the output of "where full":

(gdb) where full
#0  _int_free (av=0x40347480, mem=0x9e5f248) at malloc.c:4150
	p = (struct malloc_chunk *) 0xa01a668
	size = 0x9e5f248
	fb = (struct malloc_chunk **) 0x9e5f248
	nextchunk = (struct malloc_chunk *) 0x13e798b0
	nextsize = 0x40011850
	prevsize = 0x9e5f248
	bck = (struct malloc_chunk *) 0x9e5f248
	fwd = (struct malloc_chunk *) 0x0
#1  0x402a1e6a in __libc_free (mem=0xa01a670) at malloc.c:3344
	ar_ptr = (struct malloc_state *) 0x40347480
	p = (struct malloc_chunk *) 0x9e5f248
	hook = (void (*)(void *, const void *)) 0x9e5f248
#2  0x4017dd3b in apr_allocator_destroy (allocator=0xa064120)
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/srclib/apr/memory/unix/apr_pools.c:138
	index = 0x0
	node = (apr_memnode_t *) 0xa01a670
	ref = (apr_memnode_t **) 0xa064134
#3  0x40128dd4 in alloc_cleanup (data=0xa18eb88)
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/srclib/apr-util/buckets/apr_buckets_alloc.c:86
	list = (apr_bucket_alloc_t *) 0xa18eb88
---Type <return> to continue, or q <return> to quit---
	allocator = (apr_allocator_t *) 0xa064120
#4  0x4017eecb in apr_pool_cleanup_run (p=0x8d2fe08, data=0xa18eb88, 
    cleanup_fn=0x40128d90 <alloc_cleanup>)
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/srclib/apr/memory/unix/apr_pools.c:1955
No locals.
#5  0x40128ec6 in apr_bucket_alloc_destroy (list=0xa18eb88)
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/srclib/apr-util/buckets/apr_buckets_alloc.c:113
No locals.
#6  0x0807f0e1 in worker_thread (thd=0x8d27fb0, dummy=0x9c755f0)
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/server/mpm/experimental/threadpool/threadpool.c:1099
	ti = (proc_info *) 0x9c755f0
	process_slot = 0x0
	thread_slot = 0x1
	bucket_alloc = (apr_bucket_alloc_t *) 0xa18eb88
	tpool = (apr_pool_t *) 0x8d2fe08
	ptrans = (apr_pool_t *) 0xa18cb80
	allocator = (apr_allocator_t *) 0xa04a710
	rv = 0x0
	wakeup = (worker_wakeup_info *) 0x8d2fe50
#7  0x4017826c in dummy_worker (opaque=0x8d27fb0)
---Type <return> to continue, or q <return> to quit---
    at
/usr/local/src/debian/apache2/apache2-2.0.43/build-tree/apache2/srclib/apr/threadproc/unix/thread.c:127
	thread = (apr_thread_t *) 0x8d27fb0
#8  0x401ee06f in pthread_start_thread (arg=0xbf1ffbe0) at manager.c:300
	self = (struct _pthread_descr_struct *) 0xbf1ffbe0
	request = {req_thread = 0x0, req_kind = REQ_CREATE, req_args = {
    create = {attr = 0x0, fn = 0, arg = 0x0, mask = {__val = {
          0x0 <repeats 32 times>}}}, free = {thread_id = 0x0}, exit = {
      code = 0x0}, post = 0x0, for_each = {fn = 0, arg = 0x0}}}
	outcome = (void *) 0x9e5f248
(gdb) 

I hope that's not horribly wrapped by this text entry box!

I will save the core file, so let me know if you need any more information. 
Source level debugging in XEmacs is fully operational, but I am not familiar
with the apache internals at all.  I can let you log in if you need to poke
around, just email me or /msg me in irc.openprojects.net, #orlug, karlheg.

ldd =apache2
	libz.so.1 => /lib/libz.so.1 (0x4002d000)
	libssl.so.0.9.6 => /usr/lib/i686/libssl.so.0.9.6 (0x4003c000)
	libcrypto.so.0.9.6 => /usr/lib/i686/libcrypto.so.0.9.6 (0x40069000)
	libaprutil.so.0 => /usr/lib/libaprutil.so.0 (0x40121000)
	libgdbm.so.1 => /usr/lib/libgdbm.so.1 (0x4013a000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x40140000)
	libapr.so.0 => /usr/lib/libapr.so.0 (0x40161000)
	libm.so.6 => /usr/lib/debug/libm.so.6 (0x40184000)
	libcrypt.so.1 => /usr/lib/debug/libcrypt.so.1 (0x401a5000)
	libnsl.so.1 => /usr/lib/debug/libnsl.so.1 (0x401d2000)
	libdl.so.2 => /usr/lib/debug/libdl.so.2 (0x401e5000)
	libpthread.so.0 => /usr/lib/debug/libpthread.so.0 (0x401e8000)
	libc.so.6 => /usr/lib/debug/libc.so.6 (0x40238000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

The libapr is built from Debian apache2 2.0.43-1 source, modified only to
provide -g -O0 -pipe in CFLAGS.  The exact configuration is stored on my machine
if you need more information.  I will keep it for several weeks, since this is
the holiday season and I expect many of you are taking some time off.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message