Summary: | Random core dumps in crc32 and bndm | ||
---|---|---|---|
Product: | Apache httpd-2 | Reporter: | Paul Lindner <lindner> |
Component: | All | Assignee: | Apache HTTPD Bugs Mailing List <bugs> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | 2.2.2 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux |
Description
Paul Lindner
2006-06-06 19:30:05 UTC
This is on x86_64? --enable-nonportable-atomics shouldn't make a difference on that platform. What compiler flags did you use? Does this go away if use prefork rather than worker? You are sure that these segfaults are happening *only* in those two functions? Some things to try: - reconfigure and rebuild passing CFLAGS="-g -O0" to configure; makes debugging more reliable, might rule out compiler issues - try prefork - try a fresh build with --enable-pool-debug Thanks for the response. We don't use prefork since worker has done so well for us over the years, and I'd like to avoid increasing the memory footprint on these servers. So far all the cores die in these two functions. We get about 10-12 hits on this per day. CFLAGS is set to -g, (verified by checking config.status) Our original build used CFLAGS set by rpmbuild, which was more aggressive. We can certainly try -O0, but it seems to me that this is a memory corruption bug, not a gcc 4.1 error. What do I look for when adding --enable-pool-debug ? Log messages? Here's the exact build recipe we use for Apache 2.2.2, pretty straightforward: CFLAGS := -g ..... httpd-2.2.2: test -f $@.tar.bz2 || wget -c http://archive.apache.org/dist/httpd/$@.tar.bz2 tar xjf $@.tar.bz2 cd $@; env CFLAGS="$(CFLAGS)" ./configure \ --enable-nonportable-atomics --enable-access \ --enable-actions --enable-alias \ --enable-asis --enable-auth \ --disable-autoindex --disable-cgi \ --disable-cgid --enable-auth-digest\ --disable-dav --disable-dav-fs\ --enable-deflate --enable-dir\ --enable-env --enable-headers\ --disable-imap --enable-include \ --enable-log-config --enable-logio\ --enable-log-forensic --enable-mime \ --enable-negotiation --enable-proxy \ --enable-proxy-http --enable-rewrite \ --enable-setenvif --enable-status \ --disable-suexec --disable-userdir\ --disable-vhost-alias --enable-ssl=static \ --enable-so --enable-cache\ --enable-file-cache --enable-disk-cache\ --enable-mem-cache --enable-expires\ --enable-exception-hook --with-mpm=worker \ --prefix=$(INSTDIR)\ --with-berkeley-db \ --with-dbm=db4\ --with-program-name=httpd2 cd $@; make cd $@; make install I mention -O0 not only to help eliminate compiler optimisation issues but also to make the core dumps easier to debug. If you build with --enable-pool-debug you can then run with export MALLOC_CHECK_=2 to get glibc to use a more paranoid malloc - this is often useful for tracking down memory corruption issues. |