Subject: Re: bug#17168: 24.3.50; Segfault at mark_object

From: Daniel Colascione <[email-masked]>
Date: Sun, 06 Apr 2014 08:59:55 -0700

On 04/06/2014 08:06 AM, Eli Zaretskii wrote:
>> From: Stefan Monnier <[email-masked]>
>> Date: Sun, 06 Apr 2014 08:36:02 -0400
>> Cc: Dmitry Antipov <[email-masked]>, [email-masked]
>>
>>> This scheme works and passes Dmitry's test, but the resulting
>>> Vpure_reachable vector has over 8,000 items. Most of these items are
>>> ordinary interned symbols.
>>
>> What objects are there besides symbols in Vpure_reachable?
>> If we can reduce Vpure_reachable to only contain symbols, then we can
>> replace it with a `pinned' bit in the Lisp_Symbol struct and then walk
>> the list of symbols during mark, marking all those symbols with the
>> `pinned' bit.
> 
> As an alternative, would it make sense to try to understand why the
> problems started when they did?  IOW, how come we never saw this until
> now?

Who knows? The problem arises we happen to form a pointer on the stack
to an undead symbol, and *any* code change could be responsible for our
doing that more frequently. I don't see you can blame it on 114156.

> In http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15583#23, Richard
> provided the last good revno (113938) and the first bad one (114268);
> I looked at that range of revisions, and 114156 looks relevant.  How
> about if we revert it and see if the problems go away?

The bug would still be there, and we'd have no way to tell whether your
proposed change actually reduced its occurrence to a tolerable level.
Why would you want to do that instead of just fixing the bug?