git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [BUG] Out of memory in Git.pm
@ 2011-03-02 13:01 Robert Wruck
  2011-03-03  8:37 ` Alexander Miseler
  0 siblings, 1 reply; 2+ messages in thread
From: Robert Wruck @ 2011-03-02 13:01 UTC (permalink / raw
  To: git

Hi,

there seems to be a problem in Git.pm (git-1.7.4.1, sub cat_blob, line 
891) where the whole object is read into memory ($blob) before writing 
to $fh:

	my $blob;
	my $bytesRead = 0;

	while (1) {
		my $bytesLeft = $size - $bytesRead;
		last unless $bytesLeft;

		my $bytesToRead = $bytesLeft < 1024 ? $bytesLeft : 1024;
		my $read = read($in, $blob, $bytesToRead, $bytesRead);
		unless (defined($read)) {
			$self->_close_cat_blob();
			throw Error::Simple("in pipe went bad");
		}

		$bytesRead += $read;
	}

Maybe it would be better to write each chunk directly to $fh ?
If so, I could create a patch.

-Robert

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [BUG] Out of memory in Git.pm
  2011-03-02 13:01 [BUG] Out of memory in Git.pm Robert Wruck
@ 2011-03-03  8:37 ` Alexander Miseler
  0 siblings, 0 replies; 2+ messages in thread
From: Alexander Miseler @ 2011-03-03  8:37 UTC (permalink / raw
  To: git

Robert Wruck <wruck <at> tweerlei.de> writes:
> there seems to be a problem in Git.pm (git-1.7.4.1, sub cat_blob, line 
> 891) where the whole object is read into memory ($blob) before writing 


There already seems to be a fix for this in 
git://repo.or.cz/git/mingw/4msysgit.git but I couldn't find the commit in 
git://git.kernel.org/pub/scm/git/git.git:

Author:		Gregor Uhlenheuer (kongo2002@googlemail.com)
Author date:	13 days ago (Fri Feb 18 11:42:12 2011 +0100)
Committer:	Johannes Schindelin (johannes.schindelin@gmx.de)
Commit date:	13 days ago (Fri Feb 18 17:09:08 2011 +0100)
Commit hash:	e91fdbabfe29b6e37f1bc582316a82f7784a0275


Git.pm: Use stream-like writing in cat_blob()

This commit fixes the issue with the handling of large files causing an
'Out of memory' perl exception. Instead of reading and writing the whole
blob at once now the blob is written in small pieces.

The problem was raised and discussed in this mail to the msysGit mailing
list: http://thread.gmane.org/gmane.comp.version-control.msysgit/12080

Signed-off-by: Gregor Uhlenheuer <kongo2002@googlemail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Contained in branches: devel
Contained in no tag

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-03-03  8:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-02 13:01 [BUG] Out of memory in Git.pm Robert Wruck
2011-03-03  8:37 ` Alexander Miseler

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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).