emacs-devel
[Top][All Lists]
Advanced

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

MPS: unable to build due to assertion violation in igc_dump_check_object


From: Eli Zaretskii
Subject: MPS: unable to build due to assertion violation in igc_dump_check_object_starts
Date: Tue, 23 Jul 2024 15:58:00 +0300

It looks like this:

  Finding pointers to doc strings...
  Finding pointers to doc strings...done
  Dumping under the name bootstrap-emacs.pdmp
  Dumping fingerprint: 
fcd9b0097e8172ebf127ea1aea4dcd2e42d173dce96acd73db4b8b68ab5222e3
  cold user data: 7b4c68
  heap end: 7b8ee0

  igc.c:4820: Emacs fatal error: assertion failed: end == p

If I compile igc.c with -O0 (otherwise everything in
igc_dump_check_object_starts is "optimized-out"), I see this:

  Thread 1 hit Breakpoint 1, emacs_abort () at w32fns.c:11335
  11335   {
  (gdb) up
  #1  0x00eb5540 in terminate_due_to_signal (sig=sig@entry=22,
      backtrace_limit=backtrace_limit@entry=2147483647) at emacs.c:470
  470       emacs_raise (sig);
  (gdb)
  #2  0x00f2a81a in die (msg=0x14f8051 <i_fwd+4017> "end == p",
      file=0x14f79c8 <i_fwd+2344> "igc.c", line=4820) at alloc.c:8400
  8400      terminate_due_to_signal (SIGABRT, INT_MAX);
  (gdb)
  #3  0x00fee189 in igc_dump_check_object_starts (relocs=0x11ce31a3,
      dump_base=0x1ab94020, hot_start=0x1ab94098, hot_end=0x1b1a31e8,
      cold_start=0x1b1c4020, heap_end=0x1b33ce88) at igc.c:4820
  4820              eassert (end == p);
  (gdb) l
  4815              EMACS_INT end_off = XFIXNUM (XCAR (XCDR (r)));
  4816              mps_addr_t start = (uint8_t *) dump_base + start_off;
  4817              mps_addr_t end = (uint8_t *) dump_base + end_off;
  4818              eassert (start == p);
  4819              p = dflt_skip (p);
  4820              eassert (end == p);
  4821            }
  4822        }
  4823      eassert (NILP (relocs));
  4824    }
  (gdb) p i
  $1 = 1
  (gdb) p/x region
  $2 = {start = 0x1b1c4020, end = 0x1b33ce88}
  (gdb) p end
  $3 = (mps_addr_t) 0x1b26ac80
  (gdb) p p
  $4 = (mps_addr_t) 0x4af05d90
  (gdb) p start
  $5 = (mps_addr_t) 0x1b26ac70
  (gdb)

So it looks like dflt_skip(0x1b26ac70) yields some bogus value, but I
have no idea what it means or where to look to find the reason(s).

I've been unable to build the branch since 3 days ago.



reply via email to

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