[mpich2-dev] Failures on Solaris and standard debug macros
William Gropp
wgropp at illinois.edu
Sat Dec 13 19:12:06 CST 2008
Mea Culpa! I'll be more careful next time.
Bill
On Dec 10, 2008, at 3:05 PM, Dave Goodell wrote:
> By the way, Bill, you were responsible for two out of the three
> offending macros that Darius just fixed in r3676:
>
> % for i in $(svn log -v -r 3676 | grep '^ *M ' | awk '{print $2}') ;
> do ; svn blame $SVN_ROOT/$i at 3675 | egrep '#define .*(.*\.\.\.)' ; done
> 3174 gropp #define dprintf(...)
> 100 balaji #define printf_dd(x...) /*printf (x) */
> 3200 gropp #define dprintf(...)
>
> I understand that these were from someone else's changes that you
> merged from another branch, but ultimately merging to trunk is the
> best time to scrutinize this sort of thing.
>
> -Dave
>
> On Dec 10, 2008, at 2:22 PM, Darius Buntinas wrote:
>
>>
>> I removed vararg macros from three places. The remaining ones are in
>> hydra, where it looks like there's an #ifdef to check if they're
>> supported, and the ib netmod which isn't used anyway.
>>
>> -d
>>
>> On 12/10/2008 08:28 AM, William Gropp wrote:
>>> This morning's failures to compile on Solaris are due to the use
>>> of a
>>> varargs macro definition, which is not universally supported. This
>>> was
>>> used for some debug printfs in the code, as a way to turn them on
>>> and
>>> off easily. This approach, while quick, has several flaws:
>>>
>>> 1) Even in the debug/development version of the code, it requires
>>> recompilation of the file
>>> 2) It violates the coding standard that restricts the use of printf
>>> (this is done to ensure that error messages can be correctly
>>> internationalized - raw printfs with error messages are incorrect
>>> in any
>>> code that intends to support other languages)
>>>
>>> There is a solution - there are debugging macros that allow the
>>> informational statements to be turned on and off by class at run
>>> time,
>>> and that can be eliminated entirely in production versions. These
>>> are
>>> used throughout the MPICH2 code and are preferable to the use of raw
>>> printfs. The are a bit longer, but through the use of editor
>>> macros or
>>> simply saving the template in an editor register, are easy to
>>> insert.
>>> See http://wiki.mcs.anl.gov/mpich2/index.php/Debug_Event_Logging for
>>> instructions on using these macros.
>
William Gropp
Deputy Director for Research
Institute for Advanced Computing Applications and Technologies
Paul and Cynthia Saylor Professor of Computer Science
University of Illinois Urbana-Champaign
More information about the mpich2-dev
mailing list