Subject: bug#6585: 23.1; Hang / CPU 100% on background interaction when in minibuffer

From: "Jason S. Cornez" <[email-masked]>
Date: Wed, 14 Jul 2010 12:27:46 +0200

I've built emacs 23.2 (using
http://ftp.gnu.org/pub/gnu/emacs/emacs-23.2.tar.bz2) on my system and I
can still reproduce the non-responsive behavior.  Here is the gdb session.

- ----
$ gdb ./emacs
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/emacs-23.2/src/emacs...done.
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from
terminal]
DISPLAY = :0.0
TERM = xterm-256color
Breakpoint 1 at 0x4d5cd0: file emacs.c, line 431.
Temporary breakpoint 2 at 0x4f6510: file sysdep.c, line 1129.
(gdb) run
Starting program: /usr/local/emacs-23.2/src/emacs
[Thread debugging using libthread_db enabled]
^Z
Program received signal SIGTSTP, Stopped (user).
Fbyte_code (bytestr=11586322, vector=11586322, maxdepth=<value optimized
out>) at bytecode.c:494
494               op = op - Bvarref;
(gdb) step
495               goto varref;
(gdb) finish
Run till exit from #0  Fbyte_code (bytestr=11586322, vector=11586322,
maxdepth=<value optimized out>) at bytecode.c:495
^Z
Program received signal SIGTSTP, Stopped (user).
0x0000000000589af0 in Fbyte_code (bytestr=11586322, vector=0,
maxdepth=<value optimized out>) at bytecode.c:506
506                 if (SYMBOLP (v1))
(gdb) finish
Run till exit from #0  0x0000000000589af0 in Fbyte_code
(bytestr=11586322, vector=0, maxdepth=<value optimized out>) at
bytecode.c:506
^Z
Program received signal SIGTSTP, Stopped (user).
0x00000000005884c3 in Fbyte_code (bytestr=13023440, vector=0,
maxdepth=<value optimized out>) at bytecode.c:482
482           switch (op)
(gdb) next
660               op -= Bcall;
(gdb) next
664                 DISCARD (op);
(gdb) next
663                 BEFORE_POTENTIAL_GC ();
(gdb) next
680                 TOP = Ffuncall (op + 1, &TOP);
(gdb) next
664                 DISCARD (op);
(gdb) next
680                 TOP = Ffuncall (op + 1, &TOP);
(gdb) next
681                 AFTER_POTENTIAL_GC ();
(gdb) next
680                 TOP = Ffuncall (op + 1, &TOP);
(gdb) next
681                 AFTER_POTENTIAL_GC ();
(gdb) next
682                 break;
(gdb) next
479           op = FETCH;
(gdb) next
482           switch (op)
(gdb) next
479           op = FETCH;
(gdb) next
482           switch (op)
(gdb) next
617                 v1 = TOP;
(gdb) next
618                 PUSH (v1);
(gdb) next
619                 break;
(gdb) next
479           op = FETCH;
(gdb) next
482           switch (op)
(gdb) next
479           op = FETCH;
(gdb) next
482           switch (op)
(gdb) next
581               op -= Bvarset;
(gdb) next
582               goto varset;
(gdb) next
594                 sym = vectorp[op];
(gdb) next
595                 val = TOP;
(gdb) next
594                 sym = vectorp[op];
(gdb) next
598                 if (SYMBOLP (sym)
(gdb) next
600                     && !XSYMBOL (sym)->indirect_variable
(gdb) next
598                 if (SYMBOLP (sym)
(gdb) next
602                     && !MISCP (XSYMBOL (sym)->value))
(gdb) next
603                   XSYMBOL (sym)->value = val;
(gdb) next
598                 if (SYMBOLP (sym)
(gdb) next
611               (void) POP;
(gdb) next
612               break;
(gdb) next
479           op = FETCH;
(gdb) next
482           switch (op)
(gdb)
- ----

Hope this helps.
- -Jason