Subject: Minimal emacs build runs out of memory

From: Reuben Thomas <[email-masked]>
Date: Tue, 20 Sep 2011 11:18:32 +0100

Amusingly, as I have no problem with a normal build of Emacs 24 on the
same machine.

Emacs bzr main branch, configured as:

./configure --prefix=/home/repo/emacs-minimal/installed --without-pop
--without-sound --without-sync-input --with-x-toolkit=no --without-xpm
--without-jpeg --without-tiff --without-gif --without-png
--without-rsvg --without-xml2 --without-imagemagick --without-xft
--without-libotf --without-m17n-flt --without-toolkit-scroll-bars
--without-xaw3d --without-xim --without-gpm --without-dbus
--without-gconf --without-gsettings --without-selinux --without-gnutls
--without-makeinfo --without-compress-info --without-x

Building on a machine with 2Gb RAM and ~3Gb swap, my build ends:

../lib-src/make-docfile -d /home/rrt/repo/emacs-minimal/src dosfns.o
msdos.o xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o
image.o fontset.o dbusbind.o nsterm.o nsfns.o nsmenu.o nsselect.o
nsimage.o nsfont.o w32.o w32console.o w32fns.o w32heap.o w32inevt.o
w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o
w16select.o widget.o xfont.o ftfont.o xftfont.o ftxfont.o gtkutil.o
xsettings.o xgselect.o termcap.o dispnew.o frame.o scroll.o xdisp.o
menu.o  window.o charset.o coding.o category.o ccl.o character.o
chartab.o bidi.o cm.o term.o terminal.o xfaces.o    emacs.o keyboard.o
macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o
minibuf.o fileio.o dired.o cmds.o casetab.o casefiddle.o indent.o
search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o
eval.o floatfns.o fns.o font.o print.o lread.o syntax.o unexelf.o
bytecode.o process.o gnutls.o callproc.o region-cache.o sound.o
atimer.o doprnt.o intervals.o textprop.o composite.o xml.o       >
../etc/DOC
../lib-src/make-docfile -a ../etc/DOC -d
/home/rrt/repo/emacs-minimal/src/../lisp `sed -n -e 's| \\\\||' -e
's|^[ 	]*$(lispsource)/||p' /home/rrt/repo/emacs-minimal/src/lisp.mk`
if test "no" = "yes"; then \
	  ln -f temacs emacs; \
	  EMACSLOADPATH=/home/rrt/repo/emacs-minimal/src/../lisp ./emacs -batch \
	    -f list-load-path-shadows || true; \
	else \
	  LC_ALL=C `/bin/pwd`/temacs -batch -l loadup dump || exit 1; \
	  ln -f emacs bootstrap-emacs; \
	  ./emacs -batch -f list-load-path-shadows || true; \
	fi
Bus error (core dumped)
make[1]: *** [emacs] Error 1
make[1]: Leaving directory `/home/rrt/repo/emacs-minimal/src'
make: *** [src] Error 2

On looking at the resultant 2Gb core dump, I see:

Core was generated by `/home/rrt/repo/emacs-minimal/src/temacs -batch
-l loadup dump'.
Program terminated with signal 7, Bus error.
#0  0x4007a32c in __pthread_mutex_lock (mutex=0x83871c8) at
pthread_mutex_lock.c:47
47	pthread_mutex_lock.c: No such file or directory.
	in pthread_mutex_lock.c
(gdb) where
#0  0x4007a32c in __pthread_mutex_lock (mutex=0x83871c8) at
pthread_mutex_lock.c:47
#1  0x08120823 in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1260
#2  0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#3  0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#4  0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#5  0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#6  0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#7  0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#8  0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#9  0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#10 0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#11 0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#12 0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#13 0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
#14 0x401220d0 in __libc_malloc (bytes=16384) at malloc.c:3622
#15 0x0812082e in emacs_blocked_malloc (size=16384, ptr=0x812082e) at
alloc.c:1269
...
and the stack seems to have eaten much if not most of the memory, as
it goes on the same way up to at least 320,000 (at which point I got
bored of holding down RETURN to produce more backtrace).

-- 
http://rrt.sc3d.org