emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RMAIL slows


From: Robert J. Chassell
Subject: Re: RMAIL slows
Date: Wed, 4 May 2005 07:31:01 -0400 (EDT)

[After running the same RMAIL for several days, deletions slow; but
not immediately.  Using the `emacs/src/emacs' executable of 2005 Mar
30.]

    ... figure out which [function] it is.

Well, I am not 100% sure which function causes the problem, since
sometimes GDB stops in some other function, but the most common
`xbacktrace' shows:

    "rmail-clear-headers"
    "rmail-reformat-message"
    "rmail-show-message"
    "rmail-summary-goto-msg"
    "rmail-summary-delete-forward"
    "call-interactively"

and  `bt' shows

#0  0x0813ecf9 in adjust_markers_for_delete (from=2643804, from_byte=2643804, 
to=2643822, to_byte=2643822) at insdel.c:353
#1  0x0814113b in del_range_2 (from=2643804, from_byte=2643804, to=2643822, 
to_byte=2643822, ret_string=0) at insdel.c:1946
#2  0x08140d94 in del_range_1 (from=2643804, to=2643822, prepare=1, 
ret_string=461697) at insdel.c:1813
#3  0x08140d07 in del_range (from=141387496, to=141387496) at insdel.c:1780
#4  0x0817a7f0 in Fdelete_region (start=21150432, end=21150576) at 
editfns.c:2937

I put a breakpoint in `adjust_markers_for_delete' and looped at least 8
times.

I tried looking at the items around the breakpoint, insdel.c:353,
which is at

    if (charpos > Z)

Evidentally both charpos and Z are defined in src/buffer.h.  Z is the end
of the buffer and is not exceeded.

charpos is the marker.

The test is part of a loop testing various conditions, the first of
which is whether the position exceeds the end of the buffer.

  for (m = BUF_MARKERS (current_buffer); m; m = m->next)


In `struct buffer_text' in src/buffer.h, charpos is defined on line 346 as

    /* The markers that refer to this buffer.
       This is actually a single marker ---
       successive elements in its marker `chain'
       are the other markers referring to this buffer.  */
    struct Lisp_Marker *markers;

so it looks to me that a long list of markers accumulates over time.

But I do not know enough.  I may be quite wrong about all of this.

-- 
    Robert J. Chassell                         
    address@hidden                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc




reply via email to

[Prev in Thread] Current Thread [Next in Thread]