From b7f6a65f7458ba351a55206abcbdc89f3c721f4b Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Sat, 5 Apr 2008 10:45:49 -0500 Subject: [svn-r14798] Description: Correctly initialize cache_info struct for cloned B-tree node (correcting memory corruption issue on Linux machines) Remove "//" comments in cache2_common.c and replace them with "/* *" comments. Back out h5diff hack in testh5recover.sh.in, Albert already fixed it. Still building on tg-login3 for parallel testing... Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.5.2 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode --- src/H5B.c | 7 ++- src/H5Bcache.c | 8 +++- test/cache2_common.c | 88 ++++++++++++++++++------------------- tools/h5recover/testh5recover.sh.in | 7 ++- 4 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/H5B.c b/src/H5B.c index 4b9d26c..b32a515 100644 --- a/src/H5B.c +++ b/src/H5B.c @@ -228,7 +228,7 @@ H5B_create(H5F_t *f, hid_t dxpl_id, const H5B_class_t *type, void *udata, */ if (NULL==(bt = H5FL_MALLOC(H5B_t))) HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for B-tree root node") - HDmemset(&bt->cache_info,0,sizeof(H5AC2_info_t)); + HDmemset(&bt->cache_info, 0, sizeof(H5AC2_info_t)); bt->level = 0; bt->left = HADDR_UNDEF; bt->right = HADDR_UNDEF; @@ -1865,7 +1865,10 @@ H5B_copy(const H5B_t *old_bt) HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for B-tree root node") /* Copy the main structure */ - HDmemcpy(new_node,old_bt,sizeof(H5B_t)); + HDmemcpy(new_node, old_bt, sizeof(H5B_t)); + + /* Reset cache info */ + HDmemset(&new_node->cache_info, 0, sizeof(H5AC2_info_t)); if ( NULL==(new_node->native=H5FL_BLK_MALLOC(native_block,shared->sizeof_keys)) || NULL==(new_node->child=H5FL_SEQ_MALLOC(haddr_t,(size_t)shared->two_k))) diff --git a/src/H5Bcache.c b/src/H5Bcache.c index 553876a..f18dee2 100644 --- a/src/H5Bcache.c +++ b/src/H5Bcache.c @@ -118,7 +118,7 @@ H5B_deserialize(haddr_t UNUSED addr, size_t UNUSED len, const void *image, const /* Allocate the B-tree node in memory */ if(NULL == (bt = H5FL_MALLOC(H5B_t))) HGOTO_ERROR(H5E_BTREE, H5E_NOSPACE, NULL, "can't allocate B-tree struct") - HDmemset(&bt->cache_info, 0, sizeof(bt->cache_info)); + HDmemset(&bt->cache_info, 0, sizeof(H5AC2_info_t)); /* Set & increment the ref-counted "shared" B-tree information for the node */ bt->rc_shared = udata->rc_shared; @@ -174,6 +174,9 @@ H5B_deserialize(haddr_t UNUSED addr, size_t UNUSED len, const void *image, const HGOTO_ERROR(H5E_BTREE, H5E_CANTDECODE, NULL, "unable to decode key") } /* end if */ + /* Sanity check */ + HDassert((size_t)((const uint8_t *)p - (const uint8_t *)image) <= len); + /* Set return value */ ret_value = bt; @@ -261,6 +264,9 @@ H5B_serialize(haddr_t UNUSED addr, size_t UNUSED len, void *image, void *_thing, /* Reset the cache flags for this operation (metadata not resized or renamed) */ *flags = 0; + /* Sanity check */ + HDassert((size_t)((const uint8_t *)p - (const uint8_t *)image) <= len); + done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5B_serialize() */ diff --git a/test/cache2_common.c b/test/cache2_common.c index 31a8301..332ab36 100644 --- a/test/cache2_common.c +++ b/test/cache2_common.c @@ -4128,7 +4128,7 @@ row_major_scan_forward2(H5F_t * file_ptr, local_max_index = MIN(max_index, max_indices2[type]); - //while ( ( pass2 ) && ( idx <= (max_indices2[type] + lag) ) ) + /*while ( ( pass2 ) && ( idx <= (max_indices2[type] + lag) ) ) */ while ( ( pass2 ) && ( idx <= (local_max_index + lag) ) ) { if ( verbose ) { @@ -4137,7 +4137,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( do_inserts ) && ( (idx + lag) >= 0 ) && - //( (idx + lag) <= max_indices2[type] ) && + /*( (idx + lag) <= max_indices2[type] ) && */ ( (idx + lag) <= local_max_index ) && ( ((idx + lag) % 2) == 0 ) && ( ! entry_in_cache2(cache_ptr, type, (idx + lag)) ) ) { @@ -4151,7 +4151,7 @@ row_major_scan_forward2(H5F_t * file_ptr, if ( ( pass2 ) && ( (idx + lag - 1) >= 0 ) && - //( (idx + lag - 1) <= max_indices2[type] ) && + /*( (idx + lag - 1) <= max_indices2[type] ) && */ ( (idx + lag - 1) <= local_max_index ) && ( ( (idx + lag - 1) % 3 ) == 0 ) ) { @@ -4162,7 +4162,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 2) >= 0 ) && - //( (idx + lag - 2) <= max_indices2[type] ) && + /*( (idx + lag - 2) <= max_indices2[type] ) && */ ( (idx + lag - 2) <= local_max_index ) && ( ( (idx + lag - 2) % 3 ) == 0 ) ) { @@ -4175,7 +4175,7 @@ row_major_scan_forward2(H5F_t * file_ptr, if ( ( pass2 ) && ( do_renames ) && ( (idx + lag - 2) >= 0 ) && - //( (idx + lag - 2) <= max_indices2[type] ) && + /*( (idx + lag - 2) <= max_indices2[type] ) && */ ( (idx + lag - 2) <= local_max_index ) && ( ( (idx + lag - 2) % 3 ) == 0 ) ) { @@ -4189,7 +4189,7 @@ row_major_scan_forward2(H5F_t * file_ptr, if ( ( pass2 ) && ( (idx + lag - 3) >= 0 ) && - //( (idx + lag - 3) <= max_indices2[type] ) && + /*( (idx + lag - 3) <= max_indices2[type] ) && */ ( (idx + lag - 3) <= local_max_index ) && ( ( (idx + lag - 3) % 5 ) == 0 ) ) { @@ -4200,7 +4200,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 5) >= 0 ) && - //( (idx + lag - 5) <= max_indices2[type] ) && + /*( (idx + lag - 5) <= max_indices2[type] ) && */ ( (idx + lag - 5) <= local_max_index ) && ( ( (idx + lag - 5) % 5 ) == 0 ) ) { @@ -4214,7 +4214,7 @@ row_major_scan_forward2(H5F_t * file_ptr, if ( do_mult_ro_protects ) { if ( ( pass2 ) && ( (idx + lag - 5) >= 0 ) && - //( (idx + lag - 5) < max_indices2[type] ) && + /*( (idx + lag - 5) < max_indices2[type] ) && */ ( (idx + lag - 5) < local_max_index ) && ( (idx + lag - 5) % 9 == 0 ) ) { @@ -4226,7 +4226,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 6) >= 0 ) && - //( (idx + lag - 6) < max_indices2[type] ) && + /*( (idx + lag - 6) < max_indices2[type] ) && */ ( (idx + lag - 6) < local_max_index ) && ( (idx + lag - 6) % 11 == 0 ) ) { @@ -4238,7 +4238,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 7) >= 0 ) && - // ( (idx + lag - 7) < max_indices2[type] ) && + /* ( (idx + lag - 7) < max_indices2[type] ) && */ ( (idx + lag - 7) < local_max_index ) && ( (idx + lag - 7) % 13 == 0 ) ) { @@ -4250,7 +4250,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 7) >= 0 ) && - // ( (idx + lag - 7) < max_indices2[type] ) && + /* ( (idx + lag - 7) < max_indices2[type] ) && */ ( (idx + lag - 7) < local_max_index ) && ( (idx + lag - 7) % 9 == 0 ) ) { @@ -4263,7 +4263,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 8) >= 0 ) && - // ( (idx + lag - 8) < max_indices2[type] ) && + /* ( (idx + lag - 8) < max_indices2[type] ) && */ ( (idx + lag - 8) < local_max_index ) && ( (idx + lag - 8) % 11 == 0 ) ) { @@ -4276,7 +4276,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 9) >= 0 ) && - //( (idx + lag - 9) < max_indices2[type] ) && + /*( (idx + lag - 9) < max_indices2[type] ) && */ ( (idx + lag - 9) < local_max_index ) && ( (idx + lag - 9) % 13 == 0 ) ) { @@ -4289,7 +4289,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } } /* if ( do_mult_ro_protects ) */ - //if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { + /*if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { */ if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= local_max_index ) ) { if ( verbose ) @@ -4299,7 +4299,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 2) >= 0 ) && - //( (idx - lag + 2) <= max_indices2[type] ) && + /*( (idx - lag + 2) <= max_indices2[type] ) && */ ( (idx - lag + 2) <= local_max_index ) && ( ( (idx - lag + 2) % 7 ) == 0 ) ) { @@ -4311,7 +4311,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 1) >= 0 ) && - //( (idx - lag + 1) <= max_indices2[type] ) && + /*( (idx - lag + 1) <= max_indices2[type] ) && */ ( (idx - lag + 1) <= local_max_index ) && ( ( (idx - lag + 1) % 7 ) == 0 ) ) { @@ -4325,7 +4325,7 @@ row_major_scan_forward2(H5F_t * file_ptr, if ( do_destroys ) { if ( ( pass2 ) && ( (idx - lag) >= 0 ) && - // ( ( idx - lag) <= max_indices2[type] ) ) { + /* ( ( idx - lag) <= max_indices2[type] ) ) { */ ( ( idx - lag) <= local_max_index ) ) { switch ( (idx - lag) %4 ) { @@ -4403,7 +4403,7 @@ row_major_scan_forward2(H5F_t * file_ptr, } else { if ( ( pass2 ) && ( (idx - lag) >= 0 ) && - // ( ( idx - lag) <= max_indices2[type] ) ) { + /* ( ( idx - lag) <= max_indices2[type] ) ) { */ ( ( idx - lag) <= local_max_index ) ) { if ( verbose ) @@ -4608,13 +4608,13 @@ row_major_scan_backward2(H5F_t * file_ptr, { local_max_index = MIN(max_index, max_indices2[type]); - //idx = max_indices2[type] + lag; + /*idx = max_indices2[type] + lag; */ idx = local_max_index + lag; while ( ( pass2 ) && ( idx >= -lag ) ) { if ( ( pass2 ) && ( do_inserts ) && ( (idx - lag) >= 0 ) && - //( (idx - lag) <= max_indices2[type] ) && + /*( (idx - lag) <= max_indices2[type] ) && */ ( (idx - lag) <= local_max_index ) && ( ((idx - lag) % 2) == 1 ) && ( ! entry_in_cache2(cache_ptr, type, (idx - lag)) ) ) { @@ -4628,7 +4628,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( ( pass2 ) && ( (idx - lag + 1) >= 0 ) && - //( (idx - lag + 1) <= max_indices2[type] ) && + /*( (idx - lag + 1) <= max_indices2[type] ) && */ ( (idx - lag + 1) <= local_max_index ) && ( ( (idx - lag + 1) % 3 ) == 0 ) ) { @@ -4639,7 +4639,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 2) >= 0 ) && - //( (idx - lag + 2) <= max_indices2[type] ) && + /*( (idx - lag + 2) <= max_indices2[type] ) && */ ( (idx - lag + 2) <= local_max_index ) && ( ( (idx - lag + 2) % 3 ) == 0 ) ) { @@ -4652,7 +4652,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( ( pass2 ) && ( do_renames ) && ( (idx - lag + 2) >= 0 ) && - //( (idx - lag + 2) <= max_indices2[type] ) && + /*( (idx - lag + 2) <= max_indices2[type] ) && */ ( (idx - lag + 2) <= local_max_index ) && ( ( (idx - lag + 2) % 3 ) == 0 ) ) { @@ -4666,7 +4666,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( ( pass2 ) && ( (idx - lag + 3) >= 0 ) && - //( (idx - lag + 3) <= max_indices2[type] ) && + /*( (idx - lag + 3) <= max_indices2[type] ) && */ ( (idx - lag + 3) <= local_max_index ) && ( ( (idx - lag + 3) % 5 ) == 0 ) ) { @@ -4677,7 +4677,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 5) >= 0 ) && - //( (idx - lag + 5) <= max_indices2[type] ) && + /*( (idx - lag + 5) <= max_indices2[type] ) && */ ( (idx - lag + 5) <= local_max_index ) && ( ( (idx - lag + 5) % 5 ) == 0 ) ) { @@ -4691,7 +4691,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( do_mult_ro_protects ) { if ( ( pass2 ) && ( (idx - lag + 5) >= 0 ) && - //( (idx - lag + 5) < max_indices2[type] ) && + /*( (idx - lag + 5) < max_indices2[type] ) && */ ( (idx - lag + 5) < local_max_index ) && ( (idx - lag + 5) % 9 == 0 ) ) { @@ -4703,7 +4703,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 6) >= 0 ) && - //( (idx - lag + 6) < max_indices2[type] ) && + /*( (idx - lag + 6) < max_indices2[type] ) && */ ( (idx - lag + 6) < local_max_index ) && ( (idx - lag + 6) % 11 == 0 ) ) { @@ -4715,7 +4715,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 7) >= 0 ) && - // ( (idx - lag + 7) < max_indices2[type] ) && + /* ( (idx - lag + 7) < max_indices2[type] ) && */ ( (idx - lag + 7) < local_max_index ) && ( (idx - lag + 7) % 13 == 0 ) ) { @@ -4727,7 +4727,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 7) >= 0 ) && - //( (idx - lag + 7) < max_indices2[type] ) && + /*( (idx - lag + 7) < max_indices2[type] ) && */ ( (idx - lag + 7) < local_max_index ) && ( (idx - lag + 7) % 9 == 0 ) ) { @@ -4740,7 +4740,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 8) >= 0 ) && - //( (idx - lag + 8) < max_indices2[type] ) && + /*( (idx - lag + 8) < max_indices2[type] ) && */ ( (idx - lag + 8) < local_max_index ) && ( (idx - lag + 8) % 11 == 0 ) ) { @@ -4753,7 +4753,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag + 9) >= 0 ) && - //( (idx - lag + 9) < max_indices2[type] ) && + /*( (idx - lag + 9) < max_indices2[type] ) && */ ( (idx - lag + 9) < local_max_index ) && ( (idx - lag + 9) % 13 == 0 ) ) { @@ -4766,7 +4766,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } } /* if ( do_mult_ro_protects ) */ - //if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { + /*if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { */ if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= local_max_index ) ) { if ( verbose ) @@ -4777,7 +4777,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( ( pass2 ) && ( (idx + lag - 2) >= 0 ) && - //( (idx + lag - 2) <= max_indices2[type] ) && + /*( (idx + lag - 2) <= max_indices2[type] ) && */ ( (idx + lag - 2) <= local_max_index ) && ( ( (idx + lag - 2) % 7 ) == 0 ) ) { @@ -4789,7 +4789,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag - 1) >= 0 ) && - //( (idx + lag - 1) <= max_indices2[type] ) && + /*( (idx + lag - 1) <= max_indices2[type] ) && */ ( (idx + lag - 1) <= local_max_index ) && ( ( (idx + lag - 1) % 7 ) == 0 ) ) { @@ -4803,7 +4803,7 @@ row_major_scan_backward2(H5F_t * file_ptr, if ( do_destroys ) { if ( ( pass2 ) && ( (idx + lag) >= 0 ) && - //( ( idx + lag) <= max_indices2[type] ) ) { + /*( ( idx + lag) <= max_indices2[type] ) ) { */ ( ( idx + lag) <= local_max_index ) ) { switch ( (idx + lag) %4 ) { @@ -4852,7 +4852,7 @@ row_major_scan_backward2(H5F_t * file_ptr, } else { if ( ( pass2 ) && ( (idx + lag) >= 0 ) && - //( ( idx + lag) <= max_indices2[type] ) ) { + /*( ( idx + lag) <= max_indices2[type] ) ) { */ ( ( idx + lag) <= local_max_index ) ) { if ( verbose ) @@ -5059,7 +5059,7 @@ col_major_scan_forward2(H5F_t * file_ptr, while ( ( pass2 ) && ( type < NUMBER_OF_ENTRY_TYPES ) ) { if ( ( pass2 ) && ( do_inserts ) && ( (idx + lag) >= 0 ) && - //( (idx + lag) <= max_indices2[type] ) && + /*( (idx + lag) <= max_indices2[type] ) && */ ( (idx + lag) <= local_max_index[type] ) && ( ((idx + lag) % 3) == 0 ) && ( ! entry_in_cache2(cache_ptr, type, (idx + lag)) ) ) { @@ -5071,7 +5071,7 @@ col_major_scan_forward2(H5F_t * file_ptr, H5C2__NO_FLAGS_SET); } - //if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { + /*if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { */ if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= local_max_index[type] ) ) { @@ -5083,7 +5083,7 @@ col_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx - lag) >= 0 ) && - //( (idx - lag) <= max_indices2[type] ) ) { + /*( (idx - lag) <= max_indices2[type] ) ) { */ ( (idx - lag) <= local_max_index[type] ) ) { if ( verbose ) @@ -5203,7 +5203,7 @@ hl_col_major_scan_forward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( i >= 0 ) && - //( i <= max_indices2[type] ) ) { + /*( i <= max_indices2[type] ) ) { */ ( i <= local_max_index ) ) { if ( verbose ) @@ -5291,7 +5291,7 @@ col_major_scan_backward2(H5F_t * file_ptr, H5C2_stats__reset(cache_ptr); } - // idx = MAX_ENTRIES + lag; + /* idx = MAX_ENTRIES + lag; */ idx = local_max_index[NUMBER_OF_ENTRY_TYPES - 1] + lag; if ( verbose ) /* 1 */ @@ -5305,7 +5305,7 @@ col_major_scan_backward2(H5F_t * file_ptr, while ( ( pass2 ) && ( type >= 0 ) ) { if ( ( pass2 ) && ( do_inserts) && ( (idx - lag) >= 0 ) && - //( (idx - lag) <= max_indices2[type] ) && + /*( (idx - lag) <= max_indices2[type] ) && */ ( (idx - lag) <= local_max_index[type] ) && ( ((idx - lag) % 3) == 0 ) && ( ! entry_in_cache2(cache_ptr, type, (idx - lag)) ) ) { @@ -5317,7 +5317,7 @@ col_major_scan_backward2(H5F_t * file_ptr, H5C2__NO_FLAGS_SET); } - //if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { + /*if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= max_indices2[type] ) ) { */ if ( ( pass2 ) && ( idx >= 0 ) && ( idx <= local_max_index[type] ) ) { @@ -5329,7 +5329,7 @@ col_major_scan_backward2(H5F_t * file_ptr, } if ( ( pass2 ) && ( (idx + lag) >= 0 ) && - //( (idx + lag) <= max_indices2[type] ) ) { + /*( (idx + lag) <= max_indices2[type] ) ) { */ ( (idx + lag) <= local_max_index[type] ) ) { if ( verbose ) diff --git a/tools/h5recover/testh5recover.sh.in b/tools/h5recover/testh5recover.sh.in index d285901..9a6531b 100644 --- a/tools/h5recover/testh5recover.sh.in +++ b/tools/h5recover/testh5recover.sh.in @@ -29,7 +29,6 @@ TOOLCTLDataFile=CTL$TOOLDataFile RECOVERTOOL=h5recover # The tool name RECOVERTOOL_BIN=`pwd`/$RECOVERTOOL # The path of the tool binary H5DIFF=../h5diff/h5diff -H5DIFF_BIN=`pwd`/../h5diff/$H5DIFF # The path of the h5diff tool binary TESTDIR=`pwd`/../testfiles @@ -75,7 +74,7 @@ TOOLTEST() { TESTING $TOOL $@ $RUNSERIAL $TOOL_BIN $@ # expect first diff to fail - $RUNSERIAL $H5DIFF_BIN $TOOLDataFile $TOOLCTLDataFile > /dev/null 2>&1 + $RUNSERIAL $H5DIFF $TOOLDataFile $TOOLCTLDataFile > /dev/null 2>&1 if [ $? = 0 ]; then echo first diff did not fail as expected fi @@ -83,12 +82,12 @@ TOOLTEST() { # h5recover is not ready yet. Redirect its output to /dev/null. $RUNSERIAL $RECOVERTOOL_BIN $TOOLDataFile > /dev/null # second diff should produce expected output - $RUNSERIAL $H5DIFF_BIN $TOOLDataFile $TOOLCTLDataFile > $actual + $RUNSERIAL $H5DIFF $TOOLDataFile $TOOLCTLDataFile > $actual ( echo "#############################" echo "Expected output for '$TOOL $@'" echo "#############################" - $RUNSERIAL $H5DIFF_BIN $TOOLDataFile $TOOLCTLDataFile + $RUNSERIAL $H5DIFF $TOOLDataFile $TOOLCTLDataFile ) >$actual 2>$actual_err cat $actual_err >> $actual -- cgit v0.12