Subject: bug#17986: 24.3.92; Evaluating (setq default-directory nil) freezes Emacs

From: Stephen Berman <[email-masked]>
Date: Thu, 10 Jul 2014 14:27:30 +0200

0. Start Emacs with -Q or -Q -D
1. Type (setq default-directory nil) in *scratch* and evaluate it.
=> Emacs freezes uninterruptibly and uses up to 90% CPU; I have to kill
it from outside.

This happens in both emacs-24 and the trunk.  The C backtrace seems to
differ depending on how quickly I type `z' in gdb and whether I start
Emacs with -Q or with -Q -D.  If no one else can reproduce this, I can
supply backtraces.  So far, I've gotten as the only Lisp backtrace
"redisplay_internal (C function)" (twice with emacs-24 from July 7) and
(after updating to current sources) "command-error-default-function"
(twice with trunk, once with emacs-24).

I know that default-directory is documented as being a string, though
its global value is "nil" (and evaluating (setq-default
default-directory nil) is unproblematic).  Still, Emacs shouldn't just
freeze up.  FWIW, it hit this problem while testing code that sets
default-directory to the value of a variable, which in the course of
testing at one point happened to be nil.

In GNU Emacs 24.3.92.7 (x86_64-suse-linux-gnu, GTK+ Version 3.10.4)
 of 2014-07-10 on rosalinde
Repository revision: 117368 [email-masked]
Windowing system distributor `The X.Org Foundation', version 11.0.11403901
System Description:	openSUSE 13.1 (Bottle) (x86_64)

Configured using:
 `configure --without-toolkit-scroll-bars CFLAGS=-g3'

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Memory information:
((conses 16 363760 33883)
 (symbols 48 50640 0)
 (miscs 40 392 740)
 (strings 32 91952 9976)
 (string-bytes 1 3053626)
 (vectors 16 39068)
 (vector-slots 8 1553444 171631)
 (floats 8 853 677)
 (intervals 56 16382 141)
 (buffers 960 38)
 (heap 1024 52675 1862))