Wrong type argument: vectorp, #<INTERNAL OBJECT (XEmacs bug?)
(symbol-value-forward type 7444) 0x40198008>
xemacs exiting
Sigh, it looks like support for glibc's / "Doug Lea"'s malloc
wasn't
properly merged in XEmacs. You really want to disable mmapped chunks
_only_ for allocation of Lisp Objects, i.e. where pointers become
tagged. As a workaround, I've disabled use of mmap completely in the
patch below.
N.B. the exact same problem should/could show up with earlier glibc
releases, but maybe the allocation pattern was slightly different.
If the patch below works for you, I can try to come up with something
less drastic later.
Regards,
Wolfram.
--- 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 ();