Ich treffe einen Fehler im SVN-Perl-Modul, wenn ich git:
verwende %Vor%Und ich bin mir nicht ganz sicher, ob das ein Perl-Bug oder ein Subversion-Bug ist. Dies ist der relevante Teil:
%Vor%Was ist eine "bizarre Kopie"? Und wessen Schuld ist es?
Bearbeiten: Softwareversionen
Lösung: Dies passiert, wenn Sie mit inkompatiblen Flags kompilieren:
Dieser Perldoc gibt Ihnen die kurze Antwort, aber eine kurze STFW-Sitzung liefert ein wenig mehr Details. Dies ist im Grunde ein Beweis für einen zerbrochenen Stapel in Perl.
Triviales Beispiel:
%Vor%Und um es unterhaltsamer zu machen, ohne die $ throwAway-Zuweisung, ist es ein unsichtbarer Fehler (obwohl Sie unter 'Warnungen verwenden' zumindest noch sagen, dass Sie versuchen, auf einen nicht initialisierten Wert zuzugreifen). Wenn du eine neue Aufgabe machst, siehst du das seltsame Verhalten.
Da @_ im Wesentlichen lexikalisch auf die Subroutine beschränkt ist und Argumente als Referenz übergeben werden, zieht sich diese kleine Subroutine im Grunde genommen von selbst zurück, indem sie das Ding, auf das @_ zeigte, nicht aufgibt (Sie erhalten dasselbe Verhalten) wenn Sie die undef zu einer Zuweisung ändern, fwiw). Ich habe eine Anzahl von Postings auf Perl5-Trägern gefunden, die dies als ein Artefakt der Tatsache bezeichnen, dass Gegenstände auf dem Stapel nicht als Referenz gezählt werden und daher nicht sauber befreit werden.
Also, während ich nicht den ganzen Code in Ihrer vollständigen Quelle in der Tiefe durchgegangen bin, werde ich weitermachen und erraten, dass etwas darin etwas mit etwas zu tun hat, das an @_ weitergegeben wurde; dann, wenn @_ erneut referenziert wird, sagt Perl dir, dass in Dänemark etwas faul ist.
Das unmittelbare Problem ist ein Fehler im Skript / Modul. Die tiefere Ausgabe von Perl, die nicht diese Dinge zählt, ist auch da, aber ich vermute, dass Sie mehr Glück haben, das Modul kurzfristig zu reparieren. : -)
HTH- Brian
Eine "bizarre Kopie" tritt auf, wenn Perls Stack beschädigt ist oder nicht-skalare Elemente enthält. Es tritt als Folge von Fehlern in Perl selbst oder in XS-Modulen auf. (In Brian Gerards Beispiel wird eine lange Liste bekannter Fehler im Zusammenhang mit dem Stack verwendet, der nicht gezählt wird.)
Sie könnten das Problem isolieren, indem Sie dem anon-Sub Folgendes hinzufügen:
%Vor% Sie möchten vielleicht sogar einen Stack-Trace ausgeben, aber Sie müssen ihn möglicherweise mit caller
selbst erstellen, um zu vermeiden, dass beim Erstellen des Stack-Trace eine Panik ausgelöst wird.
Wahrscheinlich ein Perl-Bug. SVN :: Base hat XS-Komponenten, aber der Fehler tritt im pure-perl-Code auf und ich bin der Meinung, dass Perl das niemals zulassen sollte. Es ist jedoch möglich, dass es in SVN :: Base einige seltsame XS gibt, die es optimieren.
Beste Idee: Datei gegen Subversion-Subkomponente bindings_swig_perl
und perlbug beides.