Subject: bug#3208: 23.0.93; Memory full / crash when displaying lots of characters from a large font (like Arial Unicode or Code2000) which is not explicitly selected (on Win32)

From: Michael Schierl <[email-masked]>
Date: Mon, 04 May 2009 20:26:08 +0200

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

- It is easier if you have one of the fonts Code2000 or Arial Unicode
  installed. I tried it with fonts that come with Windows XP (like
  Lucida Sans Unicode) but did not succeed in reproducing the bug.
  It might happen with other fonts as well, most likely ones that have
  lots of glyphs.
- You need to know a character that is in your font but not in the
  default font (0x2203 works for both Arial Unicode and Code2000, 0x2202
  would work for Lucida Sans Unicode, 0xFFFD works for Arial Unicode).
- Start emacs -Q
- Insert a few thousand characters of that kind, and move to the
  beginning and to the end of the buffer repeatedly. At first you
  receive warnings like "Emergency (alloc): Warning: past 95% of memory
  limit", then the memory is exhausted, and if you still go on, you will
  be asked if you want to debug Emacs. This is perfectly reproducable
  for me, both on my main machine and on a freshly installed WinXP
  virtual machine where I only added Emacs and one of the fonts.

You can use code like this to insert the characters:

 like (let ((str (char-to-string (decode-char 'ucs #x2203))))
  (dotimes (i 16)
    (setq str (concat str str)))
  (insert str)
  (goto-char (point-min))
  (goto-char (point-max))
  (goto-char (point-min))
  (goto-char (point-max))
  (goto-char (point-min))
  (goto-char (point-max)))

In GNU Emacs 23.0.93.1 (i386-mingw-nt5.1.2600)
 of 2009-05-02 on SOFT-MJASON
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4)'

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: DEU
  value of $XMODIFIERS: nil
  locale-coding-system: cp1252
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

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
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-y C-x C-e M-x r e p o r t - e m a <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
65903