Subject: bug#28108: 25.2; Infinite loop due to circular marker list?

From: Adam Porter <[email-masked]>
Date: Thu, 17 Aug 2017 23:06:56 -0500

Hi Eli,

I'm sorry but that didn't work:

(gdb) define count-markers
Type commands for definition of "count-markers".
End with a line saying just "end".
>set $count = 0
>set $markers = BUF_MARKERS(b)
>while $markers != 0
 >set $count = $count + 1
 >print $count
 >set $markers = $markers->next
 >end
>end
(gdb) count-markers
No symbol "BUF_MARKERS" in current context.

I tried to run count-markers after "bt full", "my-step", and "step",
but it still didn't work:

(gdb) step
605           for (tail = BUF_MARKERS (b); tail; prev = &tail->next,
tail = *prev)
(gdb) count-markers
No symbol "BUF_MARKERS" in current context.

Unfortunately I may have to shut down this machine soon.  I searched
for "gdb save state" and found some information about
checkpoint/restart, but I'm not sure if that would work or be
appropriate here.  I'll try to keep the system up until we can finish
debugging this, but if I can't, I guess we'll be stuck, since I have
no idea how to reproduce it.

By the way, a few minutes ago I got a strange crash in another Emacs
process, a segfault in libtasn1.so.6.2.0. It seemed clipboard-related,
because it happened when I right-clicked on the URL bar in my browser
to paste a link I had copied to the clipboard: the browser froze, a
process used 100% CPU (not sure which one), and then Emacs crashed.

I don't think it's related--at least, not directly--but it is unusual.

Thanks for your help.

On Thu, Aug 17, 2017 at 1:31 PM, Eli Zaretskii <[email-masked]> wrote:
>> Date: Thu, 17 Aug 2017 18:09:01 +0300
>> From: Eli Zaretskii <[email-masked]>
>> Cc: [email-masked]
>>
>> Can you try typing the following command definition, and then running
>> the command?  When you run it, does GDB also hang indefinitely?
>>
>>   (gdb) define count-markers
>>    > set $count = 0
>>    > set $markers = BUF_MARKERS(b)
>>    > while $markers != 0
>>     > set $count = $count + 1
>>     > print $count
>>     > set $markers = $markers->next
>>     > end
>>    > end
>>   (gdb) count-markers
>
> I just realized that it might be good to say a few more words.
>
> This command will print a long list of increasing numbers, as it walks
> the linked list of buffer markers and counts them.  If it never ends,
> you should be able to interrupt it with Ctrl-C, but please do let it
> some serious time to run before you give up.  In any case, please tell
> the last number it prints.
>
> Thanks.