Quoting from a different manpage for ftruncate:
      [T]he POSIX standard allows two behaviours for ftruncate
when length exceeds the file length [...]: either returning an error, or
      extending the file.
So, if that is to be trusted, it is not legal by POSIX to *silently* not extend the file.

-Paul

George Bosilca wrote:
Talking with Aurelien here @ UT we think we came-up with a possible way to get such an error. Before explaining this let me set the bases.

There are 2 critical functions used in setting up the shared memory file. One is ftruncate the other one mmap. Here are two snippets from these functions documentation (with the interesting part between _).

- ftruncate: . If it was _previously shorter than length, it is unspecified whether the file is changed or its size increased_. If the file is extended, the extended area appears as if it were zero-filled.

- mmap: _The range of bytes starting at off and continuing for len bytes shall be legitimate for the possible (not necessarily current) offsets in the file_, shared memory object, or [TYM] typed memory object represented by fildes.

As you can see ftruncate can succeed without increasing the size of the file to what we specified. Moreover, there is no way to know if the size was really increased or not, as ftruncate will return zero in all cases (except the really fatal ones). On the other hand, mmap suppose that the len is a legitimate length (as I guess it has no way to check that).

In our specific case, if the file system is full then ftruncate might not do what we expect it to do, and mmap will be just happy to map the file to some memory. Later on when we really access the memory ... guess what ... we lamentably fail with a segfault as there is no such address.

We only see one way around this. It will not prevent us from segfaulting but at least we can segfault in a known place, and we can put a message in the FAQ about this. The solution is to touch the last byte in the mmaped region which will force the operating system to really allocate the whole memory region. If this cannot succeed then we segfault, and if it can then we're good for the remaining of the execution.

  george.

On Mar 27, 2009, at 13:30 , Tim Mattox wrote:

Eugene,
I think I remember setting up the MTT tests on Sif so that tests
are run both with and without the coll_hierarch component selected.
The coll_hierarch component stresses code paths and potential
race conditions in its own way.  So, if the problems are showing up
more frequently for the test runs with the coll_hierarch component
enabled, then I would check the communicator creation code paths.

Now that I'm at SiCortex, I don't have time to look into these IU MTT
failures not that I had a bunch of time while at IU ;-), but you can get
to a lot of information with some work in the MTT reporter web page.
Also, hopefully Josh will have a little time to look into it.

Good luck!    -- Tim

On Fri, Mar 27, 2009 at 10:15 AM, Eugene Loh <eugene....@sun.com> wrote:
Josh Hursey wrote:

Sif is also running the coll_hierarch component on some of those tests which has caused some additional problems. I don't know if that is related
or not.

Indeed. Many of the MTT stack traces (for both 1.3.1 and 1.3.2 and that have seg faults and call out mca_btl_sm.so) do involve collectives and/or have mca_coll_hierarch.so in their stack traces. I could well imagine this
is the culprit, though I do not know for sure.

Ralph Castain wrote:

Hmmm...Eugene, you need to be a tad less sensitive. Nobody was attempting
to indict you or in any way attack you or your code.

Yes, I know, though thank you for saying so. I was overdoing the defensive rhetoric trying to be funny, but I confess it's nervous humor. There was
stuff in the sm code that I couldn't see how it was 100% robust.
 Nevertheless, I let that style remain in the code with my changes...
perhaps even pushing it a little bit. My putbacks include a comment or two
to that effect.  E.g.,
https://svn.open-mpi.org/source/xref/ompi-trunk/ompi/mca/btl/sm/btl_sm.c?r=20774#523 . I understand why the occasional failures that Jeff and Terry saw did not hold up 1.3.1, but I'd really like to understand them and fix them. But at 0.01% fail rate (<0.001% for me... I've never seen it in 100Ks of runs), all
I can do about etiology and fixes is speculate.

Okay, joke overdone and nervousness no longer funny. Indeed, annoying. I
stop.

Since we clearly see problems on sif, and Josh has indicated a
willingness to help with debugging, this might be a place to start the investigation. If asked nicely, they might even be willing to grant access
to the machine, if that would help.

Maybe a starting point would be running IU_Sif without coll_hierarch and
seeing where we stand.

And, again, my gut feel is that the failures are unrelated to the 0.01%
failures that Jeff and Terry were seeing.
_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel




--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
timat...@sicortex.com || timat...@open-mpi.org
   I'm a bright... http://www.the-brights.net/

_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel


--
Paul H. Hargrove                          phhargr...@lbl.gov
Future Technologies Group                 Tel: +1-510-495-2352
HPC Research Department                   Fax: +1-510-486-6900
Lawrence Berkeley National Laboratory

Reply via email to