Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

DO NOT REPLY [Bug 15655] New: - mod_perl 1.99_07 "make test" causes Apache2 threadpool mpm core dump

From: <bugzilla(at)apache.org>
Date: Tue Dec 24 2002 - 13:20:06 EST


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,

Do you need help?X

    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 }}}, 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)
Can we help you?X
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)
Do you need more help?X

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 Received on Tue Dec 24 18:18:52 2002

This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 16:44:14 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library