Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] debugger changes
From: Ashley Pittman (ashley_at_[hidden])
Date: 2011-11-08 17:43:23


I think the volatiles are there to ensure the compiler doesn't optimise away reads or function calls which has been a problem with this interface in the past.

On 8 Nov 2011, at 22:18, George Bosilca wrote:

> MPIR_Breakpoint, as the name indicates, it is just a breakpoint used by the startup process or the MPI application to signal changes to the debugger. No return value, nothing more than a breakpoint.
>
> I wonder how the volatile got there, there is no such requirement on variables that cannot be changed during execution.
>
> george.
>
> On Nov 8, 2011, at 08:36 , Jeff Squyres wrote:
>
>> I think the only possible controversial change in this commit is changing MPIR_Breakpoint() to return (void) instead of (void*). Oddly, I see that MPICH2 has 2 different prototypes for MPIR_Breakpoint -- one returns (void*), another returns (int). Assuming that MPICH2 works fine with the debuggers, this suggests that the return is ignored by the tools -- as it should be.
>>
>> I didn't check the volatile removals; I'm assuming that George got them right. :-)
>>
>> I'll bet that this change does not cause any problems, but it might be worth checking with the big 3+1:
>>
>> - DDT
>> - Totalview
>> - padb
>> - stat
>>
>>
>> On Nov 7, 2011, at 8:24 PM, bosilca_at_[hidden] wrote:
>>
>>> Author: bosilca
>>> Date: 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> New Revision: 25456
>>> URL: https://svn.open-mpi.org/trac/ompi/changeset/25456
>>>
>>> Log:
>>> Put the interface of our MPIR support in sync with the document accepted by the MPI
>>> Forum (http://www.mpi-forum.org/docs/mpir-specification-10-11-2010.pdf).
>>>
>>> Text files modified:
>>> trunk/ompi/debuggers/debuggers.h | 28 ++++++++++++++--------------
>>> trunk/orte/mca/debugger/base/base.h | 10 +++++-----
>>> trunk/orte/mca/debugger/base/debugger_base_fns.c | 6 +++---
>>> trunk/orte/mca/debugger/base/debugger_base_open.c | 6 +++---
>>> 4 files changed, 25 insertions(+), 25 deletions(-)
>>>
>>> Modified: trunk/ompi/debuggers/debuggers.h
>>> ==============================================================================
>>> --- trunk/ompi/debuggers/debuggers.h (original)
>>> +++ trunk/ompi/debuggers/debuggers.h 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -31,20 +31,20 @@
>>>
>>> BEGIN_C_DECLS
>>>
>>> - /**
>>> - * Wait for a debugger if asked.
>>> - */
>>> - extern void ompi_wait_for_debugger(void);
>>> -
>>> - /**
>>> - * Notify a debugger that we're about to abort
>>> - */
>>> - extern void ompi_debugger_notify_abort(char *string);
>>> -
>>> - /**
>>> - * Breakpoint function for parallel debuggers.
>>> - */
>>> - ORTE_DECLSPEC extern void *MPIR_Breakpoint(void);
>>> +/**
>>> + * Wait for a debugger if asked.
>>> + */
>>> +extern void ompi_wait_for_debugger(void);
>>> +
>>> +/**
>>> + * Notify a debugger that we're about to abort
>>> + */
>>> +extern void ompi_debugger_notify_abort(char *string);
>>> +
>>> +/**
>>> + * Breakpoint function for parallel debuggers.
>>> + */
>>> +ORTE_DECLSPEC extern void MPIR_Breakpoint(void);
>>>
>>> END_C_DECLS
>>>
>>>
>>> Modified: trunk/orte/mca/debugger/base/base.h
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/base.h (original)
>>> +++ trunk/orte/mca/debugger/base/base.h 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -61,18 +61,18 @@
>>> ORTE_DECLSPEC extern int MPIR_proctable_size;
>>> ORTE_DECLSPEC extern volatile int MPIR_being_debugged;
>>> ORTE_DECLSPEC extern volatile int MPIR_debug_state;
>>> -ORTE_DECLSPEC extern volatile int MPIR_i_am_starter;
>>> +ORTE_DECLSPEC extern int MPIR_i_am_starter;
>>> ORTE_DECLSPEC extern int MPIR_partial_attach_ok;
>>> -ORTE_DECLSPEC extern volatile char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> -ORTE_DECLSPEC extern volatile char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> +ORTE_DECLSPEC extern char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> +ORTE_DECLSPEC extern char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> ORTE_DECLSPEC extern volatile int MPIR_forward_output;
>>> ORTE_DECLSPEC extern volatile int MPIR_forward_comm;
>>> ORTE_DECLSPEC extern char MPIR_attach_fifo[MPIR_MAX_PATH_LENGTH];
>>> ORTE_DECLSPEC extern int MPIR_force_to_main;
>>>
>>> -typedef void* (*orte_debugger_breakpoint_fn_t)(void);
>>> +typedef void (*orte_debugger_breakpoint_fn_t)(void);
>>>
>>> -ORTE_DECLSPEC void* MPIR_Breakpoint(void);
>>> +ORTE_DECLSPEC void MPIR_Breakpoint(void);
>>>
>>> /* --- end MPICH/TotalView std debugger interface definitions */
>>>
>>>
>>> Modified: trunk/orte/mca/debugger/base/debugger_base_fns.c
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/debugger_base_fns.c (original)
>>> +++ trunk/orte/mca/debugger/base/debugger_base_fns.c 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -168,7 +168,7 @@
>>> */
>>> ORTE_PROGRESSED_WAIT(false, jdata->num_reported, jdata->num_procs);
>>>
>>> - (void) MPIR_Breakpoint();
>>> + MPIR_Breakpoint();
>>>
>>> /* send a message to rank=0 to release it */
>>> OBJ_CONSTRUCT(&buf, opal_buffer_t); /* don't need anything in this */
>>> @@ -186,7 +186,7 @@
>>> /*
>>> * Breakpoint function for parallel debuggers
>>> */
>>> -void *MPIR_Breakpoint(void)
>>> +void MPIR_Breakpoint(void)
>>> {
>>> - return NULL;
>>> + return;
>>> }
>>>
>>> Modified: trunk/orte/mca/debugger/base/debugger_base_open.c
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/debugger_base_open.c (original)
>>> +++ trunk/orte/mca/debugger/base/debugger_base_open.c 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -43,10 +43,10 @@
>>> int MPIR_proctable_size = 0;
>>> volatile int MPIR_being_debugged = 0;
>>> volatile int MPIR_debug_state = 0;
>>> -volatile int MPIR_i_am_starter = 0;
>>> +int MPIR_i_am_starter = 0;
>>> int MPIR_partial_attach_ok = 1;
>>> -volatile char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> -volatile char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> +char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> +char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> volatile int MPIR_forward_output = 0;
>>> volatile int MPIR_forward_comm = 0;
>>> char MPIR_attach_fifo[MPIR_MAX_PATH_LENGTH];
>>> _______________________________________________
>>> svn-full mailing list
>>> svn-full_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full
>>
>>
>> --
>> Jeff Squyres
>> jsquyres_at_[hidden]
>> For corporate legal information go to:
>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel