Before containing the pointer to ompi_proc_t the group is composed of the
inverse vpid (the negative assumption comes from here). Thus we cannot use
the last bit, as the vpid might use it. If we shift the vpid to the left by
1, we can use the last bit as the sentinel.

  George.


On Fri, Sep 11, 2015 at 3:50 AM, Gilles Gouaillardet <gil...@rist.or.jp>
wrote:

> Nathan,
>
> i am experiencing some issues and i found commit
> 0bf06de3f1444f469303e47752430ec9b423b33f
>
> https://github.com/open-mpi/ompi/commit/0bf06de3f1444f469303e47752430ec9b423b33f
> and the following are very likely the root cause.
>
> i experience this on a linux sparc system only.
>
> Per the commit log :
> "[...] This takes advantage of the fact that on most (all?)
>     systems the top bit of a user-space pointer is never set. If this
>     changes then a new sentinel will be needed."
>
> i am sorry to report the assumption is wrong :-(
>
> print group->grp_proc_pointers[0]
> Result = (struct ompi_proc_t *) 0xfffff8010010f540
>
> what about using the lower bit instead ?
> my assumption is that ompi_proc_t objects are aligned (static or malloc'ed
> one) on at least a pointer size (4 in x86) so the lower bit should always
> be zero.
>
> any thoughts ?
>
> Cheers,
>
> Gilles
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2015/09/18004.php
>

Reply via email to