[Ecls-list] RC 14.4.1 almost ready

Matthew Mondor mm_lists at pulsar-zone.net
Sat Apr 13 19:07:38 UTC 2013

On Sat, 13 Apr 2013 20:06:45 +0200
Juan Jose Garcia-Ripoll <juanjose.garciaripoll at gmail.com> wrote:

> On Sat, Apr 13, 2013 at 7:44 PM, Matthew Mondor <mm_lists at pulsar-zone.net>wrote:
> > ;;; Loading #P"/usr/local/ecl/lib/ecl-13.4.1/profile.fas"
> > ;;
> > ;; Error while loading
> > /home/mmondor/.slime/fasl/2012-11-08/ecl-13.4.1-173fb92e-unix-x86_64/swank-ecl.fas:
> > ;;   LOAD: Could not load file
> > #P"/usr/local/ecl/lib/ecl-13.4.1/profile.fas" (Error: "mmap of entire
> > address space failed: Permission denied")
> > ;; Aborting.
> >
> Did you clean old files? ECL should not be using mmap any more.

Yes I deleted completely both /usr/local/ecl/ and ~/.slime/fasl/

Hmm I'll have to do some more tests I guess.  It's possible that my git
tree isn't properly in sync with yours, although "git pull" reports
that it's up to date.

In the c/ directory, there are very few existing references to mmap,
and these do not appear to be related to the loading code:

c/Makefile.in:  ffi/libraries.o ffi/backtrace.o ffi/mmap.o ffi/cdata.o \
c/alloc.d:#define USE_MMAP
c/alloc.d:#if defined(USE_MMAP)
c/alloc.d:#if defined(USE_MMAP)
c/alloc.d:              result = mmap(0x2E000000, bytes, PROT_READ | PROT_WRITE,
c/alloc.d:              result = mmap(data_end, bytes, PROT_READ | PROT_WRITE,
c/alloc.d:#ifdef USE_MMAP
c/alloc.d:#endif /* USE_MMAP, MSDOS, or HAVE_ULIMIT */
c/alloc.d:#ifdef USE_MMAP
c/alloc_2.d:    /* When not using threads, "env" is mmaped or statically allocated. */
c/ffi/cdata.d:        map = si_mmap(3, filename, @':direction', @':input');
c/ffi/cdata.d:        array = si_mmap_array(map);
c/ffi/mmap.d:    mmap.d -- Mapping of binary files.
c/ffi/mmap.d:@(defun ext::mmap (filename
c/ffi/mmap.d:        pa = mmap(0, len, c_prot, c_flags, fd,
c/ffi/mmap.d:                FElibc_error("EXT::MMAP failed.", 0);
c/ffi/mmap.d:si_mmap_array(cl_object map)
c/main.d:        * allocated using mmap or some other method. We could do more, cleaning
c/main.d:        * the environment using mmap or the garbage collector.
c/main.d:       output = mmap(0, sizeof(*output), PROT_READ | PROT_WRITE,
c/symbols_list.h:{EXT_ "MMAP", EXT_ORDINARY, si_mmap, -1, OBJNULL},
c/symbols_list.h:{EXT_ "MMAP-ARRAY", EXT_ORDINARY, si_mmap_array, 1, OBJNULL},
c/symbols_list2.h:{EXT_ "MMAP","si_mmap"},
c/symbols_list2.h:{EXT_ "MMAP-ARRAY","si_mmap_array"},
c/unixint.d:#  error "We cannot use the mmap code without siginfo"

And there are no more references to mmap in lsp/

I'll report again after I have the opportunity to test using a newly
freshly synchronized repository.  It's also possible that it's the OS
that fails to mmap a potentially malformed ELF object that it attempts
to dynamically load, but it's less likely, especially if ECL no longer
tempers with the final objects.

More information about the ecl-devel mailing list