error: Use of uninitialized value $hash in chomp

4 messages, 2 authors, 2019-01-08 · open the first message on its own page

error: Use of uninitialized value $hash in chomp

From: Andrew Shearer <hidden>
Date: 2018-12-19 02:42:50

Hello

I am using a "git svn clone" command to extract our project history from svn into git.
About 30m into the process it fails with:

r50739 = 2a1491de1353b1e3cce50d8f9d383407218a44f1 (refs/remotes/git-svn)
fatal: Cannot open '.git/Git_svn_delta_33316_0_UkxiJV': Permission denied
Use of uninitialized value $hash in chomp at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 929, <GEN11> line 36311.
hash-object -w --stdin-paths --no-filters: command returned error: 128

error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
        (in cleanup)  at /usr/share/perl5/vendor_perl/Error.pm line 198 during global destruction.

I tried updating to the latest build, 2.20.1.windows, but it still fails.

There is nothing particularly special about svn changeset 50739 that I can see compared to any other.
Anyone know why this might be failing or how I could resolve it?

Thanks
Andrew

Re: error: Use of uninitialized value $hash in chomp

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2018-12-19 19:00:15

On Wed, Dec 19 2018, Andrew Shearer wrote:
Hello

I am using a "git svn clone" command to extract our project history from svn into git.
About 30m into the process it fails with:

r50739 = 2a1491de1353b1e3cce50d8f9d383407218a44f1 (refs/remotes/git-svn)
fatal: Cannot open '.git/Git_svn_delta_33316_0_UkxiJV': Permission denied
Use of uninitialized value $hash in chomp at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 929, <GEN11> line 36311.
hash-object -w --stdin-paths --no-filters: command returned error: 128

error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
        (in cleanup)  at /usr/share/perl5/vendor_perl/Error.pm line 198 during global destruction.

I tried updating to the latest build, 2.20.1.windows, but it still fails.

