All,

The message queue code in the head seems to be broken as well, the
image_has_queues function is failing because it can't find type
mca_topo_base_comm_1_0_0_t in the program.

Attached is a simple patch which improves the error message reported to
the user, it does not however allow message queue debugging to work.

For the time being I've simply commented out the code relating to
mca_topo_base_comm_1_0_0_t in ompi_common_dll.c as it appears to relate
to new functionality which I'm not using.

Ashley,
Index: ompi/debuggers/ompi_msgq_dll.c
===================================================================
--- ompi/debuggers/ompi_msgq_dll.c	(revision 21235)
+++ ompi/debuggers/ompi_msgq_dll.c	(working copy)
@@ -360,11 +360,12 @@
 int mqs_image_has_queues (mqs_image *image, char **message)
 {
     mpi_image_info * i_info = (mpi_image_info *)mqs_get_image_info (image);
-
+    int res;
+    
     i_info->extra = NULL;

     /* Default failure message ! */
-    *message = "The symbols and types in the Open MPI library used by TotalView\n"
+    *message = "The symbols and types in the Open MPI library\n"
         "to extract the message queues are not as expected in\n"
         "the image '%s'\n"
         "No message queue display is possible.\n"
@@ -386,7 +387,10 @@
     }

     /* Fill in the type information */
-    return ompi_fill_in_type_info(image, message);
+    res =  ompi_fill_in_type_info(image);
+    if ( res == mqs_ok )
+      *message = NULL;
+    return res;
 } /* mqs_image_has_queues */

 /***********************************************************************
Index: ompi/debuggers/ompi_common_dll.c
===================================================================
--- ompi/debuggers/ompi_common_dll.c	(revision 21235)
+++ ompi/debuggers/ompi_common_dll.c	(working copy)
@@ -76,7 +76,7 @@
  * basic type for the requests as they hold all the information we
  * need to export to the debugger.
  */
-int ompi_fill_in_type_info(mqs_image *image, char **message)
+int ompi_fill_in_type_info(mqs_image *image)
 {
     char* missing_in_action;
     mpi_image_info * i_info = (mpi_image_info *)mqs_get_image_info (image);
@@ -399,7 +399,6 @@
     }

     /* All the types are here. Let's succesfully return. */
-    *message = NULL;
     return mqs_ok;

  type_missing:
@@ -408,7 +407,6 @@
      * unable to extract the information we need from the pointers. We
      * did our best but here we're at our limit. Give up!
      */
-    *message = missing_in_action;
     printf( "The following type is missing %s\n", missing_in_action );
     return err_missing_type;
 }
Index: ompi/debuggers/ompi_common_dll_defs.h
===================================================================
--- ompi/debuggers/ompi_common_dll_defs.h	(revision 21235)
+++ ompi/debuggers/ompi_common_dll_defs.h	(working copy)
@@ -282,7 +282,7 @@
 extern const mqs_basic_callbacks *mqs_basic_entrypoints;

 /* OMPI-specific functions */
-int ompi_fill_in_type_info(mqs_image *image, char **message);
+int ompi_fill_in_type_info(mqs_image *image);

 /* Fetch a pointer from the process */
 mqs_taddr_t ompi_fetch_pointer(mqs_process *proc, mqs_taddr_t addr, 

Reply via email to