[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
max buffer size problem
From: |
joseph |
Subject: |
max buffer size problem |
Date: |
Tue, 7 Nov 2000 17:24:29 -0500 (EST) |
I recently experienced a maximum buffer size problem while reading email in
gnu emacs. Subsequently, I could not read any mail even after purging all
of the system mail file contents and sending one test mail message.
A straightforward change to the appropriate src/fileio.c error message
could have informed me of the need to purge the intermediate file created
for reading mail but not removed upon the error occurance. A suggested
change is given in the diff -c below. The paragraph labeled solution gives
a sample helpful message while the paragraph labeled problem gives the
current not so helpful message.
Changing the error message to help me recover from the problem quicker does
not entirely fix the problem. I work on a system with huge amounts of
resources (24 cpu's with 2GB RAM per cpu). It is a real defect for the
maximum buffer size to be less than a GB. I ought to have a convenient
means (e.g., a variable) to increase the default. I resorted to using
ed to view the mail file for potential problems. Trying to find the C-code
that controls this maximum lead me down a dark alley with no exit. Please
consider making this aspect more convenient.
Appropriate bug report data also follows below.
Joseph Patterson, josephpatterson@lucent.com
PS: It is much to hard to figure out how to save text messages that only
appear in
the minibuffer.
problem:
minibuffer displays message "Maximum buffer size exceeded"
solution:
minibuffer displays message "Maximum buffer size exceeded
/h18/mvvul/joseph/.newmail-joseph 225333183"
configure operands:
GNU=/usr1/gnu
EXEEMACSREV=emacs-20.7
SUNOS=sun56
JTPLIBX=/usr/openwin/lib
./configure sparc-sun-solaris2.6 --with-pop
--x-libraries=:/usr/openwin/lib:/lib:/usr/lib --prefix=/ --exec-prefix=//sun56
Gnu Emacs Version: Gnu Emacs 20.7.7 sparc-sun-solaris2.6, X toolkit
source code modifications: none for observing problem
text of files needed to reproduce problem:
{These are omitted b/c of outrageous size (>260MB).
Any mail inbox file exceeding maximum buffer size and a read mail file should
do.}
commands needed to reproduce problem:
^x^f ~/rmail
where ~/rmail is a file that has had the "set-rmail-inbox-list ~/rmail"
previously executed upon it while being visited in rmail mode
g
dribble file:
0x2000018 0x2000006rm <return>g 0x2000018 0x2000003
recommended source code revision:
*** src/fileio.c.old Tue Nov 7 15:33:51 2000
--- src/fileio.c.new Tue Nov 7 15:32:42 2000
***************
*** 3399,3405 ****
Lisp_Object p;
int total;
int not_regular = 0;
! unsigned char read_buf[READ_BUF_SIZE];
struct coding_system coding;
unsigned char buffer[1 << 14];
int replace_handled = 0;
--- 3399,3405 ----
Lisp_Object p;
int total;
int not_regular = 0;
! unsigned char read_buf[READ_BUF_SIZE],buff[1024];
struct coding_system coding;
unsigned char buffer[1 << 14];
int replace_handled = 0;
***************
*** 3517,3523 ****
{
XSETINT (end, st.st_size);
if (XINT (end) != st.st_size)
! error ("Maximum buffer size exceeded");
}
}
--- 3517,3523 ----
{
XSETINT (end, st.st_size);
if (XINT (end) != st.st_size)
! { sprintf(buff,"Maximum buffer size exceeded %s %d",XSTRING
(filename)->data, end); error(buff); }
}
}
***************
*** 3910,3916 ****
error ("IO error reading %s: %s",
XSTRING (orig_filename)->data, strerror (errno));
else if (how_much == -2)
! error ("maximum buffer size exceeded");
}
/* Compare the beginning of the converted file
--- 3910,3916 ----
error ("IO error reading %s: %s",
XSTRING (orig_filename)->data, strerror (errno));
else if (how_much == -2)
! { sprintf(buff,"Maximum buffer size exceeded %s %d",XSTRING
(filename)->data, end); error(buff); }
}
/* Compare the beginning of the converted file
***************
*** 4007,4013 ****
/* Make sure point-max won't overflow after this insertion. */
XSETINT (temp, total);
if (total != XINT (temp))
! error ("Maximum buffer size exceeded");
}
else
/* For a special file, all we can do is guess. */
--- 4007,4013 ----
/* Make sure point-max won't overflow after this insertion. */
XSETINT (temp, total);
if (total != XINT (temp))
! { sprintf(buff,"Maximum buffer size exceeded %s %d",XSTRING
(filename)->data, end); error(buff); }
}
else
/* For a special file, all we can do is guess. */
- max buffer size problem,
joseph <=