Subject: bug#4582: crash during buffer scrolling - trace available

From: Marc Dürner <[email-masked]>
Date: Mon, 28 Sep 2009 18:45:22 +0200

Hello,

I have built emacs 23.1 for AIX/PowerPC using the xlc compiler (config.log
is available) using the lucid toolkit. Emacs crashes sometimes when I try to
scroll in a buffer or modify the buffer. The crash occurs about one or two
times per week.

I have included a trace from dbx inspecting the core file. It seems to have
to do with garbage collection or memory management. My guess is that garbage
collection is performed during buffer scrolling. The binary was built with
-g and -O2 using xlc_r. I have tried for a week to reproduce a crash with an
unoptimized build, but was not successful, so the trace below is the best I
can provide for now.

When I compiled emacs I get warnings about alloca. I also tried to build
emacs with gcc, but it crashes in the same way.

The following crash happens sometimes when I try to scroll in a buffer:

IOT/Abort trap in fatal_error_signal at line 403 in file ""
couldn't read "emacs.c"
(dbx) where
fatal_error_signal(sig = 538249088), line 403 in "emacs.c"
emacs.abort(), line 432 in "emacs.c"
Fsignal(error_symbol = 550856640, data = 538298528), line 1652 in "eval.c"
xsignal(error_symbol = 270962724, data = 20439), line 1751 in "eval.c"
xsignal1(error_symbol = 538291456, arg = 538293456), line 1768 in "eval.c"
compile_pattern_1(cp = 0x2ff20ab0, pattern = 20439, translate = 549181824,
regp = 0x00000004, posix = 540852040), line 179 in "search.c"
compile_pattern(pattern = 269324080, regp = (nil), translate = 804386800,
posix = 543383040, multibyte = 269324080), line 266 in "search.c"
fast_string_match(regexp = 538291456, string = 538293456), line 507 in
"search.c"
Ffind_file_name_handler(filename = 538291456, operation = 538293456), line
382 in "fileio.c"
Fexpand_file_name(name = 1623917056, default_directory = -1606969344), line
862 in "fileio.c"
Fdo_auto_save(no_message = 0, current_only = -2133330944), line 5235 in
"fileio.c"
shut_down_emacs(sig = 538291456, no_x = 538293456, stuff = 540398608), line
2216 in "emacs.c"
fatal_error_signal(sig = 0), line 389 in "emacs.c"
mark_object(arg = 538291456), line 5650 in "alloc.c"
traverse_intervals_noorder(tree = (nil), function = 0x40000000, arg =
804388752), line 216 in "intervals.c"
traverse_intervals_noorder(tree = 0x20150780, function = 0x20150764, arg =
1073758208), line 221 in "intervals.c"
mark_interval_tree(tree = 0x2015ad00), line 1524 in "alloc.c"
mark_object(arg = 540115424), line 5554 in "alloc.c"
mark_object(arg = 0), line 5549 in "alloc.c"
unnamed block in Fgarbage_collect(), line 5109 in "alloc.c"
Fgarbage_collect(), line 5109 in "alloc.c"
Fbyte_code(bytestr = 9, vector = 540514352, maxdepth = 1127219200), line 527
in "bytecode.c"
funcall_lambda(fun = 537672800, nargs = -2146681760, arg_vector =
0x2ff203c0), line 3232 in "eval.c"
apply_lambda(fun = -2146761924, args = 540514304, eval_flag = 1), line 3156
in "eval.c"
Feval(form = -1602180136), line 2418 in "eval.c"
internal_condition_case_1(bfun = 0x20155194, arg = -1602180136, handlers =
540582032, hfun = 0x201551a0), line 1560 in "eval.c"
menu_item_eval_property(sexpr = 544948944), line 7783 in "keyboard.c"
parse_tool_bar_item(key = 270477396, item = -1596107872), line 8478 in
"keyboard.c"
process_tool_bar_item(key = 540705056, def = -1596468104, data = 540514304,
args = (nil)), line 8300 in "keyboard.c"
map_keymap_item(fun = (nil), args = 1, key = 804391104, val = 1, data =
0x101f69a8), line 643 in "keymap.c"
map_keymap_internal(map = -1596107872, fun = 0x201553b0, args = 540514304,
data = (nil)), line 681 in "keymap.c"
map_keymap(map = -1596107872, fun = 0x201553b0, args = 540514304, data =
(nil), autoload = 1), line 728 in "keymap.c"
tool_bar_items(reuse = -2132707328, nitems = 0x60b92490), line 8257 in
"keyboard.c"
unnamed block in update_tool_bar(f = 0x2088a200, save_match_data =
538293456), line 9936 in "xdisp.c"
unnamed block in update_tool_bar(f = 0x2088a200, save_match_data =
538293456), line 9936 in "xdisp.c"
update_tool_bar(f = 0x2088a200, save_match_data = 538293456), line 9936 in
"xdisp.c"
unnamed block in prepare_menu_bars(), line 9631 in "xdisp.c"
unnamed block in prepare_menu_bars(), line 9631 in "xdisp.c"
prepare_menu_bars(), line 9631 in "xdisp.c"
redisplay_internal(preserve_echo_area = 538293456), line 11475 in "xdisp.c"
redisplay(), line 11050 in "xdisp.c"
unnamed block in read_char(commandflag = 1, nmaps = 4, maps = 0x2ff217c0,
prev_event = 540514304, used_mouse_menu = 0x2ff2182c, end_time = (nil)),
line 2707 in "keyboard.c"
read_char(commandflag = 1, nmaps = 4, maps = 0x2ff217c0, prev_event =
540514304, used_mouse_menu = 0x2ff2182c, end_time = (nil)), line 2707 in
"keyboard.c"
unnamed block in read_key_sequence(keybuf = 0x00000002, bufsize = 540514304,
prompt = 540514304, dont_downcase_last = 540514304, can_return_switch_frame
= 546349624, fix_current_buffer = 0), line 9460 in "keyboard.c"
unnamed block in read_key_sequence(keybuf = 0x00000002, bufsize = 540514304,
prompt = 540514304, dont_downcase_last = 540514304, can_return_switch_frame
= 546349624, fix_current_buffer = 0), line 9460 in "keyboard.c"
unnamed block in read_key_sequence(keybuf = 0x00000002, bufsize = 540514304,
prompt = 540514304, dont_downcase_last = 540514304, can_return_switch_frame
= 546349624, fix_current_buffer = 0), line 9460 in "keyboard.c"
unnamed block in read_key_sequence(keybuf = 0x00000002, bufsize = 540514304,
prompt = 540514304, dont_downcase_last = 540514304, can_return_switch_frame
= 546349624, fix_current_buffer = 0), line 9460 in "keyboard.c"
read_key_sequence(keybuf = 0x00000002, bufsize = 540514304, prompt =
540514304, dont_downcase_last = 540514304, can_return_switch_frame =
546349624, fix_current_buffer = 0), line 9460 in "keyboard.c"
command_loop_1(), line 1642 in "keyboard.c"
internal_condition_case(bfun = 0x20155164, handlers = 540582032, hfun =
0x20155158), line 1512 in "eval.c"
command_loop_2(), line 1359 in "keyboard.c"
internal_catch(tag = 268986704, func = 0x2015517c, arg = 540514304), line
1248 in "eval.c"
keyboard.command_loop(), line 1338 in "keyboard.c"
recursive_edit_1(), line 953 in "keyboard.c"
Frecursive_edit(), line 1015 in "keyboard.c"
main(argc = 0, argv = (nil)), line 1852 in "emacs.c"

regards,
Marc