[mvapich-discuss] error report

Matthew Koop koop at cse.ohio-state.edu
Wed Nov 5 17:33:01 EST 2008


Dan,

Thanks for this feedback. It seems that all of the hooks had not been
included for all of the debug flags that you specified in configure.

I've checked in the necessary changes into the trunk of MVAPICH (and will
be available in tonight's nightly tarball). These changes will also be
reflected in the release version. I've also attached a patch to this email
with the required changes.

Thanks and let us know if you find any other issues.

Matt

On Wed, 5 Nov 2008, Dan Kokron wrote:

> MvaPICH-1.1rc1 failed to compile.  The build logs are attached.
>
> uname -a
> Linux discover02 2.6.16.53-0.16-smp #1 SMP Tue Oct 2 16:57:49 UTC 2007
> x86_64 x86_64 x86_64 GNU/Linux
>
> --
> Dan Kokron
> Global Modeling and Assimilation Office
> NASA Goddard Space Flight Center
> Greenbelt, MD 20771
> Daniel.S.Kokron at nasa.gov
> Phone: (301) 614-5192
> Fax:   (301) 614-5304
>
-------------- next part --------------
Index: mpid/ch_hybrid/Makefile.in
===================================================================
--- mpid/ch_hybrid/Makefile.in	(revision 3116)
+++ mpid/ch_hybrid/Makefile.in	(working copy)
@@ -80,7 +80,7 @@
 	      mv_send_xrc.c shmem_coll.c mv_init_rc_qp.c mv_rndv.c \
 	      mv_rndv_rput.c mv_rndv_r3.c mv_rndv_rput_rel.c mv_rndv_rput_unrel.c \
 	      mv_init_rc_fp.c mv_connect.c \
-	      mv_rpool.c mv_init_xrc_qp.c
+	      mv_rpool.c mv_init_xrc_qp.c objtrace.c calltrace.c
 
 VIAOBJECTS  = mv_init.o mv_finalize.o \
 	      mv_send.o mv_recv.o mv_check.o mv_threads.o \
@@ -94,7 +94,7 @@
 	      mv_send_xrc.o shmem_coll.o mv_init_rc_qp.o mv_rndv.o \
 	      mv_rndv_rput.o mv_rndv_r3.o mv_rndv_rput_rel.o mv_rndv_rput_unrel.o \
 	      mv_init_rc_fp.o mv_connect.o \
-	      mv_rpool.o mv_init_xrc_qp.o
+	      mv_rpool.o mv_init_xrc_qp.o objtrace.o calltrace.o
 
 # default_all is the target used by the MPICH build. It can be optimized
 # to not to the ranlib that default does. Is this necessary on modern machines?
