From 701966ef0f8d57fd44428a0f318590ce87a6d94c Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Mon, 20 Aug 2001 12:50:56 -0500 Subject: [svn-r4395] Purpose: Bug fix Description: When the Fortran interface was used on the Linux systems, there were segmentation errors. This was caused because two arrays were being accessed outside of their bounds and because the trace type parameters were specified inccorectly in the ProcTrace.inc file. There were also problems on some systems caused because the long names of HDF entries resulted in trace IDs which were too long. Solution: The lines where arrays were being accessed outside of their bounds were changed. The code in the Makefile.in and the PabloSedscr sed script file were changed so that the tracetype parameters were generated correctly. The PabloSedscr file was also modified to eliminate trace IDs for individual entries. Platforms tested: LINUX, IRIX64, IBM SP2 --- pablo/Makefile.in | 11 ----------- pablo/PabloHDF.c | 15 +++++++++------ pablo/PabloSedscr | 24 ++++++++++++++++++++---- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/pablo/Makefile.in b/pablo/Makefile.in index 0617169..2722b9f 100644 --- a/pablo/Makefile.in +++ b/pablo/Makefile.in @@ -174,17 +174,6 @@ ProcIDs.h: HDFidList.h ProcMasks.h ProcTrace.inc: HDFidList.h sed "=" $? | sed -f PabloSedscr > $@ - echo " integer RuntimeTrace" >> $@ - echo " integer SummaryTrace" >> $@ - echo " integer MPIRuntimeTrace" >> $@ - echo " integer MPISummaryTrace" >> $@ - echo " integer NoTrace" >> $@ - echo " parameter (RuntimeTrace = 0)" >> $@ - echo " parameter (SummaryTrace = 1)" >> $@ - echo " parameter (MPIRuntimeTrace = 2)" >> $@ - echo " parameter (MPISummaryTrace = 3)" >> $@ - echo " parameter (NoTrace = 4)" >> $@ - PabloHDF.o: PabloHDF.c $(PABLO_INCLUDES) $(CC) -g $(CFLAGS) $(CPPFLAGS) $(PABLO_FLAGS) -c $< diff --git a/pablo/PabloHDF.c b/pablo/PabloHDF.c index aa11d85..fd4f2b8 100644 --- a/pablo/PabloHDF.c +++ b/pablo/PabloHDF.c @@ -180,7 +180,6 @@ char *hdfRecordPointer; // RETURNS * // None. * //======================================================================*/ -#ifndef PCF_BUILD /*======================================================================* // fortran to C interface. * // This is called from hdfinittracef_ * @@ -199,7 +198,7 @@ hinittracex_( char *file, { traceFileName[i] = file[i]; } - traceFileName[*len+1] = 0; + traceFileName[*len] = 0; /*===================================================================* // Allocate space for trace indicators. * //===================================================================*/ @@ -214,7 +213,7 @@ hinittracex_( char *file, /*===================================================================* // Initialize to 0. * //===================================================================*/ - for ( i = 0; i <= NUM_HDF_IDS; ++i ) + for ( i = 0; i < NUM_HDF_IDS; ++i ) { procTrace[i] = 0; } @@ -240,6 +239,10 @@ hinittracex_( char *file, procTrace[i] = 1; } } +#ifdef PCF_BUILD + hdfCaptureInit( traceFileName, OUTPUT_SWITCH ); +#else + suppressMPIOtrace = TRUE; if ( OUTPUT_SWITCH == RUNTIME_TRACE || OUTPUT_SWITCH == MPI_RUNTIME_TRACE ) { @@ -265,8 +268,8 @@ hinittracex_( char *file, fprintf(stderr," Exiting Program. <<\n"); exit (-1); } -} #endif /* PCF_BUILD */ +} void HDFinitTrace( const char *traceFileName, int id_flag, ... ) { @@ -445,14 +448,14 @@ hdfCaptureEnd( void ) for ( i = 0; i < NUM_HDF_IDS; ++i ) { procTrace[i] = 0; - } + } hdfBaseEnd(); #ifdef HAVE_MPIO mpiIObaseEnd(); #endif unixIObaseEnd(); genericBaseEnd(); - basePerformanceEnd(); + basePerformanceEnd(); } #endif /* PCF_BUILD */ /*****************************************************************************/ diff --git a/pablo/PabloSedscr b/pablo/PabloSedscr index 73edda0..6df38c2 100644 --- a/pablo/PabloSedscr +++ b/pablo/PabloSedscr @@ -1,15 +1,31 @@ -s/_//g s/,//g -/^[0-9]/,/ID/{ +/^[0-9]/,/[A-z]/{ /^[0-9]/h /^[0-9]/d -s/$/ = / +s/$/ = ID_Begin + / G s/\n// -s/ID/ parameter ( &/ +s/[A-z]/ parameter ( &/ s/$/ )/ h s/parameter (/integer/ s/=.*// G } +/ALLHDF/,$!d +s/_//g +/integer.*ALLHDF/{ +i\ + integer RuntimeTrace\ + integer SummaryTrace\ + integer MPIRuntimeTrace\ + integer MPISummaryTrace\ + integer NoTrace\ + integer IDBegin \ + parameter (NoTrace = 0)\ + parameter (RuntimeTrace = 1)\ + parameter (SummaryTrace = 2)\ + parameter (MPIRuntimeTrace = 3)\ + parameter (MPISummaryTrace = 4)\ + parameter ( IDBegin = 4 ) +} -- cgit v0.12