Subject: bug#11649: 24.1.50; Some compilation woes

From: Stefan Monnier <[email-masked]>
Date: Sat, 09 Jun 2012 21:08:41 -0400

> By contrast, on MS-Windows, all of the Lisp files are compiled with
> the bootstrapped Emacs executable, so they all are compiled with the
> interpreted byte compiler.

Ahh... that could explain this high stack use.  That should also impose
a fairly high impact on compilation speed.

>> In toplevel form:
>> textmodes/rst.el:120:1:Error: Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
>> Checking c:/emacs/trunk/lisp/url...
>> Checking c:/emacs/trunk/lisp/vc...
>> Compiling c:emacs/repo/lisp/vc/pcvs.el...
>> Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>> Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>> etc
> I confirm these.  They also happen on GNU/Linux.  My interpretation of
> this is that some of the files compiled by bootstrap-emacs produce
> invalid .elc files (e.g., cl-macs.elc, cl-lib.elc, and pvcs-util.elc),
> because once they are compiled by the non-bootstrap Emacs executable,
> the errors go away.  Stefan, can you please look into this?

Usually "Invalid byte code in <foo>" happens because <foo> is
byte-compile-dynamic (as is the case for cl-macs) and you try to call
a function from it after byte-compiling a new version of the file.
More specifically, the scenario is:
1- load cl-macs.elc.
2- don't call function <bla>.
3- change cl-macs.elc.
4- call <bla> which is dynamically loaded from cl-macs.elc.
5- now the offset loaded at point 1 is not valid any more, so you get an
   error: you need to re-load cl-macs.elc.
If the above cannot be explained by this scenario, we apparently have
a serious new bug.

        Stefan