On 12/17/2014 07:04 PM, Eric Chamberland wrote:
Hi!

Here is a "poor man's fix" that works for me (the idea is not from me,
thanks to Thomas H.):

#1- char* lCwd = getcwd(0,0);
#2- chdir(lPathToFile);
#3- MPI_File_open(...,lFileNameWithoutTooLongPath,...);
#4- chdir(lCwd);
#5- ...

I think there are some limitations but it works very well for our
uses... and until a "real" fix is proposed...

A bit of a delay on my part due to the winter break but I have returned to this topic.

I have an approach that will at least tell you something went wrong in processing the shared file pointer name: the string is so long it truncates the error message, but it leaves enough to tell you what went wrong.

ERROR Returned by MPI: 1006695702
ERROR_string Returned by MPI: Invalid file name, error stack:
ADIOI_Shfp_fname(60): Pathname this/is/a_very/long/path/that/contains/a/not/so/long/filename
/but/trying/to/collectively/mpi_file_open/it/you/will/have/a/memory/corruption/resulting/of/
invalide/writing/or/reading/past/the/end/of/one/or/some/hidden/strings/in/mpio/Simpimple/use
r


At least you get "invalid file name"

Furthermore, I'm changing that code to use PATH_MAX, not 256, which would have fixed the specific problem you encountered (and might have been sufficient to get us 10 more years, at which point someone might try to create a file with 1000 characters in it)

==rob


Thanks for helping!

Eric


On 12/15/2014 11:42 PM, Gilles Gouaillardet wrote:
Eric and all,

That is clearly a limitation in romio, and this is being tracked at
https://trac.mpich.org/projects/mpich/ticket/2212

in the mean time, what we can do in OpenMPI is update
mca_io_romio_file_open() and fails with a user friendly error message
if strlen(filename) is larger that 225.

Cheers,

Gilles

On 2014/12/16 12:43, Gilles Gouaillardet wrote:
Eric,

thanks for the simple test program.

i think i see what is going wrong and i will make some changes to avoid
the memory overflow.

that being said, there is a hard coded limit of 256 characters, and your
path is bigger than 300 characters.
bottom line, and even if there is no more memory overflow, that cannot
work as expected.

i will report this to the mpich folks, since romio is currently imported
from mpich.

Cheers,

Gilles

On 2014/12/16 0:16, Eric Chamberland wrote:
Hi Gilles,

just created a very simple test case!

with this setup, you will see the bug with valgrind:

export
too_long=./this/is/a_very/long/path/that/contains/a/not/so/long/filename/but/trying/to/collectively/mpi_file_open/it/you/will/have/a/memory/corruption/resulting/of/invalide/writing/or/reading/past/the/end/of/one/or/some/hidden/strings/in/mpio/Simple/user/would/like/to/have/the/parameter/checked/and/an/error/returned/or/this/limit/removed


mpicc -o bug_MPI_File_open_path_too_long
bug_MPI_File_open_path_too_long.c

mkdir -p $too_long
echo "header of a text file" > $too_long/toto.txt

mpirun -np 2 valgrind ./bug_MPI_File_open_path_too_long
$too_long/toto.txt

and watch the errors!

unfortunately, the memory corruptions here doesn't seem to segfault
this simple test case, but in my case, it is fatal and with valgrind,
it is reported...

OpenMPI 1.6.5, 1.8.3rc3 are affected

MPICH-3.1.3 also have the error!

thanks,

Eric

_______________________________________________
users mailing list
us...@open-mpi.org
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
Link to this post:
http://www.open-mpi.org/community/lists/users/2014/12/26005.php
_______________________________________________
users mailing list
us...@open-mpi.org
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
Link to this post:
http://www.open-mpi.org/community/lists/users/2014/12/26006.php


--
Rob Latham
Mathematics and Computer Science Division
Argonne National Lab, IL USA

Reply via email to