Installworld failed on HEAD

Matthew Dillon dillon at apollo.backplane.com
Sat Apr 25 09:47:02 PDT 2009


:
:Hi all,
:
:Both kernel and world are built with buildkernel and buildworld.  New
:kernel is installed before installing the world.
:I got following error from cpdup during installworld:
:Fatal error 'Cannot allocate red zone for initial thead' at line 263
:in file /usr/src/lib/libthread_xu/thread/thr_init.c (errno = 12)
:Seems to be related to recent libthread_xu changes.
:
:Best Regards,
:sephe
:
:-- 
:Live Free or Die

     Hmm.  This is a bit of a conundrum, but one that ought to only
     effect statically-built threaded applications.  I figured I
     might as well fix the issue close to our libc major change.

     cpdup is a statically built threaded application.

     libthread_xu had a bug in it where it was trying to map the
     guard for the initial user stack using MAP_ANON instead of
     MAP_ANON|MAP_FIXED.  And now that I think about it, I should
     probably use MAP_ANON|MAP_TRYFIXED.  But either way the original
     cpdup was doing an illegal mmap() call and because there is no
     available address space beyond the stack address it passed it
     that mmap() call fails instead of returning some other region
     of memory.

     I will look into fixing cpdup... I think I can adust it so it does
     not initialize the threading system if it isn't being run with a
     threading option.

					-Matt
					Matthew Dillon 
					<dillon at backplane.com>





More information about the Bugs mailing list