>>>> "drv" == Didier Verna
<didier(a)xemacs.org> writes:
drv> Stephen J. Turnbull wrote:
> Our dlmalloc code is alleged broken (by
> Wolfram.Gloger(a)malloc.de), specifically the use of mmap, and
> I've seen breakage for glibc > 2.2.5. Try --pdump and/or
> --with-system-malloc for some relief, but I don't think they
> actually are fixes. I don't know why pdump helps, but
> --with-system-malloc basically has the effect of bumping the
> mmap threshold to 1MB, and XEmacs rarely mallocs that much at
> once, we prefer to do it a cons at a time (but they're big
> conses ;-).
drv> Actually, I've tried several combinations but with no
drv> luck. I smell a GCPRO bug but I'm a bit at a loss as far as
drv> tracking it down.
OK, (1) I see you've got glibc 2.2.4, so you are not a victim of the
2.3 changes. 21.5 always built fine for me with glibc <= 2.2.5.
(2) Have you tried turning mmap off? This is how Gloger did it in
21.4. Cf the thread anchored at
<a
href="http://list-archive.xemacs.org/xemacs-beta/200211/msg00065.htm...
87d6pl5sw9.fsf(a)tleepslib.sk.tsukuba.ac.jp
</a>
subject "XEmacs 21.4.10 crashes with glibc 2.3.1."
--- src/alloc.c.orig Mon Dec 17 06:49:22 2001
+++ src/alloc.c Thu Nov 7 00:27:31 2002
@@ -3882,8 +3890,8 @@
#ifdef DOUG_LEA_MALLOC
mallopt (M_TRIM_THRESHOLD, 128*1024); /* trim threshold */
mallopt (M_MMAP_THRESHOLD, 64*1024); /* mmap threshold */
-#if 0 /* Moved to emacs.c */
- mallopt (M_MMAP_MAX, 64); /* max. number of mmap'ed areas */
+#if 1 /* Moved to emacs.c */
+ mallopt (M_MMAP_MAX, 0); /* max. number of mmap'ed areas */
#endif
#endif
init_string_alloc ();
--- src/emacs.c.orig Thu Oct 31 16:07:36 2002
+++ src/emacs.c Thu Nov 7 00:25:47 2002
@@ -2713,7 +2713,8 @@
if (!initialized)
{
#ifdef DOUG_LEA_MALLOC
- mallopt (M_MMAP_MAX, 0);
+ if (mallopt (M_MMAP_MAX, 0) != 1)
+ abort();
#endif
run_temacs_argc = 0;
if (! SETJMP (run_temacs_catch))
@@ -2770,7 +2771,8 @@
defined(_NO_MALLOC_WARNING_) || \
(defined(__GLIBC__) && __GLIBC_MINOR__ < 1 && !defined(MULE)) ||
\
defined(DEBUG_DOUG_LEA_MALLOC)
- mallopt (M_MMAP_MAX, 64);
+ if(mallopt (M_MMAP_MAX, 0) != 1)
+ abort();
#endif
#ifdef REL_ALLOC
r_alloc_reinit ();
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.