This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Emacs dired problem triggered by NPTL-enabled glibc


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]