[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
- MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp,
Andrea Corallo <=
- Re: MPS: native comp, Eli Zaretskii, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp, Andrea Corallo, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29
- Re: MPS: native comp, Andrea Corallo, 2024/04/29
- Re: MPS: native comp, Gerd Möllmann, 2024/04/29