Subject: bug#3620: Color-theme related crash in Emacs 23 fixed in Aquamacs

From: Väinö Järvelä <[email-masked]>
Date: Fri, 19 Jun 2009 17:51:04 +0300

Hi,

I have pinpointed a crash in the newest Emacs from version control
(git 6baef44). This crash has been reproduced on two of my computers.
It was random previously, but now that I rewrote my Emacs environment
and updated some packages it always crashes.

To reproduce the crash, compile Emacs from the commit above
(--with-ns), and get the following packages:

color-theme
    http://mirrors.zerg.biz/nongnu/color-theme/color-theme-6.6.0.tar.gz
zenburn
    http://www.brockman.se/software/zenburn/zenburn.el (MD5
cebc7d27f3ff6415260c49bf3655f332)

Then load the color-theme library and eval the following lines:
    (require 'color-theme)
    (color-theme-initialize)
    (load-library "zenburn")
    (zenburn)

This will result in an immediate crash with the following traceback
(sorry about not having a proper coredump):

Process:         Emacs [75779]
Path:
/Users/Kaali/Devel/Projects/emacs/nextstep/Emacs.app/Contents/MacOS/Emacs
Identifier:      org.gnu.Emacs
Version:         Version 23.0.94 (9.0)
Code Type:       X86 (Native)
Parent Process:  bash [5017]

Date/Time:       2009-06-19 17:30:59.663 +0300
OS Version:      Mac OS X 10.5.7 (9J61)

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000f8892916
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib             	0x96c3be42 __kill + 10
1   org.gnu.Emacs                 	0x000c3a25 fatal_error_signal + 446
(emacs.c:404)
2   libSystem.B.dylib             	0x96c3a2bb _sigtramp + 43
3   ???                           	0xffffffff 0 + 4294967295
4   libSystem.B.dylib             	0x96cae23a raise + 26
5   libSystem.B.dylib             	0x96cba679 abort + 73
6   org.gnu.Emacs                 	0x001f45ed ns_term_shutdown + 118
(nsterm.m:4015)
7   org.gnu.Emacs                 	0x000c625c shut_down_emacs + 282
(emacs.c:2259)
8   org.gnu.Emacs                 	0x000c39c2 fatal_error_signal + 347
(emacs.c:397)
9   libSystem.B.dylib             	0x96c3a2bb _sigtramp + 43
10  ???                           	0xffffffff 0 + 4294967295
11  org.gnu.Emacs                 	0x001f160e ns_draw_glyph_string +
800 (nsterm.m:3058)
12  org.gnu.Emacs                 	0x0004e180 draw_glyphs + 11031
(xdisp.c:20545)
13  org.gnu.Emacs                 	0x00054399 draw_phys_cursor_glyph +
133 (xdisp.c:22495)
14  org.gnu.Emacs                 	0x00054a12 erase_phys_cursor + 1310
(xdisp.c:22631)
15  org.gnu.Emacs                 	0x00054bab display_and_set_cursor +
376 (xdisp.c:22704)
16  org.gnu.Emacs                 	0x00054cc8 update_window_cursor +
124 (xdisp.c:22741)
17  org.gnu.Emacs                 	0x00054db3
update_cursor_in_window_tree + 132 (xdisp.c:22763)
18  org.gnu.Emacs                 	0x00054e12 x_update_cursor + 32
(xdisp.c:22778)
19  org.gnu.Emacs                 	0x001fe1c3 x_set_cursor_color + 188
(nsfns.m:417)
20  org.gnu.Emacs                 	0x00016dc2 x_set_frame_parameters +
1516 (frame.c:3023)
21  org.gnu.Emacs                 	0x00015cc5 Fmodify_frame_parameters
+ 155 (frame.c:2544)
22  org.gnu.Emacs                 	0x000bc495
Finternal_set_lisp_face_attribute + 5259 (xfaces.c:3482)
23  org.gnu.Emacs                 	0x00169903 Ffuncall + 1295 (eval.c:3055)
24  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
25  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
26  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
27  org.gnu.Emacs                 	0x00168e80 Fapply + 705 (eval.c:2533)
28  org.gnu.Emacs                 	0x00169715 Ffuncall + 801 (eval.c:3026)
29  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
30  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
31  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
32  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
33  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
34  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
35  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
36  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
37  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
38  org.gnu.Emacs                 	0x00169324 call1 + 32 (eval.c:2830)
39  org.gnu.Emacs                 	0x000bc68d
update_face_from_frame_parameter + 226 (xfaces.c:3552)
40  org.gnu.Emacs                 	0x001fe0e6 x_set_background_color +
609 (nsfns.m:394)
41  org.gnu.Emacs                 	0x00016b96 x_set_frame_parameters +
960 (frame.c:2980)
42  org.gnu.Emacs                 	0x00015cc5 Fmodify_frame_parameters
+ 155 (frame.c:2544)
43  org.gnu.Emacs                 	0x000bc495
Finternal_set_lisp_face_attribute + 5259 (xfaces.c:3482)
44  org.gnu.Emacs                 	0x00169903 Ffuncall + 1295 (eval.c:3055)
45  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
46  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
47  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
48  org.gnu.Emacs                 	0x00168e80 Fapply + 705 (eval.c:2533)
49  org.gnu.Emacs                 	0x00169715 Ffuncall + 801 (eval.c:3026)
50  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
51  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
52  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
53  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
54  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
55  org.gnu.Emacs                 	0x00169b25 Ffuncall + 1841 (eval.c:3091)
56  org.gnu.Emacs                 	0x001b9df9 Fbyte_code + 3136 (bytecode.c:678)
57  org.gnu.Emacs                 	0x0016a144 funcall_lambda + 873 (eval.c:3232)
58  org.gnu.Emacs                 	0x00169d74 apply_lambda + 262 (eval.c:3156)
59  org.gnu.Emacs                 	0x00168a33 Feval + 2073 (eval.c:2418)
60  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
61  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
62  org.gnu.Emacs                 	0x00166b38
internal_lisp_condition_case + 555 (eval.c:1457)
63  org.gnu.Emacs                 	0x00166907 Fcondition_case + 80 (eval.c:1399)
64  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
65  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
66  org.gnu.Emacs                 	0x00164bbf Fif + 107 (eval.c:399)
67  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
68  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
69  org.gnu.Emacs                 	0x00166188 Flet + 662 (eval.c:1090)
70  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
71  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
72  org.gnu.Emacs                 	0x00166294 Fwhile + 242 (eval.c:1109)
73  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
74  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
75  org.gnu.Emacs                 	0x00166188 Flet + 662 (eval.c:1090)
76  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
77  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
78  org.gnu.Emacs                 	0x00166631 internal_catch + 215 (eval.c:1248)
79  org.gnu.Emacs                 	0x00166553 Fcatch + 68 (eval.c:1217)
80  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
81  org.gnu.Emacs                 	0x001686dc Feval + 1218 (eval.c:2361)
82  org.gnu.Emacs                 	0x00168b0d Feval + 2291 (eval.c:2434)
83  org.gnu.Emacs                 	0x00168b0d Feval + 2291 (eval.c:2434)
84  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
85  org.gnu.Emacs                 	0x00166188 Flet + 662 (eval.c:1090)
86  org.gnu.Emacs                 	0x0016857c Feval + 866 (eval.c:2323)
87  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
88  org.gnu.Emacs                 	0x0016a0f8 funcall_lambda + 797 (eval.c:3225)
89  org.gnu.Emacs                 	0x00169d74 apply_lambda + 262 (eval.c:3156)
90  org.gnu.Emacs                 	0x00168b3e Feval + 2340 (eval.c:2436)
91  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
92  org.gnu.Emacs                 	0x0016a0f8 funcall_lambda + 797 (eval.c:3225)
93  org.gnu.Emacs                 	0x00169d74 apply_lambda + 262 (eval.c:3156)
94  org.gnu.Emacs                 	0x00168b3e Feval + 2340 (eval.c:2436)
95  org.gnu.Emacs                 	0x00164c97 Fprogn + 44 (eval.c:450)
96  org.gnu.Emacs                 	0x0016a0f8 funcall_lambda + 797 (eval.c:3225)
97  org.gnu.Emacs                 	0x00169d74 apply_lambda + 262 (eval.c:3156)
98  org.gnu.Emacs                 	0x00168b3e Feval + 2340 (eval.c:2436)
99  org.gnu.Emacs                 	0x00194f4c readevalloop + 1459 (lread.c:1785)
100 org.gnu.Emacs                 	0x00195313 Feval_region + 271 (lread.c:1885)
101 org.gnu.Emacs                 	0x00169903 Ffuncall + 1295 (eval.c:3055)
102 org.gnu.Emacs                 	0x001641a2 Fcall_interactively +
8801 (callint.c:868)
103 org.gnu.Emacs                 	0x001698b8 Ffuncall + 1220 (eval.c:3051)
104 org.gnu.Emacs                 	0x00169374 call3 + 32 (eval.c:2875)
105 org.gnu.Emacs                 	0x000dadfc Fcommand_execute + 792
(keyboard.c:10449)
106 org.gnu.Emacs                 	0x000db21d
Fexecute_extended_command + 1029 (keyboard.c:10562)
107 org.gnu.Emacs                 	0x0016985e Ffuncall + 1130 (eval.c:3045)
108 org.gnu.Emacs                 	0x001641a2 Fcall_interactively +
8801 (callint.c:868)
109 org.gnu.Emacs                 	0x001698b8 Ffuncall + 1220 (eval.c:3051)
110 org.gnu.Emacs                 	0x00169374 call3 + 32 (eval.c:2875)
111 org.gnu.Emacs                 	0x000dadfc Fcommand_execute + 792
(keyboard.c:10449)
112 org.gnu.Emacs                 	0x000ca205 command_loop_1 + 7615
(keyboard.c:1909)
113 org.gnu.Emacs                 	0x00166ca0 internal_condition_case
+ 304 (eval.c:1512)
114 org.gnu.Emacs                 	0x000c8076 command_loop_2 + 53
(keyboard.c:1359)
115 org.gnu.Emacs                 	0x00166631 internal_catch + 215 (eval.c:1248)
116 org.gnu.Emacs                 	0x000c7fff command_loop + 207
(keyboard.c:1339)
117 org.gnu.Emacs                 	0x000c75d3 recursive_edit_1 + 181
(keyboard.c:953)
118 org.gnu.Emacs                 	0x000c77dc Frecursive_edit + 323
(keyboard.c:1016)
119 org.gnu.Emacs                 	0x000c5ae4 main + 6412 (emacs.c:1854)
120 org.gnu.Emacs                 	0x00002faa start + 54

Thread 0 crashed with X86 Thread State (32-bit):
  eax: 0x00000000  ebx: 0x000c3874  ecx: 0xbfff9b1c  edx: 0x96c3be42
  edi: 0x000bb00a  esi: 0x00000006  ebp: 0xbfff9b38  esp: 0xbfff9b1c
   ss: 0x0000001f  efl: 0x00000282  eip: 0x96c3be42   cs: 0x00000007
   ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
  cr2: 0x003ea040

The same bug is fixed in Aquamacs, as applying a commit from there
removes the crash. The commit is 82f7177 in
git://github.com/davidswelt/aquamacs-emacs.git

It applies cleanly to the emacs commit listed above.

Regards,
-- 
Väinö Järvelä