Steven, try the attached patch.

Jean-Louis

On 03/05/2012 11:45 AM, Steven Backus wrote:
Are they the latest lines in the amidxtaped debug file?

Yes.  Although it didn't get that far this time, it says:

Mon Mar  5 09:39:22 2012: thd-0x1f3cd880: amidxtaped: recovering from split 
dumpfile: date 20120302160001 host harmony.med.utah.edu disk sdb1 part 
1/UNKNOWN lev 0 comp .gz program /bin/gtar
Mon Mar  5 09:39:22 2012: thd-0x1f3cd880: amidxtaped: ..with decompression 
applied

Can you get a backtrace of the process? do the following...
Done, here it is:

#0  0x0000003004a79ba0 in strlen () from /lib64/libc.so.6
#1  0x00002aaaab107108 in amxml_parse_node_CHAR (txt=0x0,
     errmsg=0x7fffa8e206b8) at amxml.c:1002
#2  0x00002aaaac2379c6 in _wrap_new_HeaderXML (my_perl=<value optimized out>,
     cv=<value optimized out>) at Amanda/Header.c:1916
#3  0x0000003005690af6 in Perl_pp_entersub ()
    from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#4  0x000000300568a39e in Perl_runops_standard ()
    from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#5  0x0000003005637720 in Perl_call_sv ()
    from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#6  0x00002aaaabc0e87f in amglue_source_callback_simple (data=0x1fde1240)
     at Amanda/MainLoop.c:1672
#7  0x000000300b62d2bb in ?? () from /lib64/libglib-2.0.so.0
#8  0x000000300b62cdb4 in g_main_context_dispatch ()
    from /lib64/libglib-2.0.so.0
#9  0x000000300b62fc0d in ?? () from /lib64/libglib-2.0.so.0
#10 0x000000300b62ff1a in g_main_loop_run () from /lib64/libglib-2.0.so.0
#11 0x00002aaaabc0de27 in _wrap_run_c (my_perl=<value optimized out>,
     cv=<value optimized out>) at Amanda/MainLoop.c:1983
#12 0x0000003005690af6 in Perl_pp_entersub ()
    from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#13 0x000000300568a39e in Perl_runops_standard ()
#14 0x00000030056380ba in perl_run ()
    from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#15 0x00000000004017bc in main ()

Steve

diff --git a/perl/Amanda/Header.swg b/perl/Amanda/Header.swg
index a7d391b..28cb4e8 100644
--- a/perl/Amanda/Header.swg
+++ b/perl/Amanda/Header.swg
@@ -151,7 +151,11 @@ sub from_string {
 sub get_dle {
     my $self = shift;
 
-    return Amanda::Header::HeaderXML->new($self->{'dle_str'});
+    if ($self->{'dle_str'}) {
+	return Amanda::Header::HeaderXML->new($self->{'dle_str'});
+    } else {
+	return undef;
+    }
 }
 
 package Amanda::Header::Header;
diff --git a/server-src/amidxtaped.pl b/server-src/amidxtaped.pl
index 855d59a..b161554 100644
--- a/server-src/amidxtaped.pl
+++ b/server-src/amidxtaped.pl
@@ -546,7 +546,6 @@ sub xfer_src_cb {
     if ($header->{'compressed'}) {
 	# need to uncompress this file
 	debug("..with decompression applied");
-	my $dle = $header->get_dle();
 
 	if ($header->{'srvcompprog'}) {
 	    # TODO: this assumes that srvcompprog takes "-d" to decrypt
@@ -569,9 +568,11 @@ sub xfer_src_cb {
 		$header->{'clntcompprog'} = '';
 	    }
 	} else {
-	    if (!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_receive_unfiltered) ||
-		$dle->{'compress'} == $Amanda::Config::COMP_SERVER_FAST ||
-		$dle->{'compress'} == $Amanda::Config::COMP_SERVER_BEST) {
+	    my $dle = $header->get_dle();
+	    if ($dle &&
+		(!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_receive_unfiltered) ||
+		 $dle->{'compress'} == $Amanda::Config::COMP_SERVER_FAST ||
+		 $dle->{'compress'} == $Amanda::Config::COMP_SERVER_BEST)) {
 		push @filters,
 		    Amanda::Xfer::Filter::Process->new(
 			[ $Amanda::Constants::UNCOMPRESS_PATH,

Reply via email to