[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Emacs:Native-Comp Backtrace
From: |
T.V Raman |
Subject: |
Re: Emacs:Native-Comp Backtrace |
Date: |
Wed, 26 Aug 2020 08:06:27 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
"T.V Raman" <raman@google.com> writes:
Here is some more info based on a work-around:
Conjecture: native-comp has issues with with-eval-after-load and
friends:
The following setup produced the afore-mentioned error:
1. In the emacs startup, load dired-x when dired is loaded:
(with-eval-after-load "dired" (require 'dired-x))
2. dired-mode-hook contains dired-omit-mode defined in dired-x
3. During startup, a dired buffer is opened -- either via psession,
desktop or some other means
With the above, you get the error (symbol's function definition is
void: dired-omit-mode)
Fix: If in the startup file, you remove the with-eval-after-load and
simply require dired-x, then it works.
Additional info which lends credence to the conjecture:
Emacspeak loads module-specific code using eval-after-load e.g. when
"ido" is loaded, it loads emacspeak-ido after ido is done loading. In
native-comp emacs, I find that (featurep 'emacspeak-ido) is nil after
ido is loaded.
I suspect use-package may also be affected in a similar way.
> Hi Andrea and others,
>
> This is a follow-on to my earlier message re a possible race
> condition, this time with a backtrace.
>
> 1. I load dired-x in my emacs startup, and I have dired-omit-mode
> enabled via customize (settings saved to a custom file)
>
> 2. The above emacs startup works with no errors or warnings with
> regular emacs.
>
> 3. With emacs native-comp version, this throws a symbol's value
> as variable is void in the *Messages* buffer.
> 4. native-emacs (native comp version) does not throw a
> backtrace even if you start it as native-emacs
> --debug-init
>
> 5. I produced the attached backtrace by setting
> debug-on-error to t at the top of my early-init.el
> 6. As the backtrace below shows, the psession package
> in the process of restoring buffers opens a dired
> buffer, and at that point, dired-omit-mode is on
> dired-mode-hook, but apparently dired-x hasn't been
> fully loaded yet.
>
> Debugger entered--Lisp error: (void-function
> dired-omit-mode)
> (dired-omit-mode)
> (run-hooks change-major-mode-after-body-hook dired-mode-hook)
> (apply run-hooks (change-major-mode-after-body-hook dired-mode-hook))
> (run-mode-hooks dired-mode-hook)
> (dired-mode "~/Mail/foo" "-al")
> (dired-internal-noselect "~/Mail/foo" nil)
> (dired-noselect "~/Mail/foo")
> (run-hook-with-args-until-success dired-noselect "~/Mail/foo")
> (find-file-noselect "/home/raman/Mail/foo/" nowarn)
> (psession--restore-some-buffers)
> (run-hooks emacs-startup-hook term-setup-hook)
> (#f(compiled-function () #<bytecode -0x11887347ec248cf1>))
> (normal-top-level)
>
> --
> ?7?4Id: kg:/m/0285kf1 ?0?8?7?4
--
?7?4Id: kg:/m/0285kf1 ?0?8?7?4