[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Assertion violation in pdumper.c
From: |
Pip Cet |
Subject: |
Re: Assertion violation in pdumper.c |
Date: |
Mon, 17 Aug 2020 16:28:21 +0000 |
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.