emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MPS: native comp


From: Andrea Corallo
Subject: Re: MPS: native comp
Date: Mon, 29 Apr 2024 03:29:44 -0400
User-agent: Gnus/5.13 (Gnus v5.13)

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Hi Andrea,

Hi Gerd

> I'm back to this after an excursion into the GUI world with MPS. And I
> might have something that could be hint where the references live that
> are currently not traced. Maybe. Could you please help me with this?

sure, at least I can try :)

> My scribbling from this mornings debug session:
>
> * Bus error in styled_format
>
> macroexp native-compiled, rest source. Bus error while dumping.
>
> #+begin_src sh
> Loading emacs-lisp/macroexp (native compiled elisp)...
> Loading /Users/gerd/emacs/savannah/igc/lisp/cus-face.el (source)...
> Loading /Users/gerd/emacs/savannah/igc/lisp/faces.el (source)...
> Loading /Users/gerd/emacs/savannah/igc/lisp/ldefs-boot.el (source)...
> Loading /Users/gerd/emacs/savannah/igc/lisp/button.el (source)...
> Loading /Users/gerd/emacs/savannah/igc/lisp/emacs-lisp/cl-preloaded.el 
> (source)...
> Process 70068 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
> (code=2, address=0x1089f2140)
>     frame #0: 0x0000000100280b5c temacs`styled_format(nargs=2, args=(struct 
> Lisp_Symbol *) $0 = 0x0000000270a89b70, message=true) at editfns.c:3519:35
> #+end_src
>
>
> In styled_format
>
> #+begin_src sh
> p args[0]
> (Lisp_Object) 0x00000001089f4e94 (struct Lisp_String *) $2 = 
> 0x00000001089f4e90
> (lldb) p *$2
> (struct Lisp_String) {
>   u = {
>     s = {
>       size = 4546790736
>       size_byte = -1
>       intervals = NULL
>       data = 0x00000001089f2140 ""
>     }
>     next = 0x000000010f028550
>     gcaligned = 'P'
>   }
> }
> (lldb) p *(struct igc_header *) ((char *) $2 - 8)
> (struct igc_header)  (obj_type = IGC_OBJ_FWD, pvec_type = PVEC_FREE, hash = 
> 1074619, nwords = 5)
> #+end_src
>
>
> This is a reference pointing to a tombstone, so a reference that
> hasn't been traced.
>
> #+begin_src sh
> (lldb) p *(struct igc_fwd *) ((char *) $2 - 8)
> (struct igc_fwd) {
>   header = (obj_type = IGC_OBJ_FWD, pvec_type = PVEC_FREE, hash = 1074619, 
> nwords = 5)
>   new_base_addr = 0x000000010f028550
> (lldb) p *(struct igc_header *) 0x000000010f028550
> (struct igc_header)  (obj_type = IGC_OBJ_STRING, pvec_type = PVEC_FREE, hash 
> = 1074619, nwords = 5)
> (lldb) p base_to_client ((void*) 0x000000010f028550)
> (mps_addr_t) 0x000000010f028558
> (lldb) p *(struct Lisp_String *) 0x000000010f028558
> (struct Lisp_String) {
>   u = {
>     s = {
>       size = 33
>       size_byte = -1
>       intervals = NULL
>       data = 0x000000010f022988 "Eager macro-expansion failure: %S"
>     }
>     next = 0x0000000000000021
>     gcaligned = '!'
>   }
> }
> #+end_src
>
>
> So, it looks like the string constant "Eager..." is a reference that is
> not traced. Can you please tell me where I can find these string
> constants in native cu data structures?

"Eager macro-expansion failure: %S" is an immediate stored in the eln of
macroexp.el.  This should be deserialized by 'load_static_obj' and
referenced by 'comp_u->data_vec' (see 'load_comp_unit' comp.c:5402).

Maybe mps is not tracking Lisp_Native_Comp_Unit's fields?

  Andrea



reply via email to

[Prev in Thread] Current Thread [Next in Thread]