emacs-devel
[Top][All Lists]
Advanced

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

MPS: native comp


From: Gerd Möllmann
Subject: MPS: native comp
Date: Mon, 29 Apr 2024 07:35:05 +0200

Hi Andrea,

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?

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?



reply via email to

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