There is nothing particularly special about svn changeset 50739 that I can see compared to any other.
Anyone know why this might be failing or how I could resolve it?
That "Permission denied" looks scary. Don't know how git-svn gets into
this, but try with this patch on top:

    diff --git a/perl/Git.pm b/perl/Git.pm
    index d856930b2e..f5d15895d3 100644
    --- a/perl/Git.pm
    +++ b/perl/Git.pm
    @@ -926,7 +926,13 @@ sub hash_and_insert_object {
                    throw Error::Simple("out pipe went bad");
            }

    -       chomp(my $hash = <$in>);
    +       my $hash = <$in>;
    +       unless (defined $hash) {
    +           sub noes { die "blah" }
    +           noes();
    +       } else {
    +           chomp($hash);
    +       }
            unless (defined($hash)) {
                    $self->_close_hash_and_insert_object();
                    throw Error::Simple("in pipe went bad");

Then run:

    perl -d $(git --exec-path)/git-svn

Set a breakpoint at that "noes" with:

  DB<1> b Git::noes

Continue:

  DB<2> c

Then when it stops there get a backtrace with "T":

      DB<2> T
    @ = DB::DB called from file 'perl/Git.pm' line 931
    . = Git::noes() called from file 'perl/Git.pm' line 932
    . = Git::hash_and_insert_object(ref(Git), 'Makefile') called from -e line 1

And see if you can get any other relevant info out of the debugger. See
"perldoc perldebug".

RE: error: Use of uninitialized value $hash in chomp

From: Andrew Shearer <hidden>
Date: 2018-12-21 00:15:53

Hi 
Thanks for reply, but sorry I don't know how to do that - I don't have the git source code or know how to debug it.
Is there another way I can capture logging/debugging information while running "git svn clone" and send it to you?
Thanks

Andrew Shearer / Web Developer
DDI 021 469 888 / andrew@terabyte.co.nz

/TERABYTE

-----Original Message-----
From: Ævar Arnfjörð Bjarmason <redacted> 
Sent: Thursday, 20 December 2018 8:00 AM
To: Andrew Shearer <redacted>
Cc: git@vger.kernel.org; Eric Wong <redacted>
Subject: Re: error: Use of uninitialized value $hash in chomp


On Wed, Dec 19 2018, Andrew Shearer wrote:
Hello

I am using a "git svn clone" command to extract our project history from svn into git.
About 30m into the process it fails with:

r50739 = 2a1491de1353b1e3cce50d8f9d383407218a44f1 
(refs/remotes/git-svn)
fatal: Cannot open '.git/Git_svn_delta_33316_0_UkxiJV': Permission 
denied Use of uninitialized value $hash in chomp at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 929, <GEN11> line 36311.
hash-object -w --stdin-paths --no-filters: command returned error: 128

error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
        (in cleanup)  at /usr/share/perl5/vendor_perl/Error.pm line 198 during global destruction.

I tried updating to the latest build, 2.20.1.windows, but it still fails.

There is nothing particularly special about svn changeset 50739 that I can see compared to any other.
Anyone know why this might be failing or how I could resolve it?
That "Permission denied" looks scary. Don't know how git-svn gets into this, but try with this patch on top:

    diff --git a/perl/Git.pm b/perl/Git.pm
    index d856930b2e..f5d15895d3 100644
    --- a/perl/Git.pm
    +++ b/perl/Git.pm
    @@ -926,7 +926,13 @@ sub hash_and_insert_object {
                    throw Error::Simple("out pipe went bad");
            }

    -       chomp(my $hash = <$in>);
    +       my $hash = <$in>;
    +       unless (defined $hash) {
    +           sub noes { die "blah" }
    +           noes();
    +       } else {
    +           chomp($hash);
    +       }
            unless (defined($hash)) {
                    $self->_close_hash_and_insert_object();
                    throw Error::Simple("in pipe went bad");

Then run:

    perl -d $(git --exec-path)/git-svn

Set a breakpoint at that "noes" with:

  DB<1> b Git::noes

Continue:

  DB<2> c

Then when it stops there get a backtrace with "T":

      DB<2> T
    @ = DB::DB called from file 'perl/Git.pm' line 931
    . = Git::noes() called from file 'perl/Git.pm' line 932
    . = Git::hash_and_insert_object(ref(Git), 'Makefile') called from -e line 1

And see if you can get any other relevant info out of the debugger. See "perldoc perldebug".

RE: error: Use of uninitialized value $hash in chomp

From: Andrew Shearer <hidden>
Date: 2019-01-08 19:45:09

Hi 
Thanks for reply, but sorry I don't know how to do that - I don't have the git source code or know how to debug it.
Is there another way I can capture logging/debugging information while running "git svn clone" and send it to you?
Thanks

Andrew Shearer / Web Developer
DDI 021 469 888 / andrew@terabyte.co.nz

/TERABYTE

-----Original Message-----
From: Ævar Arnfjörð Bjarmason <redacted> 
Sent: Thursday, 20 December 2018 8:00 AM
To: Andrew Shearer <redacted>
Cc: git@vger.kernel.org; Eric Wong <redacted>
Subject: Re: error: Use of uninitialized value $hash in chomp


On Wed, Dec 19 2018, Andrew Shearer wrote:
Hello

I am using a "git svn clone" command to extract our project history from svn into git.
About 30m into the process it fails with:

r50739 = 2a1491de1353b1e3cce50d8f9d383407218a44f1 
(refs/remotes/git-svn)
fatal: Cannot open '.git/Git_svn_delta_33316_0_UkxiJV': Permission 
denied Use of uninitialized value $hash in chomp at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 929, <GEN11> line 36311.
hash-object -w --stdin-paths --no-filters: command returned error: 128

error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
error closing pipe: Bad file descriptor at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 0.
        (in cleanup)  at /usr/share/perl5/vendor_perl/Error.pm line 198 during global destruction.

I tried updating to the latest build, 2.20.1.windows, but it still fails.

There is nothing particularly special about svn changeset 50739 that I can see compared to any other.
Anyone know why this might be failing or how I could resolve it?
That "Permission denied" looks scary. Don't know how git-svn gets into this, but try with this patch on top:

    diff --git a/perl/Git.pm b/perl/Git.pm
    index d856930b2e..f5d15895d3 100644
    --- a/perl/Git.pm
    +++ b/perl/Git.pm
    @@ -926,7 +926,13 @@ sub hash_and_insert_object {
                    throw Error::Simple("out pipe went bad");
            }

    -       chomp(my $hash = <$in>);
    +       my $hash = <$in>;
    +       unless (defined $hash) {
    +           sub noes { die "blah" }
    +           noes();
    +       } else {
    +           chomp($hash);
    +       }
            unless (defined($hash)) {
                    $self->_close_hash_and_insert_object();
                    throw Error::Simple("in pipe went bad");

Then run:

    perl -d $(git --exec-path)/git-svn

Set a breakpoint at that "noes" with:

  DB<1> b Git::noes

Continue:

  DB<2> c

Then when it stops there get a backtrace with "T":

      DB<2> T
    @ = DB::DB called from file 'perl/Git.pm' line 931
    . = Git::noes() called from file 'perl/Git.pm' line 932
    . = Git::hash_and_insert_object(ref(Git), 'Makefile') called from -e line 1

And see if you can get any other relevant info out of the debugger. See "perldoc perldebug".
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help