Index: mpid/ch_hybrid/objtrace.c
===================================================================
--- mpid/ch_hybrid/objtrace.c	(revision 0)
+++ mpid/ch_hybrid/objtrace.c	(revision 3117)
@@ -0,0 +1,23 @@
+#include "mpiimpl.h"
+
+#include <stdio.h>
+
+FILE *MPIR_Ref_fp = 0;
+int  MPIR_Ref_flags = 0;
+
+void MPIR_Ref_init( 
+	int flag,
+	char *filename)
+{
+    MPIR_Ref_flags = flag;
+    if (flag) {
+	if (filename) {
+	    MPIR_Ref_fp = fopen( filename, "w" );
+	    if (!MPIR_Ref_fp) {
+		MPIR_Ref_flags = 0;
+	    }
+	}
+	else
+	    MPIR_Ref_fp = stdout;
+    }
+}
Index: mpid/ch_hybrid/calltrace.c
===================================================================
--- mpid/ch_hybrid/calltrace.c	(revision 0)
+++ mpid/ch_hybrid/calltrace.c	(revision 3117)
@@ -0,0 +1,60 @@
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifndef FPRINTF
+#define FPRINTF fprintf
+#endif
+
+#if defined(NEEDS_STDLIB_PROTOTYPES)
+#include <stdio.h>
+/* 
+   Some gcc installations have out-of-date include files and need these
+   definitions to handle the "missing" prototypes.  This is NOT
+   autodetected, but is provided and can be selected by using a switch
+   on the options line.
+
+   These are from stdlib.h, stdio.h, and unistd.h
+ */
+extern int FPRINTF(FILE*,const char*,...);
+extern int fflush(FILE *);
+#endif
+
+#include "calltrace.h"
+
+/* Declarations */
+#ifdef DEBUG_TRACE
+char *(TR_stack[TR_MAX_STACK]);
+int  TR_stack_sp = 0, TR_stack_debug = 0;
+
+void TR_stack_init( int flag )
+{
+    TR_stack_debug = flag;
+}
+
+/* Generate a stack trace */
+void TR_stack_print( 
+	FILE *fp, 
+	int dir )
+{
+    int i;
+
+    if (dir == 1) {
+	for (i=0; i<TR_stack_sp; i++) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+    else {
+	for (i=TR_stack_sp-1; i>=0; i--) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+}
+
+#else
+void TR_stack_init( int flag )
+{
+}
+#endif
Index: mpid/ch_gen2/Makefile.in
===================================================================
--- mpid/ch_gen2/Makefile.in	(revision 3116)
+++ mpid/ch_gen2/Makefile.in	(working copy)
@@ -68,7 +68,7 @@
 	   collutils.c intra_rdma_barrier.c \
        mpid_mcast.c mcst_grp.c ibmcgrp.c \
 	   crc32h.c avl.c mem_hooks.c viacoalesce.c shmem_coll.c\
-           async_progress.c 
+           async_progress.c  calltrace.c objtrace.c
 
 VIAOBJECTS  = viainit.o viasend.o viarecv.o viacheck.o \
 	   viapriv.o viaparam.o viutil.o vbuf.o cm_user.o\
@@ -76,7 +76,8 @@
 	   mpid_hsend.o mpid_hrecv.o mpid_pack.o cmnargs.o \
 	   mpid_misc.o dreg.o mpid_smpi.o collutils.o intra_rdma_barrier.o \
        mpid_mcast.o mcst_grp.o ibmcgrp.o crc32h.o avl.o \
-	   mem_hooks.o viacoalesce.o shmem_coll.o async_progress.o
+	   mem_hooks.o viacoalesce.o shmem_coll.o async_progress.o calltrace.o \
+	   objtrace.o
            
 
 # default_all is the target used by the MPICH build. It can be optimized
@@ -157,7 +158,7 @@
 	   process/pmgr_client.h process/minidaemon.h mpid_misc.c viaparam.h  viaconfig.h viadev.h \
 	   process/common_pmgr_collective.h process/client_pmgr_collective.h \
 	   cmnargs.c dreg.h mpid.h  mpid_smpi.h mpid_smpi.c \
-	   process/mpirun_util.c
+	   process/mpirun_util.c calltrace.c
 
 #
 # Files from the original ADI that we need, but didn't change, 
Index: mpid/ch_gen2/viapriv.h
===================================================================
--- mpid/ch_gen2/viapriv.h	(revision 3116)
+++ mpid/ch_gen2/viapriv.h	(working copy)
@@ -30,6 +30,7 @@
 
 #include <pthread.h>
 
+#include "calltrace.h"
 #include "viaparam.h"
 
 #include "ibverbs_header.h"
Index: mpid/ch_gen2/objtrace.c
===================================================================
--- mpid/ch_gen2/objtrace.c	(revision 0)
+++ mpid/ch_gen2/objtrace.c	(revision 3117)
@@ -0,0 +1,23 @@
+#include "mpiimpl.h"
+
+#include <stdio.h>
+
+FILE *MPIR_Ref_fp = 0;
+int  MPIR_Ref_flags = 0;
+
+void MPIR_Ref_init( 
+	int flag,
+	char *filename)
+{
+    MPIR_Ref_flags = flag;
+    if (flag) {
+	if (filename) {
+	    MPIR_Ref_fp = fopen( filename, "w" );
+	    if (!MPIR_Ref_fp) {
+		MPIR_Ref_flags = 0;
+	    }
+	}
+	else
+	    MPIR_Ref_fp = stdout;
+    }
+}
Index: mpid/ch_gen2/calltrace.c
===================================================================
--- mpid/ch_gen2/calltrace.c	(revision 0)
+++ mpid/ch_gen2/calltrace.c	(revision 3117)
@@ -0,0 +1,60 @@
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifndef FPRINTF
+#define FPRINTF fprintf
+#endif
+
+#if defined(NEEDS_STDLIB_PROTOTYPES)
+#include <stdio.h>
+/* 
+   Some gcc installations have out-of-date include files and need these
+   definitions to handle the "missing" prototypes.  This is NOT
+   autodetected, but is provided and can be selected by using a switch
+   on the options line.
+
+   These are from stdlib.h, stdio.h, and unistd.h
+ */
+extern int FPRINTF(FILE*,const char*,...);
+extern int fflush(FILE *);
+#endif
+
+#include "calltrace.h"
+
+/* Declarations */
+#ifdef DEBUG_TRACE
+char *(TR_stack[TR_MAX_STACK]);
+int  TR_stack_sp = 0, TR_stack_debug = 0;
+
+void TR_stack_init( int flag )
+{
+    TR_stack_debug = flag;
+}
+
+/* Generate a stack trace */
+void TR_stack_print( 
+	FILE *fp, 
+	int dir )
+{
+    int i;
+
+    if (dir == 1) {
+	for (i=0; i<TR_stack_sp; i++) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+    else {
+	for (i=TR_stack_sp-1; i>=0; i--) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+}
+
+#else
+void TR_stack_init( int flag )
+{
+}
+#endif
Index: mpid/ch_smp/Makefile.in
===================================================================
--- mpid/ch_smp/Makefile.in	(revision 3116)
+++ mpid/ch_smp/Makefile.in	(working copy)
@@ -64,14 +64,14 @@
 	   mpid_init.c mpid_recv.c mpid_send.c \
 	   mpid_hsend.c mpid_hrecv.c mpid_pack.c \
 	   cmnargs.c mpid_misc.c mpid_smpi.c \
-	   shmem_coll.c
+	   shmem_coll.c objtrace.c calltrace.c
 
 VIAOBJECTS  = viainit.o viasend.o viarecv.o viacheck.o \
 	   viaparam.o viutil.o \
 	   mpid_init.o mpid_send.o mpid_recv.o \
 	   mpid_hsend.o mpid_hrecv.o mpid_pack.o cmnargs.o\
 	   mpid_misc.o mpid_smpi.o \
-	   shmem_coll.o
+	   shmem_coll.o objtrace.o calltrace.o
 
 # default_all is the target used by the MPICH build. It can be optimized
 # to not to the ranlib that default does. Is this necessary on modern machines?
Index: mpid/ch_smp/objtrace.c
===================================================================
--- mpid/ch_smp/objtrace.c	(revision 0)
+++ mpid/ch_smp/objtrace.c	(revision 3117)
@@ -0,0 +1,23 @@
+#include "mpiimpl.h"
+
+#include <stdio.h>
+
+FILE *MPIR_Ref_fp = 0;
+int  MPIR_Ref_flags = 0;
+
+void MPIR_Ref_init( 
+	int flag,
+	char *filename)
+{
+    MPIR_Ref_flags = flag;
+    if (flag) {
+	if (filename) {
+	    MPIR_Ref_fp = fopen( filename, "w" );
+	    if (!MPIR_Ref_fp) {
+		MPIR_Ref_flags = 0;
+	    }
+	}
+	else
+	    MPIR_Ref_fp = stdout;
+    }
+}
Index: mpid/ch_smp/calltrace.c
===================================================================
--- mpid/ch_smp/calltrace.c	(revision 0)
+++ mpid/ch_smp/calltrace.c	(revision 3117)
@@ -0,0 +1,60 @@
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifndef FPRINTF
+#define FPRINTF fprintf
+#endif
+
+#if defined(NEEDS_STDLIB_PROTOTYPES)
+#include <stdio.h>
+/* 
+   Some gcc installations have out-of-date include files and need these
+   definitions to handle the "missing" prototypes.  This is NOT
+   autodetected, but is provided and can be selected by using a switch
+   on the options line.
+
+   These are from stdlib.h, stdio.h, and unistd.h
+ */
+extern int FPRINTF(FILE*,const char*,...);
+extern int fflush(FILE *);
+#endif
+
+#include "calltrace.h"
+
+/* Declarations */
+#ifdef DEBUG_TRACE
+char *(TR_stack[TR_MAX_STACK]);
+int  TR_stack_sp = 0, TR_stack_debug = 0;
+
+void TR_stack_init( int flag )
+{
+    TR_stack_debug = flag;
+}
+
+/* Generate a stack trace */
+void TR_stack_print( 
+	FILE *fp, 
+	int dir )
+{
+    int i;
+
+    if (dir == 1) {
+	for (i=0; i<TR_stack_sp; i++) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+    else {
+	for (i=TR_stack_sp-1; i>=0; i--) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+}
+
+#else
+void TR_stack_init( int flag )
+{
+}
+#endif
Index: mpid/ch_psm/Makefile.in
===================================================================
--- mpid/ch_psm/Makefile.in	(revision 3116)
+++ mpid/ch_psm/Makefile.in	(working copy)
@@ -63,13 +63,14 @@
 	   psmpriv.c psmparam.c \
 	   mpid_init.c mpid_recv.c mpid_send.c \
 	   mpid_hsend.c mpid_hrecv.c mpid_pack.c \
-	   cmnargs.c mpid_misc.c shmem_coll.c mpid_smpi.c
+	   cmnargs.c mpid_misc.c shmem_coll.c mpid_smpi.c objtrace.c calltrace.c
 
 VIAOBJECTS  = psmprobe.o psmwait.o psminit.o psmsend.o psmrecv.o psmcheck.o \
 	   psmpriv.o psmparam.o \
 	   mpid_init.o mpid_send.o mpid_recv.o \
 	   mpid_hsend.o mpid_hrecv.o mpid_pack.o cmnargs.o \
-	   mpid_misc.o shmem_coll.o mpid_smpi.o
+	   mpid_misc.o shmem_coll.o mpid_smpi.o \
+	   objtrace.o calltrace.o
 
 # default_all is the target used by the MPICH build. It can be optimized
 # to not to the ranlib that default does. Is this necessary on modern machines?
Index: mpid/ch_psm/objtrace.c
===================================================================
--- mpid/ch_psm/objtrace.c	(revision 0)
+++ mpid/ch_psm/objtrace.c	(revision 3117)
@@ -0,0 +1,23 @@
+#include "mpiimpl.h"
+
+#include <stdio.h>
+
+FILE *MPIR_Ref_fp = 0;
+int  MPIR_Ref_flags = 0;
+
+void MPIR_Ref_init( 
+	int flag,
+	char *filename)
+{
+    MPIR_Ref_flags = flag;
+    if (flag) {
+	if (filename) {
+	    MPIR_Ref_fp = fopen( filename, "w" );
+	    if (!MPIR_Ref_fp) {
+		MPIR_Ref_flags = 0;
+	    }
+	}
+	else
+	    MPIR_Ref_fp = stdout;
+    }
+}
Index: mpid/ch_psm/calltrace.c
===================================================================
--- mpid/ch_psm/calltrace.c	(revision 0)
+++ mpid/ch_psm/calltrace.c	(revision 3117)
@@ -0,0 +1,60 @@
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifndef FPRINTF
+#define FPRINTF fprintf
+#endif
+
+#if defined(NEEDS_STDLIB_PROTOTYPES)
+#include <stdio.h>
+/* 
+   Some gcc installations have out-of-date include files and need these
+   definitions to handle the "missing" prototypes.  This is NOT
+   autodetected, but is provided and can be selected by using a switch
+   on the options line.
+
+   These are from stdlib.h, stdio.h, and unistd.h
+ */
+extern int FPRINTF(FILE*,const char*,...);
+extern int fflush(FILE *);
+#endif
+
+#include "calltrace.h"
+
+/* Declarations */
+#ifdef DEBUG_TRACE
+char *(TR_stack[TR_MAX_STACK]);
+int  TR_stack_sp = 0, TR_stack_debug = 0;
+
+void TR_stack_init( int flag )
+{
+    TR_stack_debug = flag;
+}
+
+/* Generate a stack trace */
+void TR_stack_print( 
+	FILE *fp, 
+	int dir )
+{
+    int i;
+
+    if (dir == 1) {
+	for (i=0; i<TR_stack_sp; i++) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+    else {
+	for (i=TR_stack_sp-1; i>=0; i--) {
+	    FPRINTF( fp, "(%d) %s\n", i, TR_stack[i] );
+	}
+    }
+}
+
+#else
+void TR_stack_init( int flag )
+{
+}
+#endif


More information about the mvapich-discuss mailing list