Eric,

As long as lFileNameWithoutTooLongPath length is less than 226 characters and 
you do not run into some threads related race conditions, that should be just 
fine, and that roughly covers 99% cases.

Thanks for sharing this workaround !

Cheers,

Gilles

Eric Chamberland <eric.chamberl...@giref.ulaval.ca> 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...
>
>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
>
>_______________________________________________
>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/26022.php

Reply via email to