Subject: Re: bug#24764: 25.1.50; Another crash in automatic gc

From: Eli Zaretskii <[email-masked]>
Date: Sat, 22 Oct 2016 15:36:37 +0300

> Date: Sat, 22 Oct 2016 15:01:25 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > Finding the place where a member of a struct buffer is overwritten
> > can be done with a watchpoint.
> 
> Yes.  But IME just a watchpoint with no conditions gets triggered too
> frequently to be useful

For example, in this case, we are talking about the buffer->markers
member, which is changed (a.k.a. "overwritten") each time a new marker
is added to the buffer, because a new marker 'm' is added to its
buffer 'b' as follows:

      m->next = BUF_MARKERS (b);
      BUF_MARKERS (b) = m;

So setting a watchpoint on b->markers needs to know (1) the buffer in
which this happens, (2) the value or range of values that the
'markers' pointer is overwritten with, in order to make the watchpoint
conditional.