[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs aborts in relinquish() during gc
From: |
Doug Maxey |
Subject: |
emacs aborts in relinquish() during gc |
Date: |
Tue, 05 Mar 2002 11:21:20 -0600 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1 |
--text follows this line--
This bug report will be sent to the Free Software Foundation,
not to your local site managers!
Please write in English, because the Emacs maintainers do not have
translators to read other languages for them.
Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,
and to the gnu.emacs.bug news group.
In GNU Emacs 21.1.1 (powerpc-ibm-aix4.3.2.0, Motif Version 2.1.0)
of 2001-11-16 on falcon10.austin.ibm.com
configured using `configure --without-gcc
--x-includes=/usr/lpp/X11/include --x-libraries=/usr/lpp/X11/lib/R6
--with-x-toolkit=motif --with-x'
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: C
locale-coding-system: iso-latin-1
default-enable-multibyte-characters: nil
Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:
It appears that something is going wrong during garbage collection,
causing relinquish() to abort.
Attached is a stack dump from dbx, along with a little more info on
some variables. This is a regular occurrence, especially with
multiple windows(frames) open on several different files.
It usually occurs when emacs is sitting idle, and there does not
appear to be a significant event that triggers this.
One other point, this is occurring on a 32 bit machine with 12 gig of
memory, although I have seen similar occurrences on a 32 bit machine
with 756 meg.
---------
Script started on Wed Feb 27 14:16:26 2002sh-2.04
$ dbx emacs core-2002-02-27-sitting-idle
Type 'help' for help.
reading symbolic information ...
[using memory image in core-2002-02-27-sitting-idle]
IOT/Abort trap in fatal_error_signal at line 354 in file "emacs.c" ($t1)
354 kill (getpid (), fatal_error_code);
(dbx) t
fatal_error_signal(sig = 6), line 354 in "emacs.c"
emacs.abort(), line 387 in "emacs.c"
relinquish(), line 353 in "ralloc.c"
r_alloc_sbrk(0xffeb2000), line 932 in "ralloc.c"
unnamed block $b2664, line 1134 in "gmalloc.c"
unnamed block $b2662, line 1134 in "gmalloc.c"
_free_internal(0x21952000), line 1134 in "gmalloc.c"
free(0x21952000), line 1229 in "gmalloc.c"
_free_internal(0x21952c00), line 1182 in "gmalloc.c"
free(0x21952c00), line 1229 in "gmalloc.c"
emacs_blocked_free(0x21952c00), line 688 in "alloc.c"
free(0x21952c00), line 1227 in "gmalloc.c"
lisp_free(0x21952c00), line 630 in "alloc.c"
unnamed block $b1929, line 5016 in "alloc.c"
unnamed block $b1928, line 5016 in "alloc.c"
gc_sweep(), line 5016 in "alloc.c"
Fgarbage_collect(), line 4189 in "alloc.c"
unnamed block $b1260, line 2505 in "keyboard.c"
unnamed block $b1259, line 2505 in "keyboard.c"
read_char(0x1, 0x3, 0x2ff209f0, 0x101a4c04, 0x2ff20a9c), line 2505 in
"keyboard.c"
unnamed block $b1167, line 8180 in "keyboard.c"
unnamed block $b1166, line 8180 in "keyboard.c"
read_key_sequence(0x2ff20cf0, 0x1e, 0x101a4c04, 0x0, 0x1, 0x1), line
8180 in "keyboard.c"
command_loop_1(), line 1440 in "keyboard.c"
internal_condition_case(0x200d2320, 0x101c28c4, 0x200d2314), line 1267
in "eval.c"
command_loop_2(), line 1245 in "keyboard.c"
internal_catch(0x101b6ea4, 0x200d232c, 0x101a4c04), line 1030 in "eval.c"
command_loop(), line 1224 in "keyboard.c"
recursive_edit_1(), line 950 in "keyboard.c"
Frecursive_edit(), line 1006 in "keyboard.c"
main(argc = 1, argv = 0x2ff213e4, envp = 0x2ff213ec), line 1547 in "emacs.c"
(dbx) up 2
relinquish(), line 353 in "ralloc.c"
(dbx) dump
relinquish(), line 353 in "ralloc.c"
h = (nil)
excess = 1316552
(dbx) list relinquish
326
327 static void
328 relinquish ()
329 {
330 register heap_ptr h;
331 int excess = 0;
332
333 /* Add the amount of space beyond break_value
334 in all heaps which have extend beyond break_value at all. */
335
336 for (h = last_heap; h && break_value < h->end; h = h->prev)
(dbx) p last_heap
0x21a4d090
(dbx) l
337 {
338 excess += (char *) h->end - (char *) ((break_value <
h->bloc_start)
339 ? h->bloc_start : break_value);
340 }
341
342 if (excess > extra_bytes * 2 && (*real_morecore) (0) ==
last_heap->end)
343 {
344 /* Keep extra_bytes worth of empty space.
345 And don't free anything unless we can free at least
extra_bytes. */
346 excess -= extra_bytes;
(dbx) l
347
348 if ((char *)last_heap->end - (char *)last_heap->bloc_start
<= excess)
349 {
350 /* This heap should have no blocs in it. */
351 if (last_heap->first_bloc != NIL_BLOC
352 || last_heap->last_bloc != NIL_BLOC)
353 abort ();
354
355 /* Return the last heap, with its header, to the system. */
356 excess = (char *)last_heap->end - (char *)last_heap->start;
(dbx) p *last)\)/_heap
(next = (nil), prev = 0x2018f620, start = 0x21a4d090, end = 0x21ad4000,
bloc_start = 0x21a4d0b0, free = 0x21ac76b8, first_bloc = 0x2065f2a0,
last_bloc = 0x212d3680)
(dbx) p extra_bytes
53248
(dbx)
(dbx) q
sh-2.04$ exit
script done on Wed Feb 27 14:58:17 2002---------
Recent input:
<mouse-1> <mouse-1> <mouse-1> <down-mouse-1> <mouse-movement>
<mouse-1> C-s C-w C-s C-s C-s C-s C-s C-s C-s C-s C-s
C-s C-s C-s C-s <switch-frame> C-x b <return> M-x d
e s k t o p <tab> s a <tab> <return> <M-backspace>
<M-backspace> <M-backspace> <M-backspace> <M-backspace>
<M-backspace> <M-backspace> <M-backspace> <M-backspace>
<M-backspace> <M-backspace> <M-backspace> <M-backspace>
<M-backspace> <M-backspace> C-g C-g M-x M-p <return>
<M-backspace> <M-backspace> <M-backspace> <M-backspace>
<M-backspace> <M-backspace> <return> <switch-frame>
<help-echo> <switch-frame> <down-mouse-1> <mouse-movement>
<mouse-1> <help-echo> <switch-frame> <switch-frame>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<down-mouse-1> <mouse-1> M-x b u g - <tab> <backspace>
<backspace> <backspace> <backspace> r e p o r t <tab>
<tab> <return>
Recent messages:
Mark saved where search started
Mark set [2 times]
Auto-saving...done
Mark saved where search started
byte-code: Text is read-only: #<buffer *Minibuf-1*>
execute-extended-command: Quit
Quit
keyboard-quit: Quit
Loading emacsbug...done
- emacs aborts in relinquish() during gc,
Doug Maxey <=