* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available @ 2021-05-11 7:47 Dima Kogan 2021-05-11 8:37 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 20+ messages in thread From: Dima Kogan @ 2021-05-11 7:47 UTC (permalink / raw) To: 48342 Hi. I maintain Debian packages of bleeding-edge emacs builds: http://emacs.secretsauce.net/ Recently I enabled the native-comp flags for these packages. The results mostly work, but a user sent me a bug report whose cause I just tracked down. Some of this is probably my fault, as the packager, but there's an emacs bug here too. To tickle the bug the user needs to install the emacs-snapshot package, but NOT the emacs-snapshot-el package. This results in the .elc files being shipped, but NOT the .el files. This is a valid way to do it without the native-comp patches, and the Debian emacs packages have allowed this since forever. If you install emacs like this, this happens: $ emacs-snapshot -Q -batch -f batch-native-compile empty.el Fatal error 11: Segmentation fault The C backtrace is 6033 frames long, which can't be good. xbacktrace says this: (gdb) xbacktrace "display-warning" (0xffebcfd8) "display-warning" (0xffebd5d8) .... lots more "display-warning" "locate-file" (0xffffe498) "command-line" (0xffffe5a0) "normal-top-level" (0xffffe640) And the warning itself is: "Cannot look-up eln file as no source file was found for /usr/share/emacs/28.0.50/lisp/emacs-lisp/warnings.elc" So something somewhere wanted to throw a warning, and this warning tried to find its own sources, couldn't do it, and threw another warning. And so on. So first off, it'd be great if emacs could handle this without such a recursive failure mode. It took me a long time to figure out what's happening, and a plain-text error message on the console would have been nice. And second: how should this be packaged? Is shipping the .el files a hard requirement now? Thanks! ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 7:47 bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available Dima Kogan @ 2021-05-11 8:37 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-05-11 8:44 ` Dima Kogan 0 siblings, 1 reply; 20+ messages in thread From: Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-05-11 8:37 UTC (permalink / raw) To: Dima Kogan; +Cc: 48342 Dima Kogan <dima@secretsauce.net> writes: > Hi. I maintain Debian packages of bleeding-edge emacs builds: > > http://emacs.secretsauce.net/ > > Recently I enabled the native-comp flags for these packages. The results > mostly work, but a user sent me a bug report whose cause I just tracked > down. Some of this is probably my fault, as the packager, but there's an > emacs bug here too. > > To tickle the bug the user needs to install the emacs-snapshot package, > but NOT the emacs-snapshot-el package. This results in the .elc files > being shipped, but NOT the .el files. This is a valid way to do it > without the native-comp patches, and the Debian emacs packages have > allowed this since forever. > > If you install emacs like this, this happens: > > $ emacs-snapshot -Q -batch -f batch-native-compile empty.el > > Fatal error 11: Segmentation fault > > The C backtrace is 6033 frames long, which can't be good. xbacktrace > says this: > > (gdb) xbacktrace > "display-warning" (0xffebcfd8) > "display-warning" (0xffebd5d8) > .... lots more "display-warning" > "locate-file" (0xffffe498) > "command-line" (0xffffe5a0) > "normal-top-level" (0xffffe640) > > And the warning itself is: > > "Cannot look-up eln file as no source file was found for /usr/share/emacs/28.0.50/lisp/emacs-lisp/warnings.elc" > > So something somewhere wanted to throw a warning, and this warning tried > to find its own sources, couldn't do it, and threw another warning. And > so on. > > So first off, it'd be great if emacs could handle this without such a > recursive failure mode. It took me a long time to figure out what's > happening, and a plain-text error message on the console would have been > nice. Hi Dima, could you share the Lisp backtrace? If you have loaded the .gdbinit shipped with the repot this will be at the bottom of the gdb backtrace. > And second: how should this be packaged? Is shipping the .el files a > hard requirement now? Yes if you want the native compiler to be able to compile files, otherwise you should either native compile all lisp files Ahead of Time or set `comp-deferred-compilation' to nil in early init so that Emacs will not try to native compile bytecode being loaded. Thanks Andrea ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 8:37 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-05-11 8:44 ` Dima Kogan 2021-05-11 12:33 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Dima Kogan @ 2021-05-11 8:44 UTC (permalink / raw) To: Andrea Corallo; +Cc: 48342 Andrea Corallo <akrl@sdf.org> writes: > could you share the Lisp backtrace? If you have loaded the .gdbinit > shipped with the repot this will be at the bottom of the gdb > backtrace. Hi Andrea. The backtrace looks like this: "display-warning" (0xffebcfd8) "display-warning" (0xffebd5d8) "display-warning" (0xffebdbd8) "display-warning" (0xffebe1d8) "display-warning" (0xffebe7d8) "display-warning" (0xffebedd8) "display-warning" (0xffebf3d8) "display-warning" (0xffebf9d8) "display-warning" (0xffebffd8) "display-warning" (0xffec05d8) "display-warning" (0xffec0bd8) "display-warning" (0xffec11d8) "display-warning" (0xffec17d8) "display-warning" (0xffec1dd8) "display-warning" (0xffec23d8) "display-warning" (0xffec29d8) "display-warning" (0xffec2fd8) "display-warning" (0xffec35d8) "display-warning" (0xffec3bd8) "display-warning" (0xffec41d8) "display-warning" (0xffec47d8) "display-warning" (0xffec4dd8) "display-warning" (0xffec59d8) "display-warning" (0xffec5fd8) "display-warning" (0xffec65d8) "debug" (0xffec6bd8) "substitute-env-vars" (0xffec6e28) "substitute-env-in-file-name" (0xffec6ec8) "display-warning" (0xffec7248) ... 1000s more "display-warning" "locate-file" (0xffffe498) "command-line" (0xffffe5a0) "normal-top-level" (0xffffe640) >> And second: how should this be packaged? Is shipping the .el files a >> hard requirement now? > Yes if you want the native compiler to be able to compile files, > otherwise you should either native compile all lisp files Ahead of Time > or set `comp-deferred-compilation' to nil in early init so that Emacs > will not try to native compile bytecode being loaded. That's helpful. Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 8:44 ` Dima Kogan @ 2021-05-11 12:33 ` Eli Zaretskii 2021-05-11 17:00 ` Gregory Heytings ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 12:33 UTC (permalink / raw) To: Dima Kogan; +Cc: 48342, akrl > From: Dima Kogan <dima@secretsauce.net> > Date: Tue, 11 May 2021 01:44:03 -0700 > Cc: 48342@debbugs.gnu.org > > Andrea Corallo <akrl@sdf.org> writes: > > > could you share the Lisp backtrace? If you have loaded the .gdbinit > > shipped with the repot this will be at the bottom of the gdb > > backtrace. > > Hi Andrea. The backtrace looks like this: > > "display-warning" (0xffebcfd8) > "display-warning" (0xffebd5d8) > "display-warning" (0xffebdbd8) > "display-warning" (0xffebe1d8) Any idea how come display-warning calls itself? > > Yes if you want the native compiler to be able to compile files, > > otherwise you should either native compile all lisp files Ahead of Time > > or set `comp-deferred-compilation' to nil in early init so that Emacs > > will not try to native compile bytecode being loaded. > > That's helpful. Thanks. Note that if you will be distributing the *.eln files, I think the GPL requires you to make the *.el files available. In fact, this is so even with the *.elc files. So I'm not sure I understand how you could distribute only the *.elc files until now: isn't that contrary to GPL? ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 12:33 ` Eli Zaretskii @ 2021-05-11 17:00 ` Gregory Heytings 2021-05-11 17:12 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-05-11 17:29 ` Dima Kogan 2 siblings, 0 replies; 20+ messages in thread From: Gregory Heytings @ 2021-05-11 17:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Dima Kogan, 48342, akrl >>> Yes if you want the native compiler to be able to compile files, >>> otherwise you should either native compile all lisp files Ahead of >>> Time or set `comp-deferred-compilation' to nil in early init so that >>> Emacs will not try to native compile bytecode being loaded. >> >> That's helpful. Thanks. > > Note that if you will be distributing the *.eln files, I think the GPL > requires you to make the *.el files available. In fact, this is so even > with the *.elc files. So I'm not sure I understand how you could > distribute only the *.elc files until now: isn't that contrary to GPL? > Why would that be contrary to the GPL? The *.el files are available on Debian and Debian-derived distrbutions, but Debian has chosen to make the distribution of Emacs more modular, and each "logical part" of Emacs is packaged separately: - the emacs package (which is "a metapackage that will always depend on the latest recommended Emacs variant") depends on emacs-gtk or emacs-lucid or emacs-nox (= terminal-only) - the emacs-gtk, emacs-lucid and emacs-nox packages (which contain the Emacs binary and corresponding pdmp files) all depend on on emacs-bin-common and emacs-common, and suggest emacs-common-non-dfsg - the emacs-bin-common package (which contains the ctags, ebrowse, emacsclient, etags, hexl and rcs2log binaries) depends on emacs-common - the emacs-common package (which contains the etc/ directory and the elc files) recommends emacs-el and suggests emacs-common-non-dfsg - the emacs-el package contains the el files - the emacs-common-non-dfsg contains the info files ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 12:33 ` Eli Zaretskii 2021-05-11 17:00 ` Gregory Heytings @ 2021-05-11 17:12 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-05-11 17:29 ` Dima Kogan 2 siblings, 0 replies; 20+ messages in thread From: Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-05-11 17:12 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Dima Kogan, 48342 Eli Zaretskii <eliz@gnu.org> writes: >> From: Dima Kogan <dima@secretsauce.net> >> Date: Tue, 11 May 2021 01:44:03 -0700 >> Cc: 48342@debbugs.gnu.org >> >> Andrea Corallo <akrl@sdf.org> writes: >> >> > could you share the Lisp backtrace? If you have loaded the .gdbinit >> > shipped with the repot this will be at the bottom of the gdb >> > backtrace. >> >> Hi Andrea. The backtrace looks like this: >> >> "display-warning" (0xffebcfd8) >> "display-warning" (0xffebd5d8) >> "display-warning" (0xffebdbd8) >> "display-warning" (0xffebe1d8) > > Any idea how come display-warning calls itself? Nothing evident to me ATM. Dima, I'd like to have a look to the full C backtrace, would be possible to share it? Thanks Andrea ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 12:33 ` Eli Zaretskii 2021-05-11 17:00 ` Gregory Heytings 2021-05-11 17:12 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-05-11 17:29 ` Dima Kogan 2021-05-11 17:43 ` Eli Zaretskii 2021-05-11 17:45 ` Eli Zaretskii 2 siblings, 2 replies; 20+ messages in thread From: Dima Kogan @ 2021-05-11 17:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 48342, akrl Eli Zaretskii <eliz@gnu.org> writes: > Any idea how come display-warning calls itself? I'm here: https://github.com/emacs-mirror/emacs/commit/bb8b8d A single recursive cycle in the C backtrace looks like this: #21 0x000055555573b282 in maybe_swap_for_eln (no_native=no_native@entry=false, filename=filename@entry=0x7fffffebd780, fd=fd@entry=0x7fffffebd77c, mtime=...) at lread.c:1713 #22 0x000055555573ba5d in openp (path=0x555555d75e63, str=0x7fffeefb3a1c, suffixes=<optimized out>, storeptr=0x7fffffebd958, predicate=0x0, newer=false, no_native=false) at ../lib/stat-time.h:149 #23 0x000055555573ed05 in Fload (file=0x7fffeefb3a1c, noerror=0x0, nomessage=0x30, nosuffix=0x0, must_suffix=<optimized out>) at lisp.h:1002 #24 0x000055555573faef in save_match_data_load (file=0x7fffeefb3a1c, noerror=noerror@entry=0x0, nomessage=nomessage@entry=0x30, nosuffix=nosuffix@entry=0x0, must_suffix=must_suffix@entry=0x30) at lread.c:1616 #25 0x0000555555713d57 in Fautoload_do_load (fundef=0x7fffef14ed9b, funname=0x2aaa99569808, macro_only=0x0) at eval.c:2308 #26 0x0000555555714040 in Ffuncall (nargs=3, args=0x7fffffebdbd0) at lisp.h:1002 #27 0x0000555555714211 in call2 (fn=<optimized out>, arg1=arg1@entry=0x4650, arg2=arg2@entry=0x555555f11bf4) at eval.c:2903 #28 0x000055555573b282 in maybe_swap_for_eln (no_native=no_native@entry=false, filename=filename@entry=0x7fffffebdd80, fd=fd@entry=0x7fffffebdd7c, mtime=...) at lread.c:1713 The maybe_swap_for_el() call in Frame #28 checks for the sources, sees that the file on disk doesn't exist, and throws the warning as expected: Code: call2 (intern_c_string ("display-warning") Full context: https://github.com/emacs-mirror/emacs/blob/bb8b8d717f91a85ca41de9e82246e6975e1ed719/src/lread.c#L1713 Frame #26 is the (display-warning ...) Frame #25 is (autoload-do-load ... 'display-warning) Frame #23 is (load "warnings" ...) The backtrace isn't right about the line number in frame #22, but that function is in lread.c. It's trying to compile "warnings.el". > Note that if you will be distributing the *.eln files, I think the GPL > requires you to make the *.el files available. In fact, this is so > even with the *.elc files. So I'm not sure I understand how you could > distribute only the *.elc files until now: isn't that contrary to GPL? The .el files are available, but the user doesn't have to install them. Just like the .c sources are available, but the user can install just the pre-built binaries if they want to. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 17:29 ` Dima Kogan @ 2021-05-11 17:43 ` Eli Zaretskii 2021-05-11 17:57 ` Dima Kogan 2021-05-11 17:45 ` Eli Zaretskii 1 sibling, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 17:43 UTC (permalink / raw) To: Dima Kogan; +Cc: 48342, akrl > From: Dima Kogan <dima@secretsauce.net> > Cc: akrl@sdf.org, 48342@debbugs.gnu.org > Date: Tue, 11 May 2021 10:29:20 -0700 > > > Note that if you will be distributing the *.eln files, I think the GPL > > requires you to make the *.el files available. In fact, this is so > > even with the *.elc files. So I'm not sure I understand how you could > > distribute only the *.elc files until now: isn't that contrary to GPL? > > The .el files are available, but the user doesn't have to install them. > Just like the .c sources are available, but the user can install just > the pre-built binaries if they want to. That's a problematic interpretation of the GPL, IME: this way, how can the user be sure he/she will be able to obtain at a later date the sources of the exact binary he/she is running? And the same question for Lisp files and the corresponding *.elc/*.eln. The only way to make sure is to have them together. But I don't intend to argue more about that. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 17:43 ` Eli Zaretskii @ 2021-05-11 17:57 ` Dima Kogan 2021-05-11 18:57 ` Gregory Heytings 0 siblings, 1 reply; 20+ messages in thread From: Dima Kogan @ 2021-05-11 17:57 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 48342, akrl Eli Zaretskii <eliz@gnu.org> writes: >> > Note that if you will be distributing the *.eln files, I think the GPL >> > requires you to make the *.el files available. In fact, this is so >> > even with the *.elc files. So I'm not sure I understand how you could >> > distribute only the *.elc files until now: isn't that contrary to GPL? >> >> The .el files are available, but the user doesn't have to install them. >> Just like the .c sources are available, but the user can install just >> the pre-built binaries if they want to. > > That's a problematic interpretation of the GPL, IME: this way, how can > the user be sure he/she will be able to obtain at a later date the > sources of the exact binary he/she is running? And the same question > for Lisp files and the corresponding *.elc/*.eln. The only way to > make sure is to have them together. Debian (an every other distro I'm guessing) has been doing it like this for a really long time. Everything is versioned. When the distributor makes packages, they build and ship all the packages together: sources, binaries, .el, .elc, and so on. When a user installs the packages at a later time, they don't have to download and install the whole set. A user installs "emacs" version "abc". The version string includes the upstream version that select a specific emacs release AND the packaging version. At any later point in time the user can install "emacs-el" version "abc" or get the sources for emacs, again at version "abc". The identical version numbers guarantee that they're downloading packages the distributor built at the same time as the "emacs" package the user has already. It works. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 17:57 ` Dima Kogan @ 2021-05-11 18:57 ` Gregory Heytings 2021-05-11 19:11 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Gregory Heytings @ 2021-05-11 18:57 UTC (permalink / raw) To: Dima Kogan; +Cc: 48342, akrl >> That's a problematic interpretation of the GPL, IME: this way, how can >> the user be sure he/she will be able to obtain at a later date the >> sources of the exact binary he/she is running? And the same question >> for Lisp files and the corresponding *.elc/*.eln. The only way to make >> sure is to have them together. > > Debian (an every other distro I'm guessing) has been doing it like this > for a really long time. Everything is versioned. When the distributor > makes packages, they build and ship all the packages together: sources, > binaries, .el, .elc, and so on. > > When a user installs the packages at a later time, they don't have to > download and install the whole set. A user installs "emacs" version > "abc". The version string includes the upstream version that select a > specific emacs release AND the packaging version. At any later point in > time the user can install "emacs-el" version "abc" or get the sources > for emacs, again at version "abc". The identical version numbers > guarantee that they're downloading packages the distributor built at the > same time as the "emacs" package the user has already. It works. > I think that doesn't completely answer Eli's question: "how can the user be sure he/she will be able to obtain at a later date the sources of the exact binary he/she is running?" Debian at least maintains a separate repository (snapshot.debian.org) in which you can find each version of each package distributed by Debian after March 2005, in both source and binary form. Yes, that's quite a lot of data: that archive currently occupies ~100 TB. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 18:57 ` Gregory Heytings @ 2021-05-11 19:11 ` Eli Zaretskii 2021-05-11 19:38 ` Gregory Heytings 0 siblings, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 19:11 UTC (permalink / raw) To: Gregory Heytings; +Cc: dima, 48342, akrl > Date: Tue, 11 May 2021 18:57:32 +0000 > From: Gregory Heytings <gregory@heytings.org> > cc: Eli Zaretskii <eliz@gnu.org>, 48342@debbugs.gnu.org, akrl@sdf.org > > Debian at least maintains a separate repository (snapshot.debian.org) in > which you can find each version of each package distributed by Debian > after March 2005, in both source and binary form. Yes, that's quite a lot > of data: that archive currently occupies ~100 TB. My concern is about users who still have Emacs before March 2005. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:11 ` Eli Zaretskii @ 2021-05-11 19:38 ` Gregory Heytings 2021-05-11 19:51 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Gregory Heytings @ 2021-05-11 19:38 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dima, 48342, akrl >> Debian at least maintains a separate repository (snapshot.debian.org) >> in which you can find each version of each package distributed by >> Debian after March 2005, in both source and binary form. Yes, that's >> quite a lot of data: that archive currently occupies ~100 TB. > > My concern is about users who still have Emacs before March 2005. > I forgot to mention that snapshot.debian.org also contains a copy of all earlier stable releases of Debian since ~1995. For Emacs, the oldest version in that archive is Emacs 19.29... ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:38 ` Gregory Heytings @ 2021-05-11 19:51 ` Eli Zaretskii 2021-05-11 19:59 ` Dima Kogan 2021-05-11 20:00 ` Gregory Heytings 0 siblings, 2 replies; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 19:51 UTC (permalink / raw) To: Gregory Heytings; +Cc: dima, 48342, akrl > Date: Tue, 11 May 2021 19:38:30 +0000 > From: Gregory Heytings <gregory@heytings.org> > cc: dima@secretsauce.net, 48342@debbugs.gnu.org, akrl@sdf.org > > > My concern is about users who still have Emacs before March 2005. > > I forgot to mention that snapshot.debian.org also contains a copy of all > earlier stable releases of Debian since ~1995. Imagine the plight of a user who needs to discover all these places just to have the sources available. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:51 ` Eli Zaretskii @ 2021-05-11 19:59 ` Dima Kogan 2021-05-11 20:23 ` Eli Zaretskii 2021-05-11 20:00 ` Gregory Heytings 1 sibling, 1 reply; 20+ messages in thread From: Dima Kogan @ 2021-05-11 19:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Gregory Heytings, 48342, akrl Eli Zaretskii <eliz@gnu.org> writes: > Imagine the plight of a user who needs to discover all these places > just to have the sources available. I suppose you have a point, but this concern is much bigger than just emacs. A user of a binary distro (pretty much all of them) may have a binary package installed (anything; not just emacs), and could go looking for sources many decades later. These are available, but will take some work to find if you wait that long. Fixing this is a large battle, and I'm not convinced it's worth fighting. For Debian specifically, the snapshot.debian.org repos Gregory mentioned are primarily useful to people that use the unstable packages. The official, released, packages live in more standard locations, and should be easier to get, even decades later. I say "should" because this is not a common need, and I never went looking myself. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:59 ` Dima Kogan @ 2021-05-11 20:23 ` Eli Zaretskii 0 siblings, 0 replies; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 20:23 UTC (permalink / raw) To: Dima Kogan; +Cc: gregory, 48342, akrl > From: Dima Kogan <dima@secretsauce.net> > Cc: Gregory Heytings <gregory@heytings.org>, 48342@debbugs.gnu.org, > akrl@sdf.org > Date: Tue, 11 May 2021 12:59:27 -0700 > > Eli Zaretskii <eliz@gnu.org> writes: > > > Imagine the plight of a user who needs to discover all these places > > just to have the sources available. > > I suppose you have a point, but this concern is much bigger than just > emacs. That there's a larger problem out there doesn't mean we shouldn't strive to get our act together in our small corner. It isn't a justification, not IMO anyway. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:51 ` Eli Zaretskii 2021-05-11 19:59 ` Dima Kogan @ 2021-05-11 20:00 ` Gregory Heytings 2021-05-11 20:04 ` Gregory Heytings 1 sibling, 1 reply; 20+ messages in thread From: Gregory Heytings @ 2021-05-11 20:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dima, 48342, akrl >>> My concern is about users who still have Emacs before March 2005. >> >> I forgot to mention that snapshot.debian.org also contains a copy of >> all earlier stable releases of Debian since ~1995. > > Imagine the plight of a user who needs to discover all these places just > to have the sources available. > As Dima said, the same would be true for the C sources. And, for Debian at least, it's not that difficult: from https://snapshot.debian.org/binary/emacs you can easily find every binary and source file you might need. I cannot imagine a system that would be significantly simpler. ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 20:00 ` Gregory Heytings @ 2021-05-11 20:04 ` Gregory Heytings 0 siblings, 0 replies; 20+ messages in thread From: Gregory Heytings @ 2021-05-11 20:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dima, 48342, akrl > > And, for Debian at least, it's not that difficult: from > https://snapshot.debian.org/binary/emacs > I meant: https://snapshot.debian.org/binary/emacs/ ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 17:29 ` Dima Kogan 2021-05-11 17:43 ` Eli Zaretskii @ 2021-05-11 17:45 ` Eli Zaretskii 2021-05-11 19:43 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2021-05-11 17:45 UTC (permalink / raw) To: Dima Kogan; +Cc: 48342, akrl > From: Dima Kogan <dima@secretsauce.net> > Cc: akrl@sdf.org, 48342@debbugs.gnu.org > Date: Tue, 11 May 2021 10:29:20 -0700 > > The maybe_swap_for_el() call in Frame #28 checks for the sources, sees > that the file on disk doesn't exist, and throws the warning as expected: > > Code: > call2 (intern_c_string ("display-warning") > Full context: > https://github.com/emacs-mirror/emacs/blob/bb8b8d717f91a85ca41de9e82246e6975e1ed719/src/lread.c#L1713 > > Frame #26 is the (display-warning ...) > > Frame #25 is (autoload-do-load ... 'display-warning) > > Frame #23 is (load "warnings" ...) > > The backtrace isn't right about the line number in frame #22, but that > function is in lread.c. It's trying to compile "warnings.el". I guess when we find that a source for some .elc file is not available, we should add its .el name to native-comp-deferred-compilation-deny-list? ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 17:45 ` Eli Zaretskii @ 2021-05-11 19:43 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-02 16:44 ` Lars Ingebrigtsen 0 siblings, 1 reply; 20+ messages in thread From: Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-05-11 19:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Dima Kogan, 48342 Eli Zaretskii <eliz@gnu.org> writes: >> From: Dima Kogan <dima@secretsauce.net> >> Cc: akrl@sdf.org, 48342@debbugs.gnu.org >> Date: Tue, 11 May 2021 10:29:20 -0700 >> >> The maybe_swap_for_el() call in Frame #28 checks for the sources, sees >> that the file on disk doesn't exist, and throws the warning as expected: >> >> Code: >> call2 (intern_c_string ("display-warning") >> Full context: >> https://github.com/emacs-mirror/emacs/blob/bb8b8d717f91a85ca41de9e82246e6975e1ed719/src/lread.c#L1713 >> >> Frame #26 is the (display-warning ...) >> >> Frame #25 is (autoload-do-load ... 'display-warning) >> >> Frame #23 is (load "warnings" ...) >> >> The backtrace isn't right about the line number in frame #22, but that >> function is in lread.c. It's trying to compile "warnings.el". > > I guess when we find that a source for some .elc file is not > available, we should add its .el name to > native-comp-deferred-compilation-deny-list? Good idea that's probably the best fix. I'll come-up with a patch for this. Thanks Andrea ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available 2021-05-11 19:43 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-02 16:44 ` Lars Ingebrigtsen 0 siblings, 0 replies; 20+ messages in thread From: Lars Ingebrigtsen @ 2022-07-02 16:44 UTC (permalink / raw) To: Andrea Corallo; +Cc: Eli Zaretskii, Dima Kogan, 48342 Andrea Corallo <akrl@sdf.org> writes: >> I guess when we find that a source for some .elc file is not >> available, we should add its .el name to >> native-comp-deferred-compilation-deny-list? > > Good idea that's probably the best fix. I'll come-up with a patch for > this. I did an even simpler fix in Emacs 29 -- if we're in an Emacs without .el files, I make maybe_swap_for_eln disable the warning, and that seems to fix the issue. (I check for "simple.el" -- if we don't have that, then we probably don't have any .el files.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2022-07-02 16:44 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-05-11 7:47 bug#48342: native-comp emacs gets into an infinite loop at startup if no .el files are available Dima Kogan 2021-05-11 8:37 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-05-11 8:44 ` Dima Kogan 2021-05-11 12:33 ` Eli Zaretskii 2021-05-11 17:00 ` Gregory Heytings 2021-05-11 17:12 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-05-11 17:29 ` Dima Kogan 2021-05-11 17:43 ` Eli Zaretskii 2021-05-11 17:57 ` Dima Kogan 2021-05-11 18:57 ` Gregory Heytings 2021-05-11 19:11 ` Eli Zaretskii 2021-05-11 19:38 ` Gregory Heytings 2021-05-11 19:51 ` Eli Zaretskii 2021-05-11 19:59 ` Dima Kogan 2021-05-11 20:23 ` Eli Zaretskii 2021-05-11 20:00 ` Gregory Heytings 2021-05-11 20:04 ` Gregory Heytings 2021-05-11 17:45 ` Eli Zaretskii 2021-05-11 19:43 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-02 16:44 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.