Subject: Re: bug#69431: 30.0.50; Strange fontificaion behavior

From: Andrea Corallo <[email-masked]>
Date: Wed, 28 Feb 2024 14:34:07 -0500

Björn Bidar <[email-masked]> writes:

> Andrea Corallo <[email-masked]> writes:
>
>> Björn Bidar <[email-masked]> writes:
>>
>>> Eli Zaretskii <[email-masked]> writes:
>>>
>>>>> From: Ihor Radchenko <[email-masked]>
>>>>> Cc: [email-masked], [email-masked]
>>>>> Date: Tue, 27 Feb 2024 19:26:39 +0000
>>>>>
>>>>> > So maybe the problem is already solved somehow?
>>>>>
>>>>> ... or it has something to do with loading built-in Org mode.
>>>>> when I do
>>>>> 1. emacs -Q
>>>>> 2. C-x C-f /tmp/a.org
>>>>> I do not see fontification.
>>>>>
>>>>> when I do
>>>>> 1. emacs -Q
>>>>> 2. M-: (require 'org)
>>>>> 3. C-x C-f /tmp/a.org
>>>>> I see fontification...
>>>>>
>>>>> and when I wait long enough for native compilation to finish, I can see
>>>>> fontification without loading org.el.
>>>>>
>>>>> Not sure if it tells anything useful.
>>>>
>>>>> From: OGAWA Hirofumi <[email-masked]>
>>>>> Cc: Ihor Radchenko <[email-masked]>, [email-masked]
>>>>> Date: Wed, 28 Feb 2024 04:20:13 +0900
>>>>>
>>>>> I found a bit more about this. If build with --native-compilation=no, I
>>>>> can't reproduce, and at least --native-compilation=aot can reproduce.
>>>>
>>>> Since this seems to be somehow related to native compilation, I'm
>>>> adding Andrea to the discussion, in the hope that he could suggest
>>>> some ideas.
>>>
>>> I have the same error since my last build ref
>>> 1687adcb5c93b490e2e7edcd14615af295e791ed same issue later in
>>> 6a77355527b2f7f1dca9c2296c2684033c9aa875.
>>>
>>> When running without gdb Emacs just tells in the minubuffer:
>>> Re-entering top level after C-stack overflow.
>>
>> Okay, might be some recursive dependecy issue while loading?
> It does sound like it.
>
>>>
>>> With gdb I get a SIGEGV in lface_from_face_name.
>>> I attach two log files I've created. It was hard to get an exact point
>>> since the bug only triggers when enough is loaded. At first there's
>>> memory corruption but no crash.
>>
>> Would be cool to have a Lisp backtrace at the moment of the SIGEGV to
>> understand what we are trying to load and in which order before we stack
>> overflow.
>>
>> Another idea would be to apply something like the following to
>> Frequire, run a make, and run again the reproducer to understand what's
>> going on.
>>
>> modified   src/fns.c
>> @@ -3408,6 +3408,7 @@ DEFUN ("require", Frequire, Srequire, 1, 3, 0,
>>    bool from_file = load_in_progress;
>>
>>    CHECK_SYMBOL (feature);
>> +  printf ("XXX %s\n", SSDATA (Fsymbol_name (feature)));
>
> I added the message in the case of my init.el it looks like this:
> XXX comp
> XXX bytecomp
> XXX backquote
> XXX macroexp
> XXX cconv
> XXX cl-lib
> XXX macroexp
> XXX gv
> XXX macroexp
> XXX rx
> XXX subr-x
> XXX warnings
> XXX icons
> XXX cl-lib
> XXX comp-common
> XXX comp-cstr
> XXX cl-lib
> XXX cl-extra
> XXX cl-lib
> XXX seq
> XXX help-mode
> XXX cl-lib
> XXX cl-lib
> XXX borg
> XXX bytecomp
> XXX cl-lib
> XXX info
> XXX pcase
> XXX macroexp
> XXX subr-x
> XXX loaddefs-gen
> XXX radix-tree
> XXX lisp-mnt
> XXX generate-lisp-file
> XXX eieio
> XXX eieio-core
> XXX cl-lib
> XXX cl-macs
> XXX cl-lib
> XXX macroexp
> XXX gv
> XXX cl-generic
> XXX bytecomp
> XXX macroexp
> XXX use-package
> XXX use-package-core
> XXX bytecomp
> XXX cl-lib
> XXX tabulated-list
> XXX use-package-bind-key
> XXX use-package-core
> XXX bind-key
> XXX cl-lib
> XXX easy-mmode
> XXX use-package-diminish
> XXX use-package-core
> XXX use-package-delight
> XXX use-package-core
> XXX use-package-ensure
> XXX cl-lib
> XXX use-package-core
> XXX comp-run
> XXX comp-common
> XXX bytecomp
> XXX epkg
> XXX compat
> XXX llama
> XXX seq
> XXX seq
> XXX subr-x
> XXX closql
> XXX compat
> XXX eieio
> XXX eieio-base
> XXX eieio
> XXX seq
> XXX emacsql
> XXX cl-lib
> XXX cl-generic
> XXX eieio
> XXX emacsql-compiler
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX gv
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX emacsql-sqlite-common
> XXX emacsql
> XXX cl-lib
> XXX subr-x
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX macroexp
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX epkg-desc
> XXX epkg
> XXX find-func
> XXX wid-edit
> XXX cl-lib
> XXX cl-lib
> XXX epkg-list
> XXX epkg
> XXX epkg-desc
> XXX epkg-utils
> XXX epkg
> XXX cl-lib
> XXX cl-lib
> XXX epkg-elpa
> XXX epkg
> XXX json
> XXX map
> XXX seq
> XXX subr-x
> XXX no-littering
> XXX cl-lib
> XXX compat
> XXX custom
> XXX select
> XXX saveplace
> XXX cl-lib
> XXX cl-lib
> XXX seq
> XXX kmacro
> XXX replace
> XXX cl-lib
> XXX desktop
> XXX cl-lib
> XXX frameset
> XXX cl-lib
> XXX printing
> XXX lpr
> XXX ps-print
> XXX lpr
> XXX ps-print-loaddefs
> XXX cus-face
> XXX wid-edit
> XXX icons
> XXX cus-load
> XXX cus-start
> XXX cl-lib
> XXX cus-load
> XXX cus-start
> XXX cus-start
> XXX auth-source-pass
> XXX seq
> XXX cl-lib
> XXX auth-source
> XXX json
> XXX password-cache
> XXX cl-lib
> XXX eieio
> XXX url-parse
> XXX url-vars
> XXX auth-source
> XXX helm-pass
> XXX helm
> XXX helm-core
> XXX cl-lib
> XXX async
> XXX cl-lib
> XXX helm-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX helm-multi-match
> XXX cl-lib
> XXX helm-lib
> XXX helm-source
> XXX cl-lib
> XXX eieio
> XXX helm-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX cl-lib
> XXX async-bytecomp
> XXX cl-lib
> XXX async
> XXX bytecomp
> XXX helm-global-bindings
> XXX helm-lib
> XXX helm-easymenu
> XXX easymenu
> XXX password-store
> XXX with-editor
> XXX cl-lib
> XXX compat
> XXX server
> XXX shell
> XXX comint
> XXX ring
> XXX ansi-color
> XXX ansi-osc
> XXX regexp-opt
> XXX pcomplete
> XXX comint
> XXX subr-x
> XXX subr-x
> XXX macroexp
> XXX auth-source-pass
> XXX auth-source-pass
> XXX thingatpt
> XXX seq
> XXX modus-themes
> XXX modus-themes
>

Thanks Björn that's helpful, could we try with the following instead?

modified   src/lread.c
@@ -1402,6 +1402,7 @@ DEFUN ("load", Fload, Sload, 1, 5, 0,
   int version;
 
   CHECK_STRING (file);
+  printf ("YYY %s\n", SSDATA (file));
 
   /* If file name is magic, call the handler.  */
   handler = Ffind_file_name_handler (file, Qload);

>> I'd do the investigation myself but my dev machine went KO yesterday and
>> to get it fixed it might take till next week :/
>>
>> Thanks
>>
>>   Andrea
>
>
> Is the it normal that gdb tell me:
> warning: Corrupted shared library list: 0x1701f5b0 != 0x19cf8b60
>
> When running Emacs in GDB?
> I have the same error with my last known good version.

I think so, I've seen this in the past and never bothered too much (but
I'm not a gdb guru so I can't give you a good explanation).

Thanks

  Andrea