|
From: | Daniel Colascione |
Subject: | Re: Preview: portable dumper |
Date: | Wed, 14 Feb 2018 16:42:08 -0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 |
On 02/14/2018 01:03 PM, Philipp Stephani wrote:
Eli Zaretskii <address@hidden <mailto:address@hidden>> schrieb am Di., 13. Feb. 2018 um 17:39 Uhr:> From: Daniel Colascione <address@hidden <mailto:address@hidden>> > Date: Mon, 12 Feb 2018 12:18:36 -0800 > > I've pushed the portable dumper to the pdumper Savannah branch. It > should support a fully PIC Emacs. Thanks. I'd urge people to try this branch and report any issues they see.Got a crash when building on Debian testing. I've attached the output of 'bt full'.
Thanks. There were two bugs, both relating to conservative GC:1) To make conservative GC work, we record in the dump the start position and Lisp type of each object in the dump. The problem was that we were recording object-start records for objects in the discardable region. With the right stack garbage as input, conservative GC would find one of these object-start records, use it as evidence that it was looking at a real object, then call mark_object, which died because it knows that objects in the discardable region shouldn't be live. Fixed by just not emitting these discardable-region object-start records anymore.
2) When evaluating a Lisp_Object on the stack in mark_maybe_object, occasionally, we can find a word with a valid pointer component but the wrong type tags. Now we check that the Lisp_Object's tagged type matches the actual type of the object in the dump.
I don't know why it was so hard to repro these on my machine. I had to bootstrap a few times before Emacs began crashing.
[Prev in Thread] | Current Thread | [Next in Thread] |