[8623] in Athena Bugs
emacs crash on RS/6000
daemon@ATHENA.MIT.EDU (John Carr)
Mon Nov 18 06:12:08 1991
To: bugs@Athena.MIT.EDU
Date: Mon, 18 Nov 91 06:12:13 EST
From: John Carr <jfc@Athena.MIT.EDU>
Here is more info on acevedo's mysterious emacs crashes. I built a version
of emacs with some debugging symbols, which he ran in dbx. The result:
segmentation violation in unnamed block $b33 at line 1377 in file "alloc.c"
couldn't read "alloc.c"
(dbx) where
unnamed block $b33, line 1377 in "alloc.c"
unnamed block $b32, line 1377 in "alloc.c"
unnamed block $b31, line 1377 in "alloc.c"
alloc.compact_strings.compact_strings(), line 1377 in "alloc.c"
alloc.gc_sweep(), line 1165 in "alloc.c"
Fgarbage_collect(), line 883 in "alloc.c"
Fbyte_code(0x830e0f44, 0x840ef508, 0x1c, 0x2b, 0x2002fc18, 0x2ff7e01c, 0x2ff7e470, 0xffffef28) at 0x100a5718
Feval(form = 84852588, 0x200ebcac, 0x32adbac, 0x2b, 0x2b, 0x2b, 0x2ff7e470, 0xffffef28), line 1460 in "eval.c"
Fprogn(args = 721), line 306 in "eval.c"
funcall_lambda(fun = 537170424, nargs = 537170408, arg_vector = 0x2ff7e158), line 1890 in "eval.c"
Ffuncall(nargs = 0, args = (nil)), line 1779 in "eval.c"
Fbyte_code(0x830e0ee4, 0x840ec708, 0xa, 0x202e656e, 0x2002fc18, 0x2ff7e52c, 0x0, 0x70c5f0d) at 0x100a562c
Feval(form = 84852524, 0x200ebe3c, 0x32ad7b4, 0x202e656e, 0x7669726f, 0x6e6d656e, 0x0, 0x70c5f0d), line 1460 in "eval.c"
Fprogn(args = 0), line 306 in "eval.c"
funcall_lambda(fun = 0, nargs = 0, arg_vector = (nil)), line 1890 in "eval.c"
Ffuncall(nargs = 288, args = 0x32ad7b4), line 1779 in "eval.c"
call2(fn = 17755024, arg = 202297096, arg1 = 53139380, 0x202e656e, 0x7669726f, 0x6e6d656e, 0x743f0d0a, 0x70c5f0d), line 1625 in "eval.c"
read_process_output(proc = 804777348, channel = 537078164), line 1869 in "process.c"
wait_reading_process_input(time_limit = 804778152, read_kbd = 537171472, do_display = 268963640), line 1713 in "process.c"
kbd_buffer_read_command_char(), line 1157 in "keyboard.c"
read_command_char(commandflag = 268665520), line 1050 in "keyboard.c"
read_key_sequence(keybuf = (invalid char ptr (0x105342c)), bufsize = -1, prompt = "^A^E4^D", nodisplay = 537170640), line 1510 in "keyboard.c"
command_loop_1(), line 659 in "keyboard.c"
internal_condition_case(bfun = 0x2ff7f5f8, handlers = 0, hfun = 0x10080f38), line 1013 in "eval.c"
command_loop_2(), line 531 in "keyboard.c"
internal_catch(tag = 2, func = 0xdeadbeef, arg = 537168400), line 817 in "eval.c"
command_loop(), line 513 in "keyboard.c"
recursive_edit_1(), line 398 in "keyboard.c"
Frecursive_edit(), line 380 in "keyboard.c"
main(0xaf6f6c62, 0xff4, 0x2f372e31) at 0x10016860
(dbx)
eval.c was compiled with -O -g, so line numbers and function arguments may
not be exact. alloc.c was compiled with only -g.
Line 1377 is in this block of code:
1372 /* It is marked, so its size field is really a chain of refs.
1373 Find the end of the chain, where the actual size lives. */
1374 while ((unsigned) size > STRING_BLOCK_SIZE)
1375 {
1376 if (size & 1) size ^= MARKBIT | 1;
1377 size = *(int *)size & ~MARKBIT;
1378 }
1379