Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2007-01-24 20:23:38


Patrick can commit, or as soon as they get us an amendment with
Reese's name on schedule A, he can commit directly... ;-)

On Jan 24, 2007, at 7:18 PM, Brian W. Barrett wrote:

> I think this is a reasonable thing to commit. However, keep in mind
> that %p isn't totally portable. I think it should be good on all the
> platforms GM/MX support, but probably not a great idea to use it in
> the general codebase.
>
> But still reasonable to make the code at this level understand it so
> that you can use %p in components that will only be used on platforms
> where it's likely supported...
>
> I actually think the
>
> So commit away ;)
>
> Brian
>
> On Jan 24, 2007, at 4:09 PM, Reese Faucette wrote:
>
>> [repost - apologies, apparently my first one was unintentionally a
>> followup to another thread]
>>
>> If you ever do an opal_output() with a "%p" in the format string,
>> guess_strlen() can segfault because it neglects to consume the
>> corresponding
>> argument, causing subsequent "%s" in the same format string to blow
>> up in
>> strlen() on a bad address. Any objections to the following patch
>> to add %p
>> support? If I were to check this in, is there some automated build
>> process
>> that will inform me I broke the build on, say, 43-bit Zurix
>> machines ?
>>
>> If the llarg = (uintptr_t) business is scary (it is to me a
>> little), a much
>> more conservative would be: len += 2*sizeof(void *)+2;
>>
>> -reese
>>
>> Index: opal/util/printf.c
>> ===================================================================
>> --- opal/util/printf.c (revision 13271)
>> +++ opal/util/printf.c (working copy)
>> @@ -45,6 +45,7 @@
>> int iarg;
>> int len;
>> long larg;
>> + long long llarg;
>>
>> /* Start off with a fudge factor of 128 to handle the %
>> escapes that
>> we aren't calculating here */
>> @@ -90,6 +91,17 @@
>> } while (0 != iarg);
>> break;
>>
>> + case 'p':
>> + sarg = va_arg(ap, char *);
>> + llarg = (uintptr_t) sarg;
>> + len +=2; /* allow for "0x" */
>> + /* Now get the log16 */
>> + do {
>> + ++len;
>> + llarg /= 16;
>> + } while (0 != llarg);
>> + break;
>> +
>> case 'f':
>> farg = (float)va_arg(ap, int);
>> /* Alloc for minus sign */
>>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> --
> Brian Barrett
> Open MPI Team, CCS-1
> Los Alamos National Laboratory
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
Server Virtualization Business Unit
Cisco Systems