git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nicolas Pitre <nico@cam.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michal Rokos <michal.rokos@gmail.com>, GIT <git@vger.kernel.org>
Subject: Re: index-pack died on pread
Date: Mon, 23 Jul 2007 14:03:45 -0400 (EDT)	[thread overview]
Message-ID: <alpine.LFD.0.999.0707231349160.6355@xanadu.home> (raw)
In-Reply-To: <alpine.LFD.0.999.0707230956390.3607@woody.linux-foundation.org>

On Mon, 23 Jul 2007, Linus Torvalds wrote:

> 
> 
> On Mon, 23 Jul 2007, Michal Rokos wrote:
> >
> > fatal: cannot pread pack file: No such file or directory (n=0,
> > errno=2, fd=3, ptr=40452958, len=428, rdy=0, off=123601)
> 
> Ok, that's bogus. When "n" is zero, the errno (and thus the error string) 
> is not changed by pread, so that's a very misleading error report.
> 
> So what seems to have happened is that the pack-file is too short, so we 
> got a return value of 0, and then reported it as if it had an errno.
> 
> The reason for returning zero from pread would be:
> 
>  - broken pread. I don't think HPUX should be a problem, so that's 
>    probably not it.
> 
>  - the pack-file got truncated
> 
>  - the offset is corrupt, and points to beyond the size of the packfile.
> 
> In this case, since the offset is just 123601, I suspect it's a truncation 
> issue, and your pack-file is simply corrupt. Either because of some 
> problem with receiving it, or because of problems on the remote side.

I doubt it can be that.  pread() is always used on pack data that we 
already received and validated, and part of the validation is the final 
pack SHA1.  No code path leads to pread() before the final pack SHA1 is 
tested OK.

The only way for the received pack to be truncated and pread() to fail 
is if write_or_die() somehow failed to write the pack data without Git 
noticing.


Nicolas

  reply	other threads:[~2007-07-23 18:04 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-23 12:52 index-pack died on pread Michal Rokos
2007-07-23 15:32 ` Alex Riesen
2007-07-25 20:07   ` Michal Rokos
2007-07-25 20:48     ` Alex Riesen
2007-07-23 17:04 ` Linus Torvalds
2007-07-23 18:03   ` Nicolas Pitre [this message]
2007-07-25 23:15   ` Robin Rosenberg
2007-07-25 23:44     ` Linus Torvalds
2007-07-26 12:42       ` Alex Riesen
2007-07-26 16:13         ` Linus Torvalds
2007-07-26 16:51           ` Alex Riesen
2007-07-26 18:02             ` Linus Torvalds
2007-07-27  3:43           ` Junio C Hamano
2007-07-27  5:36             ` Linus Torvalds
2007-07-27  9:50               ` Tomash Brechko
2007-07-27 10:33                 ` Tomash Brechko
2007-07-27 13:38               ` Nicolas Pitre

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

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

  git send-email \
    --in-reply-to=alpine.LFD.0.999.0707231349160.6355@xanadu.home \
    --to=nico@cam.org \
    --cc=git@vger.kernel.org \
    --cc=michal.rokos@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /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 NNTP newsgroup(s).