Emacs dired problem triggered by NPTL-enabled glibc
David Mosberger
davidm@napali.hpl.hp.com
Tue Dec 16 20:02:00 GMT 2003
On Debian/testing, I noticed that I can no longer load a directory via
dired. The root-cause of the problem appears to be that Emacs uses
setrlimit() to set RLIMIT_STACK. This limit won't be
page-size-aligned in general. As a result, whenever Emacs ends up
spawning a subprocess for an executable that uses NPTL, the subprocess
fails with an error like this:
init.c:259: __pthread_initialize_minimal_internal: Assertion `__default_stacksize % __sysconf (_SC_PAGESIZE) == 0' failed.
__default_stacksize is initialized like this:
#ifdef NEED_SEPARATE_REGISTER_STACK
__default_stacksize = MAX (limit.rlim_cur / 2, PTHREAD_STACK_MIN);
#else
__default_stacksize = MAX (limit.rlim_cur, PTHREAD_STACK_MIN);
#endif
An easy workaround is to start Emacs with LD_ASSUME_KERNEL=2.4.18.
As far as I know, there is no requirement that the RLIMIT_STACK limit
must be an integer-multiple of the page size (and certainly it doesn't
have an integer-multiple of _twice_ the page-size), so it would seem
to me that this is a bug in glibc?
--david
More information about the Libc-hacker
mailing list