Subject: Major performance problem

From: Michael Linck <[email-masked]>
Date: Fri, 17 Apr 2009 14:31:16 -0600

Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the [email-masked] mailing list,
and to the gnu.emacs.bug news group.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

If you make a C++ header and try to define a long string, you can bring
emacs to a grinding halt.  The scenario is as follows:  I need a test
header to return the equivalent of some lengthy http resources for unit
testing and I can't have file system interaction, so I have to hard code
the scenarios in a variety of header files for the unit tests.  For each
resource, I need a string constant.  So I have to copy the body of the
resource into the cxx header.  Then backslash escape the quotes, then 
replace
newlines with '\n"[newline]"' and then auto indent the buffer.
For a resource that is *merely* 8000 lines (that 8 thousand, not eight
trillion) the simple quote escaping (replace '"' with '\"') takes more than
5-10 minutes, the newlines (no more than 1 per line) takes 5-10 minutes 
also.
This BUG however, is filed because the indentation has now been in progress
for over 3 hours!  It was 37 percent complete an hour ago, now it's 40%
complete.  That emacs instance is using up a entire CPU core, and the 
process
of indenting a bit of code seems to be slowing down hard as it goes.  
37% the
first 2 hours, 3% the following hour.  I expect this *maybe* finish over the
weekend.  I've been using emacs for at least 10 years, and this is shocking.

Another minor gripe is that I tried having emacs send this bug 
previously, but
I had to decide to send it again manually, because it gives no 
indication of
whether the bug e-mail was actually sent or not.  Anyway, in my professional
opinion as a developer, it's time to put a stop to any "feature" updates 
for e-macs
and hunker down with some optimizations. 

emacs version 22.3.1

Thanks, guys.

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/share/emacs/22.3/etc/DEBUG for instructions.

In GNU Emacs 22.3.1 (i386-redhat-linux-gnu, GTK+ Version 2.14.7)
 of 2009-02-09 on x86-5.fedora.phx.redhat.com
Windowing system distributor `The X.Org Foundation', version 11.0.10503000
configured using `configure  '--build=i386-redhat-linux-gnu' 
'--host=i386-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' 
'--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' 
'--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' 
'--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' 
'--libexecdir=/usr/libexec' '--localstatedir=/var' 
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man' 
'--infodir=/usr/share/info' '--with-x-toolkit=gtk' 
'build_alias=i386-redhat-linux-gnu' 'host_alias=i386-redhat-linux-gnu' 
'target_alias=i386-redhat-linux-gnu' 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g 
-pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic 
-fasynchronous-unwind-tables''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8
  default-enable-multibyte-characters: t

Major mode: C/lh

Minor modes in effect:
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: identity
  abbrev-mode: t

Recent input:
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> <return> <delete> <end> <delete>
SPC <end> <left> <up> <down-mouse-1> <mouse-1> <tab>
<return> <delete> <end> <delete> SPC <right> <right>
<right> <right> <right> <C-right> <C-right> <C-right>
<C-right> <C-right> <return> <tab> <backspace> <backspace>
<backspace> <backspace> <backspace> <delete> <end>
<delete> SPC <C-right> <C-right> <C-right> <C-right>
<C-right> <C-right> <return> <tab> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> <delete> <end> <delete> SPC <C-right> <C-right>
<C-right> <C-right> <C-right> <C-right> <C-right> <return>
<delete> <end> <delete> SPC <C-right> <C-right> <C-right>
<C-right> <C-right> <C-right> <C-right> <return> <delete>
<end> <delete> SPC <C-right> <C-right> <C-right> <C-right>
<C-right> <C-right> <C-right> <return> <delete> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <down-mouse-1> <mouse-1> <return>
e m a c s SPC v e r s i o n SPC i s SPC 2 2 . 3 . 1
<backspace> 1 <help-echo> <down-mouse-1> <mouse-1>
<escape> <escape> <escape> <help-echo> <help-echo>
<down-mouse-5> <mouse-5> <double-down-mouse-5> <double-mouse-5>
<down-mouse-4> <mouse-4> <double-down-mouse-4> <double-mouse-4>
<triple-down-mouse-4> <triple-mouse-4> <down-mouse-4>
<mouse-4> <double-down-mouse-4> <double-mouse-4> <down-mouse-5>
<mouse-5> <double-down-mouse-5> <double-mouse-5> <triple-down-mouse-5>
<triple-mouse-5> <down-mouse-5> <mouse-5> <double-down-mouse-5>
<double-mouse-5> <triple-down-mouse-5> <triple-mouse-5>
<down-mouse-5> <mouse-5> <double-down-mouse-5> <double-mouse-5>
<triple-down-mouse-5> <triple-mouse-5> <down-mouse-4>
<mouse-4> <double-down-mouse-4> <double-mouse-4> <triple-down-mouse-4>
<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4>
<down-mouse-4> <mouse-4> <double-down-mouse-4> <double-mouse-4>
<triple-down-mouse-4> <triple-mouse-4> <triple-down-mouse-4>
<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4>
<triple-down-mouse-4> <triple-mouse-4> <triple-down-mouse-4>
<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4>
<help-echo> <help-echo> <help-echo> <help-echo> <down-mouse-1>
<mouse-1> C-c C-c y e s <return> <help-echo> <help-echo>
<down-mouse-1> <mouse-1> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <down-mouse-1>
<mouse-1> <help-echo> <down-mouse-1> <mouse-1> <help-echo>
<down-mouse-1> <mouse-1> <down-mouse-4> <mouse-4> <double-down-mouse-4>
<double-mouse-4> <triple-down-mouse-4> <triple-mouse-4>
<down-mouse-5> <mouse-5> <double-down-mouse-5> <double-mouse-5>
<down-mouse-5> <mouse-5> <down-mouse-5> <mouse-5> <double-down-mouse-5>
<double-mouse-5> <down-mouse-4> <mouse-4> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> M-x r e p o r t
- e m a b <backspace> c s - b u g <return>

Recent messages:
Auto-saving...done
Auto-saving...done
Auto-saving...done
Auto-saving...done
Auto-saving...done
Auto-saving...done
Auto-saving...done
Auto-saving...done
byte-code: Beginning of buffer [7 times]
Sending...done