text: /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
  /*
   *
   *  (C) 2012 by Argonne National Laboratory.
   *      See COPYRIGHT in top-level directory.
   */
  #include "mpi.h"
  #include <stdio.h>
  
  /* style: allow:printf:6 sig:0 */
  
  /* This definition is almost the same as the MPIR_Comm_list in dbginit,
     except a void * is used instead of MPIR_Comm * for head; for the use
     here, void * is all that is needed */
  typedef struct MPIR_Comm_list {
      int sequence_number;        /* Used to detect changes in the list */
      void *head;                 /* Head of the list */
  } MPIR_Comm_list;
  
  extern MPIR_Comm_list MPIR_All_communicators;
  
  int main(int argc, char **argv)
  {
      int errs = 0;
      MPI_Init(&argc, &argv);
  
      printf("sequence number for communicators is %d\n", MPIR_All_communicators.sequence_number);
      printf("head pointer is %p\n", MPIR_All_communicators.head);
  
      if (MPIR_All_communicators.head == (void *) 0) {
          printf("ERROR: The communicator list field has a null head pointer\n");
          printf("Either the debugger support is not enabled (--enable-debuginfo)\n\
  or the necessary symbols, including the extern variable\n\
  MPIR_All_communicators, are not properly exported to the main program\n");
          errs++;
      }
  
      MPI_Finalize();
      if (errs) {
          printf(" Found %d errors\n", errs);
      } else {
          printf(" No Errors\n");
      }
  
      return 0;
  }
  