* Assertion violation in pdumper.c
@ 2020-08-17 14:07 Eli Zaretskii
2020-08-17 16:28 ` Pip Cet
2020-08-17 16:32 ` Paul Eggert
0 siblings, 2 replies; 3+ messages in thread
From: Eli Zaretskii @ 2020-08-17 14:07 UTC (permalink / raw)
To: Paul Eggert, Pip Cet; +Cc: emacs-devel
Since the recent changes in pdumper.c, Emacs started hitting an
assertion violation and aborting during the build on one of my
systems, see the backtrace below. I need the following to work around
the abort:
diff --git a/src/pdumper.c b/src/pdumper.c
index 2d1b19283c..217ffa6783 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -4999,7 +4999,7 @@ pdumper_find_object_type_impl (const void *obj)
if (offset % DUMP_ALIGNMENT != 0)
return PDUMPER_NO_OBJECT;
ptrdiff_t bitno = offset / DUMP_ALIGNMENT;
- if (offset < dump_private.header.cold_start
+ if (offset < dump_private.header.discardable_start
&& !dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno))
return PDUMPER_NO_OBJECT;
const struct dump_reloc *reloc =
Here's the relevant parts of a debugging session showing the problem.
My hypothesis is that we are trying to call dump_bitset_bit_set_p on a
pointer that shouldn't be tested like that, because the number of
words we reserve for a bitset is only enough for objects stored before
discardable_start.
In case it matters, this is a 32-bit unoptimized build --with-wide-int.
ELC ../lisp/progmodes/elisp-mode.elc
pdumper.c:4827: Emacs fatal error: assertion failed: word_number < bitset->number_words
Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 8248.0x32a0]
0x763ee2d3 in KERNELBASE!DebugBreak () from C:\WINDOWS\System32\KernelBase.dll
(gdb) thread 1
[Switching to thread 1 (Thread 8248.0x32a0)]
#0 0x763ee2d3 in KERNELBASE!DebugBreak ()
from C:\WINDOWS\System32\KernelBase.dll
(gdb) bt
#0 0x763ee2d3 in KERNELBASE!DebugBreak ()
from C:\WINDOWS\System32\KernelBase.dll
#1 0x01346f58 in emacs_abort () at w32fns.c:10832
#2 0x0115c282 in terminate_due_to_signal (sig=22, backtrace_limit=2147483647)
at emacs.c:408
#3 0x0121d072 in die (
msg=0x174a10c <WEIGHT_STRONG+7976> "word_number < bitset->number_words",
file=0x1748188 <dump_magic+16> "pdumper.c", line=4827) at alloc.c:7352
#4 0x0122a00d in dump_bitset__bit_slot (bitset=0x183eb1c <dump_private+92>,
bit_number=2089472) at pdumper.c:4827
#5 0x0122a061 in dump_bitset_bit_set_p (bitset=0x183eb1c <dump_private+92>,
bit_number=2089472) at pdumper.c:4839
#6 0x0122a48f in pdumper_find_object_type_impl (obj=0x9088800)
at pdumper.c:5003
#7 0x012109d6 in pdumper_find_object_type (obj=0x9088800) at pdumper.h:182
#8 0x01216d83 in mark_maybe_pointer (p=0x9088800) at alloc.c:4716
#9 0x01216ff2 in mark_memory (start=0xbeff58, end=0xbffe5c) at alloc.c:4842
#10 0x0121704f in mark_stack (bottom=0xbffe5c "\023?8\001\350ט\003",
end=0xbeff58 "\210\377_") at alloc.c:5039
#11 0x013274de in mark_one_thread (thread=0x170b000 <main_thread>)
at thread.c:630
#12 0x01327613 in mark_threads_callback (ignore=0x0) at thread.c:661
#13 0x01217079 in flush_stack_call_func1 (
func=0x1327595 <mark_threads_callback>, arg=0x0) at alloc.c:5080
#14 0x0132672d in flush_stack_call_func (
func=0x1327595 <mark_threads_callback>, arg=0x0) at lisp.h:3802
#15 0x01327642 in mark_threads () at thread.c:668
#16 0x01219b30 in garbage_collect () at alloc.c:6068
#17 0x01219745 in maybe_garbage_collect () at alloc.c:5975
#18 0x012555b5 in maybe_gc () at lisp.h:5057
#19 0x0126016c in Ffuncall (nargs=3, args=0xbf01a0) at eval.c:2779
#20 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087cc148),
vector=XIL(0xa0000000087f5be8), maxdepth=make_fixnum(7),
args_template=make_fixnum(513), nargs=2, args=0xbf0790) at bytecode.c:632
#21 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f5c20),
syms_left=make_fixnum(513), nargs=2, args=0xbf0780) at eval.c:2917
#22 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f5c20), nargs=2,
arg_vector=0xbf0780) at eval.c:2998
#23 0x012602dd in Ffuncall (nargs=3, args=0xbf0778) at eval.c:2797
#24 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ae260),
vector=XIL(0xa0000000087ebd38), maxdepth=make_fixnum(10),
args_template=make_fixnum(257), nargs=1, args=0xbf0da8) at bytecode.c:632
#25 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087ebd88),
syms_left=make_fixnum(257), nargs=1, args=0xbf0da0) at eval.c:2917
#26 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087ebd88), nargs=1,
arg_vector=0xbf0da0) at eval.c:2998
#27 0x012602dd in Ffuncall (nargs=2, args=0xbf0d98) at eval.c:2797
#28 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=1, args=0xbf1570) at bytecode.c:632
#29 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=1, args=0xbf1568) at eval.c:2917
#30 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=1,
arg_vector=0xbf1568) at eval.c:2998
#31 0x012602dd in Ffuncall (nargs=2, args=0xbf1560) at eval.c:2797
#32 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ce498),
vector=XIL(0xa0000000087ec158), maxdepth=make_fixnum(4),
args_template=make_fixnum(257), nargs=1, args=0xbf1b48) at bytecode.c:632
#33 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087ec1a0),
syms_left=make_fixnum(257), nargs=1, args=0xbf1b40) at eval.c:2917
#34 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087ec1a0), nargs=1,
arg_vector=0xbf1b40) at eval.c:2998
#35 0x012602dd in Ffuncall (nargs=2, args=0xbf1b38) at eval.c:2797
#36 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ce3f8),
vector=XIL(0xa00000000876e928), maxdepth=make_fixnum(6),
args_template=make_fixnum(257), nargs=1, args=0xbf2150) at bytecode.c:632
#37 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa00000000876e978),
syms_left=make_fixnum(257), nargs=1, args=0xbf2148) at eval.c:2917
#38 0x012613a9 in funcall_lambda (fun=XIL(0xa00000000876e978), nargs=1,
arg_vector=0xbf2148) at eval.c:2998
#39 0x012602dd in Ffuncall (nargs=2, args=0xbf2140) at eval.c:2797
#40 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=2, args=0xbf2930) at bytecode.c:632
#41 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=2, args=0xbf2920) at eval.c:2917
#42 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=2,
arg_vector=0xbf2920) at eval.c:2998
#43 0x012602dd in Ffuncall (nargs=3, args=0xbf2918) at eval.c:2797
#44 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ce520),
vector=XIL(0xa0000000087f2050), maxdepth=make_fixnum(12),
args_template=make_fixnum(257), nargs=1, args=0xbf2fe0) at bytecode.c:632
#45 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f2148),
syms_left=make_fixnum(257), nargs=1, args=0xbf2fd8) at eval.c:2917
#46 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f2148), nargs=1,
arg_vector=0xbf2fd8) at eval.c:2998
#47 0x012602dd in Ffuncall (nargs=2, args=0xbf2fd0) at eval.c:2797
#48 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=1, args=0xbf37a0) at bytecode.c:632
#49 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=1, args=0xbf3798) at eval.c:2917
#50 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=1,
arg_vector=0xbf3798) at eval.c:2998
#51 0x012602dd in Ffuncall (nargs=2, args=0xbf3790) at eval.c:2797
#52 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d2b98),
vector=XIL(0xa0000000087f4968), maxdepth=make_fixnum(5),
args_template=make_fixnum(257), nargs=1, args=0xbf3d88) at bytecode.c:632
--Type <RET> for more, q to quit, c to continue without paging--
#53 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f4990),
syms_left=make_fixnum(257), nargs=1, args=0xbf3d80) at eval.c:2917
#54 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f4990), nargs=1,
arg_vector=0xbf3d80) at eval.c:2998
#55 0x012602dd in Ffuncall (nargs=2, args=0xbf3d78) at eval.c:2797
#56 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d2b38),
vector=XIL(0xa0000000087f4af0), maxdepth=make_fixnum(10),
args_template=make_fixnum(257), nargs=1, args=0xbf43e0) at bytecode.c:632
#57 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f4b60),
syms_left=make_fixnum(257), nargs=1, args=0xbf43d8) at eval.c:2917
#58 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f4b60), nargs=1,
arg_vector=0xbf43d8) at eval.c:2998
#59 0x012602dd in Ffuncall (nargs=2, args=0xbf43d0) at eval.c:2797
#60 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=2, args=0xbf4bb8) at bytecode.c:632
#61 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=2, args=0xbf4ba8) at eval.c:2917
#62 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=2,
arg_vector=0xbf4ba8) at eval.c:2998
#63 0x012602dd in Ffuncall (nargs=3, args=0xbf4ba0) at eval.c:2797
#64 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ce520),
vector=XIL(0xa0000000087f2050), maxdepth=make_fixnum(12),
args_template=make_fixnum(257), nargs=1, args=0xbf5270) at bytecode.c:632
#65 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f2148),
syms_left=make_fixnum(257), nargs=1, args=0xbf5268) at eval.c:2917
#66 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f2148), nargs=1,
arg_vector=0xbf5268) at eval.c:2998
#67 0x012602dd in Ffuncall (nargs=2, args=0xbf5260) at eval.c:2797
#68 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=2, args=0xbf5a30) at bytecode.c:632
#69 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=2, args=0xbf5a20) at eval.c:2917
#70 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=2,
arg_vector=0xbf5a20) at eval.c:2998
#71 0x012602dd in Ffuncall (nargs=3, args=0xbf5a18) at eval.c:2797
#72 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ce7f0),
vector=XIL(0xa0000000087f1c28), maxdepth=make_fixnum(5),
args_template=make_fixnum(513), nargs=2, args=0xbf6020) at bytecode.c:632
#73 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f1c40),
syms_left=make_fixnum(513), nargs=2, args=0xbf6010) at eval.c:2917
#74 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f1c40), nargs=2,
arg_vector=0xbf6010) at eval.c:2998
#75 0x012602dd in Ffuncall (nargs=3, args=0xbf6008) at eval.c:2797
#76 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d2b38),
vector=XIL(0xa0000000087f4af0), maxdepth=make_fixnum(10),
args_template=make_fixnum(257), nargs=1, args=0xbf6670) at bytecode.c:632
#77 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f4b60),
syms_left=make_fixnum(257), nargs=1, args=0xbf6668) at eval.c:2917
#78 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f4b60), nargs=1,
arg_vector=0xbf6668) at eval.c:2998
#79 0x012602dd in Ffuncall (nargs=2, args=0xbf6660) at eval.c:2797
#80 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad5d8),
vector=XIL(0xa0000000087e8f08), maxdepth=make_fixnum(17),
args_template=make_fixnum(513), nargs=2, args=0xbf6e48) at bytecode.c:632
#81 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e9090),
syms_left=make_fixnum(513), nargs=2, args=0xbf6e38) at eval.c:2917
#82 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e9090), nargs=2,
arg_vector=0xbf6e38) at eval.c:2998
#83 0x012602dd in Ffuncall (nargs=3, args=0xbf6e30) at eval.c:2797
#84 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad6b8),
vector=XIL(0xa0000000087e8bd0), maxdepth=make_fixnum(16),
args_template=make_fixnum(1281), nargs=5, args=0xbf74e8) at bytecode.c:632
#85 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e8c88),
syms_left=make_fixnum(1281), nargs=5, args=0xbf74c0) at eval.c:2917
#86 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e8c88), nargs=5,
arg_vector=0xbf74c0) at eval.c:2998
#87 0x012602dd in Ffuncall (nargs=6, args=0xbf74b8) at eval.c:2797
#88 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087ad768),
vector=XIL(0xa0000000087e8a40), maxdepth=make_fixnum(17),
args_template=make_fixnum(769), nargs=2, args=0xbf7bf8) at bytecode.c:632
#89 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e8b18),
syms_left=make_fixnum(769), nargs=2, args=0xbf7be8) at eval.c:2917
#90 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e8b18), nargs=2,
arg_vector=0xbf7be8) at eval.c:2998
#91 0x012602dd in Ffuncall (nargs=3, args=0xbf7be0) at eval.c:2797
#92 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087af708),
vector=XIL(0xa0000000087e4f90), maxdepth=make_fixnum(18),
args_template=make_fixnum(1285), nargs=5, args=0xbf83a8) at bytecode.c:632
#93 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e5100),
syms_left=make_fixnum(1285), nargs=5, args=0xbf8380) at eval.c:2917
#94 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e5100), nargs=5,
arg_vector=0xbf8380) at eval.c:2998
#95 0x012602dd in Ffuncall (nargs=6, args=0xbf8378) at eval.c:2797
#96 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087cc2e8),
vector=XIL(0xa000000009a97b98), maxdepth=make_fixnum(8),
args_template=make_fixnum(514), nargs=2, args=0xbf89c8) at bytecode.c:632
#97 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa000000009a97c00),
syms_left=make_fixnum(514), nargs=2, args=0xbf89b8) at eval.c:2917
#98 0x012613a9 in funcall_lambda (fun=XIL(0xa000000009a97c00), nargs=2,
arg_vector=0xbf89b8) at eval.c:2998
#99 0x012602dd in Ffuncall (nargs=3, args=0xbf89b0) at eval.c:2797
#100 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087cc2f8),
vector=XIL(0xa0000000087f5598), maxdepth=make_fixnum(16),
args_template=make_fixnum(1542), nargs=6, args=0xbf9050) at bytecode.c:632
#101 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f55f0),
syms_left=make_fixnum(1542), nargs=6, args=0xbf9020) at eval.c:2917
#102 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f55f0), nargs=6,
arg_vector=0xbf9020) at eval.c:2998
#103 0x012602dd in Ffuncall (nargs=7, args=0xbf9018) at eval.c:2797
#104 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087cc308),
vector=XIL(0xa0000000087f5620), maxdepth=make_fixnum(17),
args_template=make_fixnum(1285), nargs=5, args=0xbf9700) at bytecode.c:632
#105 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f5640),
syms_left=make_fixnum(1285), nargs=5, args=0xbf96d8) at eval.c:2917
#106 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f5640), nargs=5,
arg_vector=0xbf96d8) at eval.c:2998
#107 0x012602dd in Ffuncall (nargs=6, args=0xbf96d0) at eval.c:2797
#108 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087cc318),
vector=XIL(0xa0000000087f5798), maxdepth=make_fixnum(30),
args_template=make_fixnum(257), nargs=1, args=0xbf9ec8) at bytecode.c:632
#109 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f57e8),
syms_left=make_fixnum(257), nargs=1, args=0xbf9ec0) at eval.c:2917
#110 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f57e8), nargs=1,
arg_vector=0xbf9ec0) at eval.c:2998
#111 0x012602dd in Ffuncall (nargs=2, args=0xbf9eb8) at eval.c:2797
#112 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5cd8),
vector=XIL(0xa0000000087e4970), maxdepth=make_fixnum(4),
args_template=make_fixnum(257), nargs=1, args=0xbfa490) at bytecode.c:632
#113 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e49a0),
syms_left=make_fixnum(257), nargs=1, args=0xbfa488) at eval.c:2917
#114 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e49a0), nargs=1,
arg_vector=0xbfa488) at eval.c:2998
#115 0x012602dd in Ffuncall (nargs=2, args=0xbfa480) at eval.c:2797
#116 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5cf8),
vector=XIL(0xa0000000087e48c8), maxdepth=make_fixnum(5),
args_template=make_fixnum(257), nargs=1, args=0xbfaa58) at bytecode.c:632
#117 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e48f8),
syms_left=make_fixnum(257), nargs=1, args=0xbfaa50) at eval.c:2917
#118 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e48f8), nargs=1,
arg_vector=0xbfaa50) at eval.c:2998
#119 0x012602dd in Ffuncall (nargs=2, args=0xbfaa48) at eval.c:2797
#120 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d0338),
vector=XIL(0xa0000000087e6eb8), maxdepth=make_fixnum(10),
args_template=make_fixnum(514), nargs=2, args=0xbfb058) at bytecode.c:632
#121 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e6f20),
syms_left=make_fixnum(514), nargs=2, args=0xbfb048) at eval.c:2917
#122 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e6f20), nargs=2,
arg_vector=0xbfb048) at eval.c:2998
#123 0x012602dd in Ffuncall (nargs=3, args=0xbfb040) at eval.c:2797
#124 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5d08),
vector=XIL(0xa0000000087e4928), maxdepth=make_fixnum(4),
args_template=make_fixnum(257), nargs=1, args=0xbfb610) at bytecode.c:632
#125 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e4940),
syms_left=make_fixnum(257), nargs=1, args=0xbfb608) at eval.c:2917
#126 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e4940), nargs=1,
arg_vector=0xbfb608) at eval.c:2998
#127 0x012602dd in Ffuncall (nargs=2, args=0xbfb600) at eval.c:2797
#128 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5308),
vector=XIL(0xa0000000087e2d68), maxdepth=make_fixnum(7),
args_template=make_fixnum(257), nargs=1, args=0xbfbc20) at bytecode.c:632
#129 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e2e10),
syms_left=make_fixnum(257), nargs=1, args=0xbfbc18) at eval.c:2917
#130 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e2e10), nargs=1,
arg_vector=0xbfbc18) at eval.c:2998
#131 0x012602dd in Ffuncall (nargs=2, args=0xbfbc10) at eval.c:2797
#132 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5348),
vector=XIL(0xa0000000087e2e40), maxdepth=make_fixnum(17),
args_template=make_fixnum(257), nargs=1, args=0xbfc358) at bytecode.c:632
#133 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e3010),
syms_left=make_fixnum(257), nargs=1, args=0xbfc350) at eval.c:2917
#134 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e3010), nargs=1,
arg_vector=0xbfc350) at eval.c:2998
#135 0x012602dd in Ffuncall (nargs=2, args=0xbfc348) at eval.c:2797
#136 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087a5558),
vector=XIL(0xa0000000087e2968), maxdepth=make_fixnum(18),
args_template=make_fixnum(513), nargs=1, args=0xbfcb30) at bytecode.c:632
#137 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087e41f8),
syms_left=make_fixnum(513), nargs=1, args=0xbfcb28) at eval.c:2917
#138 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087e41f8), nargs=1,
arg_vector=0xbfcb28) at eval.c:2998
#139 0x012602dd in Ffuncall (nargs=2, args=0xbfcb20) at eval.c:2797
#140 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d1a88),
vector=XIL(0xa0000000087f64a0), maxdepth=make_fixnum(8),
args_template=make_fixnum(257), nargs=1, args=0xbfd168) at bytecode.c:632
#141 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087f39d8),
syms_left=make_fixnum(257), nargs=1, args=0xbfd160) at eval.c:2917
#142 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087f39d8), nargs=1,
arg_vector=0xbfd160) at eval.c:2998
#143 0x012602dd in Ffuncall (nargs=2, args=0xbfd158) at eval.c:2797
#144 0x012cafc9 in exec_byte_code (bytestr=XIL(0x80000000087d1ab8),
vector=XIL(0xa0000000087ef3f0), maxdepth=make_fixnum(10),
args_template=make_fixnum(256), nargs=0, args=0xbfd838) at bytecode.c:632
#145 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa0000000087ef4a0),
syms_left=make_fixnum(256), nargs=0, args=0xbfd838) at eval.c:2917
#146 0x012613a9 in funcall_lambda (fun=XIL(0xa0000000087ef4a0), nargs=0,
arg_vector=0xbfd838) at eval.c:2998
#147 0x012602dd in Ffuncall (nargs=1, args=0xbfd830) at eval.c:2797
#148 0x012cafc9 in exec_byte_code (bytestr=XIL(0x8000000008bec2d4),
vector=XIL(0xa000000008be3e14), maxdepth=make_fixnum(25),
args_template=make_fixnum(257), nargs=1, args=0xbfe2a8) at bytecode.c:632
#149 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa000000008be3de4),
syms_left=make_fixnum(257), nargs=1, args=0xbfe2a0) at eval.c:2917
#150 0x012613a9 in funcall_lambda (fun=XIL(0xa000000008be3de4), nargs=1,
arg_vector=0xbfe2a0) at eval.c:2998
#151 0x012602dd in Ffuncall (nargs=2, args=0xbfe298) at eval.c:2797
#152 0x012cafc9 in exec_byte_code (bytestr=XIL(0x8000000008beda14),
vector=XIL(0xa000000008be36a4), maxdepth=make_fixnum(14),
args_template=make_fixnum(0), nargs=0, args=0xbfef08) at bytecode.c:632
#153 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa000000008be3674),
syms_left=make_fixnum(0), nargs=0, args=0xbfef08) at eval.c:2917
#154 0x012613a9 in funcall_lambda (fun=XIL(0xa000000008be3674), nargs=0,
arg_vector=0xbfef08) at eval.c:2998
#155 0x012602dd in Ffuncall (nargs=1, args=0xbfef00) at eval.c:2797
#156 0x012cafc9 in exec_byte_code (bytestr=XIL(0x8000000008bedfbc),
vector=XIL(0xa000000008be337c), maxdepth=make_fixnum(12),
args_template=make_fixnum(0), nargs=0, args=0xbff630) at bytecode.c:632
#157 0x01260de8 in fetch_and_exec_byte_code (fun=XIL(0xa000000008be334c),
syms_left=make_fixnum(0), nargs=0, args=0xbff630) at eval.c:2917
#158 0x012613a9 in funcall_lambda (fun=XIL(0xa000000008be334c), nargs=0,
arg_vector=0xbff630) at eval.c:2998
#159 0x01260fae in apply_lambda (fun=XIL(0xa000000008be334c), args=XIL(0),
count=4) at eval.c:2942
#160 0x0125e4c8 in eval_sub (form=XIL(0xc00000000906fc1c)) at eval.c:2319
#161 0x0125d377 in Feval (form=XIL(0xc00000000906fc1c), lexical=XIL(0))
at eval.c:2103
#162 0x01163dd7 in top_level_2 () at keyboard.c:1100
#163 0x0125a9c0 in internal_condition_case (bfun=0x1163da1 <top_level_2>,
handlers=XIL(0x90), hfun=0x116355d <cmd_error>) at eval.c:1356
#164 0x01163e4c in top_level_1 (ignore=XIL(0)) at keyboard.c:1108
#165 0x01259b76 in internal_catch (tag=XIL(0xe070),
func=0x1163ddd <top_level_1>, arg=XIL(0)) at eval.c:1117
#166 0x01163cad in command_loop () at keyboard.c:1069
#167 0x01162fe5 in recursive_edit_1 () at keyboard.c:714
#168 0x0116325b in Frecursive_edit () at keyboard.c:786
#169 0x0115e962 in main (argc=13, argv=0xf02e80) at emacs.c:2043
Lisp Backtrace:
"Automatic GC" (0x0)
"byte-compile-stack-adjustment" (0xbf01a8)
"byte-compile-out" (0xbf0780)
"byte-compile-constant" (0xbf0da0)
"byte-compile-form" (0xbf1568)
"byte-compile-three-args" (0xbf1b40)
"byte-compile-one-to-three-args" (0xbf2148)
"byte-compile-form" (0xbf2920)
"byte-compile-if" (0xbf2fd8)
"byte-compile-form" (0xbf3798)
"byte-compile-push-binding-init" (0xbf3d80)
"byte-compile-let" (0xbf43d8)
"byte-compile-form" (0xbf4ba8)
"byte-compile-if" (0xbf5268)
"byte-compile-form" (0xbf5a20)
"byte-compile-body" (0xbf6010)
"byte-compile-let" (0xbf6668)
"byte-compile-form" (0xbf6e38)
"byte-compile-top-level" (0xbf74c0)
"byte-compile-lambda" (0xbf7be8)
"byte-compile-file-form-defmumble" (0xbf8380)
0x9a97c00 PVEC_COMPILED
0x87f55f0 PVEC_COMPILED
0x87f5640 PVEC_COMPILED
"byte-compile-file-form-defalias" (0xbf9ec0)
"byte-compile-file-form" (0xbfa488)
0x87e48f8 PVEC_COMPILED
"byte-compile-recurse-toplevel" (0xbfb048)
"byte-compile-toplevel-file-form" (0xbfb608)
0x87e2e10 PVEC_COMPILED
"byte-compile-from-buffer" (0xbfc350)
"byte-compile-file" (0xbfcb28)
"batch-byte-compile-file" (0xbfd160)
"batch-byte-compile" (0xbfd838)
"command-line-1" (0xbfe2a0)
"command-line" (0xbfef08)
"normal-top-level" (0xbff630)
(gdb) fr 169
#169 0x0115e962 in main (argc=13, argv=0xf02e80) at emacs.c:2043
2043 Frecursive_edit ();
(gdb) p *argv@argc
$1 = {
0x185bf40 <modname> "d:\\usr\\eli\\git\\emacs-master\\src\\bootstrap-emacs.exe", 0xf02d18 "-batch", 0xf02d90 "--no-site-lisp",
0xf02d68 "--no-site-file", 0xf02c50 "--eval",
0xf02c60 "(setq load-prefer-newer t)", 0xf02c30 "-l", 0xf02cc0 "bytecomp",
0xf02c98 "-f", 0xf02e00 "byte-compile-refresh-preloaded", 0xf02ce8 "-f",
0xf02e60 "batch-byte-compile", 0xf02e28 "../lisp/progmodes/elisp-mode.el"}
(gdb) fr 4
#4 0x0122a00d in dump_bitset__bit_slot (bitset=0x183eb1c <dump_private+92>,
bit_number=2089472) at pdumper.c:4827
4827 eassert (word_number < bitset->number_words);
(gdb) p word_number
$2 = 65296
(gdb) p *bitset
$3 = {
bits = 0xc9c020,
number_words = 65074
}
(gdb) ptype *bitset
type = const struct dump_bitset {
dump_bitset_word * restrict bits;
ptrdiff_t number_words;
}
(gdb) ptype dump_bitset_word
type = unsigned long
(gdb) fr 7
#7 0x012109d6 in pdumper_find_object_type (obj=0x9088800) at pdumper.h:182
182 return pdumper_find_object_type_impl (obj);
(gdb) p dump_public
$4 = {
start = 143196160,
end = 157189032
}
(gdb) p/x dump_public
$5 = {
start = 0x8890000,
end = 0x95e83a8
}
(gdb) p/x offset
No symbol "offset" in current context.
(gdb) fr 6
#6 0x0122a48f in pdumper_find_object_type_impl (obj=0x9088800)
at pdumper.c:5003
5003 && !dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno))
(gdb) p/x offset
$6 = 0x7f8800
(gdb) p offset
$7 = 8357888
(gdb) p/x DUMP_ALIGNMENT+0
$8 = 0x4
(gdb) p/x bitno
$9 = 0x1fe200
(gdb) p bitno
$10 = 2089472
(gdb) dow
#5 0x0122a061 in dump_bitset_bit_set_p (bitset=0x183eb1c <dump_private+92>,
bit_number=2089472) at pdumper.c:4839
4839 return *dump_bitset__bit_slot (bitset, bit_number) & bit;
(gdb) p bits_per_word
$11 = 32
(gdb) p bit
$12 = 1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: Assertion violation in pdumper.c
2020-08-17 14:07 Assertion violation in pdumper.c Eli Zaretskii
@ 2020-08-17 16:28 ` Pip Cet
2020-08-17 16:32 ` Paul Eggert
1 sibling, 0 replies; 3+ messages in thread
From: Pip Cet @ 2020-08-17 16:28 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Paul Eggert, emacs-devel
On Mon, Aug 17, 2020 at 2:08 PM Eli Zaretskii <eliz@gnu.org> wrote:
> Since the recent changes in pdumper.c, Emacs started hitting an
> assertion violation and aborting during the build on one of my
> systems, see the backtrace below. I need the following to work around
> the abort:
>
> diff --git a/src/pdumper.c b/src/pdumper.c
> index 2d1b19283c..217ffa6783 100644
> --- a/src/pdumper.c
> +++ b/src/pdumper.c
> @@ -4999,7 +4999,7 @@ pdumper_find_object_type_impl (const void *obj)
> if (offset % DUMP_ALIGNMENT != 0)
> return PDUMPER_NO_OBJECT;
> ptrdiff_t bitno = offset / DUMP_ALIGNMENT;
> - if (offset < dump_private.header.cold_start
> + if (offset < dump_private.header.discardable_start
> && !dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno))
> return PDUMPER_NO_OBJECT;
> const struct dump_reloc *reloc =
That looks like the correct fix to me. I'd mistakenly thought cold
objects preceded discardable ones.
> My hypothesis is that we are trying to call dump_bitset_bit_set_p on a
> pointer that shouldn't be tested like that, because the number of
> words we reserve for a bitset is only enough for objects stored before
> discardable_start.
I agree.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Assertion violation in pdumper.c
2020-08-17 14:07 Assertion violation in pdumper.c Eli Zaretskii
2020-08-17 16:28 ` Pip Cet
@ 2020-08-17 16:32 ` Paul Eggert
1 sibling, 0 replies; 3+ messages in thread
From: Paul Eggert @ 2020-08-17 16:32 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Pip Cet, emacs-devel
[-- Attachment #1: Type: text/plain, Size: 239 bytes --]
On 8/17/20 7:07 AM, Eli Zaretskii wrote:
> - if (offset < dump_private.header.cold_start
> + if (offset < dump_private.header.discardable_start
Yes, that's a good fix. Thanks for finding and fixing this bug. I installed the
attached.
[-- Attachment #2: 0001-Fix-assertion-violation-in-pdumper.c.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]
From 3a17b9f265fd6d42e82f649533027b4531f9dabf Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Mon, 17 Aug 2020 09:30:02 -0700
Subject: [PATCH] Fix assertion violation in pdumper.c
* src/pdumper.c (pdumper_find_object_type_impl): When checking
last_mark_bits, require the offset to be less than
discardable_start, not cold_start. This fixes a typo introduced in
2020-08-14T21:33:21Z!eggert@cs.ucla.edu (Bug#42832).
---
src/pdumper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pdumper.c b/src/pdumper.c
index 2d1b19283c..217ffa6783 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -4999,7 +4999,7 @@ pdumper_find_object_type_impl (const void *obj)
if (offset % DUMP_ALIGNMENT != 0)
return PDUMPER_NO_OBJECT;
ptrdiff_t bitno = offset / DUMP_ALIGNMENT;
- if (offset < dump_private.header.cold_start
+ if (offset < dump_private.header.discardable_start
&& !dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno))
return PDUMPER_NO_OBJECT;
const struct dump_reloc *reloc =
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-17 16:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-17 14:07 Assertion violation in pdumper.c Eli Zaretskii
2020-08-17 16:28 ` Pip Cet
2020-08-17 16:32 ` Paul Eggert
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).