unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Christoph Groth <christoph@grothesque.org>
To: Ruijie Yu <ruijie@netyu.xyz>
Cc: "Óscar Fuentes" <ofv@wanadoo.es>, help-gnu-emacs@gnu.org
Subject: Re: Emacs opens only first 16384 bytes of file?!
Date: Sun, 12 Feb 2023 10:58:14 +0100	[thread overview]
Message-ID: <87cz6ftdc9.fsf@drac> (raw)
In-Reply-To: <sdv357bo1ak.fsf@fw.net.yu> (Ruijie Yu's message of "Sun, 12 Feb 2023 13:56:48 +0800")

Ruijie Yu wrote:
> Óscar Fuentes <ofv@wanadoo.es> writes:
>
> > [...]
> > As of today (Emacs 30, current development branch) the same is true.
> >
> > /proc/cpuinfo is not a regular file, in the sense that its content
> > is not stored in a device. AFAIK it is generated on-the-fly when it
> > is read.
> >
> > You can do some simple observations:
> >
> > $ ls -l /proc/cpuinfo
> > -r--r--r-- 1 root root 0 feb  7 03:34 /proc/cpuinfo
> > $ du /proc/cpuinfo
> > 0       /proc/cpuinfo
> >
> > Here those tools are saying that the file's size is 0.
>
> Thanks for elaborating on the part that I missed.  So, to reproduce
> the issue, we need to find a file which does not show size, and whose
> contents are generated on-the-fly when read -- in the original report,
> it is /proc/cpuinfo, and I have also found /proc/kallsyms which
> contains around 12M of data.  In this case, I have reproduced the
> issue on my Emacs 29 build.

Yes, that’s it, thanks for examining this further!

> > I guess that Emacs detects that the file is special and reads its
> > contents following some heuristics. What surprises me is that M-x
> > revert-file actually reads all the content.
> >
> > Of course, looking at the sources would be enlightening, but why do the
> > effort of actually clearing the matter when it is so cheap to throw
> > speculation? ;-)
>
> I think the limit of 16384 is probably caused by fileio.c:3919
> (907fd1f7ff4 somewhere on master, inside DEFUN "insert-file-contents")
> which declares a read buffer.  The constant READ_BUF_SIZE is
> indirectly set as 16 * 1024 = 16384.  Didn't read further there, nor
> inside `revert-buffer'.

Indeed this seems to be related to the advertised file size being zero.

However, no other programs (including editors) seem to have a problem
with this.  So it really must be Emacs trying to be clever.

Finding files under /proc/ is, of course, not a very relevant
application of Emacs, but Elisp code gets posted that relies on this:
https://nullprogram.com/blog/2015/10/14/

I had something similar in my init.el to determine the value to use with
"make -j" as a default compile command - this is how I noticed this
issue in the first place.  (Now I changed that to executing the command
nproc.)

What worries me more is that there may be other, more sneaky, cases
where this backfires.  For example, perhaps opening a file that is being
written (so that its size increases), is broken as well in some cases?

Should I report this to bug-gnu-emacs@gnu.org, or is posting on this
list enough?  Or should I open a ticket with debbugs.gnu.org?

Cheers
Christoph



  reply	other threads:[~2023-02-12  9:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-11 21:16 Emacs opens only first 16384 bytes of file?! Christoph Groth
2023-02-12  3:55 ` Ruijie Yu via Users list for the GNU Emacs text editor
2023-02-12  4:55 ` Óscar Fuentes
2023-02-12  5:56   ` Ruijie Yu via Users list for the GNU Emacs text editor
2023-02-12  9:58     ` Christoph Groth [this message]
2023-02-12 11:45       ` Eli Zaretskii
2023-02-12  6:02 ` Eli Zaretskii
2023-02-12  7:11   ` tomas
2023-02-12  7:33     ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2023-02-13  7:59 Christoph Groth
2023-02-13 13:06 ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87cz6ftdc9.fsf@drac \
    --to=christoph@grothesque.org \
    --cc=help-gnu-emacs@gnu.org \
    --cc=ofv@wanadoo.es \
    --cc=ruijie@netyu.xyz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).