This is more subtle that described here. It's a vectorization problem
and frankly it should appear on all loop-based string operations and
for most compilers (confirmed with gcc, clang and icc). The proposed
patch is merely a band-aid ...
More info @ https://bugs.launchpad.net/ubuntu/+source/valgrind/+bug/852760.
A better fix for this issue will be to add "-fno-builtin-strdup" to
your CFLAGS when compiling Open MPI.
On Wed, May 21, 2014 at 5:34 PM, Ralph Castain <rhc_at_[hidden]> wrote:
> Wow, that is hilarious. I see no problem with adding the extra characters :-)
> Scheduled it for 1.8.2 (copied you on ticket)
> On May 21, 2014, at 3:29 PM, W Spector <w6ws_at_[hidden]> wrote:
>> When running under valgrind, I get warnings from each MPI process at MPI_Init time. The warnings come from function sec_basic.c at lines 70 and 71 (openmpi v1.8.1):
>> my_cred.credential = strdup("12345");
>> my_cred.size = strlen(my_cred.credential)+1; // include the NULL
>> This is because strdup(3c) and strlen(3c) are apparently optimized to use 4-byte integer loads to speed up the copy and search operations, and "overrun" the malloced area. (In fact, since malloc tends to pad allocations, it is safe. But valgrind doesn't know that.)
>> Since the "12345" appears to be a dummy string, would it be ok to add a couple of additional characters in the strdup call to:
>> my_cred.credential = strdup("1234567");
>> This gives an 8 byte string (counting the NULL) and quiets valgrind down.
>> users mailing list
> users mailing list