GNU bug report logs - #48578
28.0.50; Native-compiled files of some preloaded files not loaded at dump time

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Sat, 22 May 2021 07:21:01 UTC

Severity: normal

Found in version 28.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #23 received at 48578 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Andrea Corallo <akrl <at> sdf.org>
Cc: 48578 <at> debbugs.gnu.org
Subject: Re: bug#48578: 28.0.50; Native-compiled files of some preloaded
 files not loaded at dump time
Date: Mon, 24 May 2021 19:22:12 +0300
> From: Andrea Corallo <akrl <at> sdf.org>
> Cc: 48578 <at> debbugs.gnu.org
> Date: Mon, 24 May 2021 08:48:39 +0000
> 
> > Suggestions for where to look for the reasons of the problem?
> 
> I'd start verifying what given the el source file
> `comp-el-to-eln-rel-filename' suggests as eln filename and if this is
> present as native compiled file (I guess so if you recompiled manually).
> 
> The next step would be verifying why when loading in lread.c
> 'maybe_swap_for_eln' does not decide to load the eln file in place of
> the elc one.

Thanks.  The problem is in comp-el-to-eln-rel-filename, in this
fragment at its beginning:

  /* Use `file-truename' or fall back to `expand-file-name' when the
     first is not available (bug#44701).

     `file-truename' is not available only for a short phases of the
     bootstrap before file.el is loaded, given we do not symlink
     inside the build directory this should work.  */
  filename = NILP (Ffboundp (intern_c_string ("file-truename")))
    ? Fexpand_file_name (filename, Qnil)
    : CALL1I (file-truename, filename);

During loadup, file-truename is not available until files.elc/eln is
loaded.  But the assumption above that it isn't a problem because "we
do not symlink inside the build directory" in false in my case,
because my home directory, where I build Emacs, is itself a symlink:

  (expand-file-name "~") => "/home/e/eliz"
  (file-truename "~") => "/srv/data/home/e/eliz"

So every one of the *.eln files loaded before and including files.elc
will fail in the above logic and will produce a different path_hash,
thus failing the attempt to find the correct .eln file.

We could use 'realpath' (and a suitable emulation on WINDOWSNT)
instead of file-truename.




This bug report was last modified 3 years and 355 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.