Currently, POSIX defines exactly one flag accessed via F_GETFD/F_SETFD and that is FD_CLOEXEC. However, it does not prohibit a conforming implementation from defining additional bits.
So, a portable program should assume other bits may be set and try to preserve them. Quoting from section 3.14 of Steven's Advanced Programming in the UNIX Environment: When we modify either the file descriptor flags or the file status flags, we must be careful to fetch the existing value, modify it as desired, and then set the new flag value. We can't simply issue an F_SETFD or F_SETFL command, as this could turn off flag bits that were previously set. See also the example in http://www.gnu.org/software/libc/manual/html_node/Descriptor-Flags.html -Paul [Who always does what the late W. Richard Stevens says to.] On Wed, Apr 23, 2014 at 3:11 PM, Jeff Squyres (jsquyres) <jsquy...@cisco.com > wrote: > We opened the fd a few lines above with default flags -- is the addition > GETFD necessary? > > > https://github.com/open-mpi/hwloc/blob/master/src/topology-linux.c#L4595 > > > On Apr 23, 2014, at 6:04 PM, Paul Hargrove <phhargr...@lbl.gov> wrote: > > > In order to preserve any existing flags, shouldn't this be more like: > > int prev; > > if ((-1 == (prev = fcntl(root, F_GETFD, 0)) || > > (-1 == fcntl(root, F_SETFD, FD_CLOEXEC | prev))) > > > > > > > > > > On Wed, Apr 23, 2014 at 2:55 PM, Jeff Squyres (jsquyres) < > jsquy...@cisco.com> wrote: > > Will do. > > > > On Apr 23, 2014, at 5:52 PM, Samuel Thibault <samuel.thiba...@inria.fr> > wrote: > > > > > Jeff Squyres (jsquyres), le Wed 23 Apr 2014 21:05:55 +0000, a écrit : > > >> Any objections to this patch? In OMPI, we're seeing this fd leak > into child processes. > > >> > > >> diff --git a/src/topology-linux.c b/src/topology-linux.c > > >> index e934d4c..8c5fba1 100644 > > >> --- a/src/topology-linux.c > > >> +++ b/src/topology-linux.c > > >> @@ -4601,6 +4601,13 @@ hwloc_linux_component_instantiate(struct > hwloc_disc_compo > > >> data->is_real_fsroot = 0; > > >> } > > >> > > > > > > We probably want an #ifdef FD_CLOEXEC here, not all systems have it. > > > > > >> + /* Since this fd stays open after hwloc returns, mark it as > > >> + close-on-exec so that children don't inherit it */ > > >> + if (fcntl(root, F_SETFD, FD_CLOEXEC) == -1) { > > >> + close(root); > > >> + root = -1; > > >> + goto out_with_data; > > >> + } > > >> #else > > >> if (strcmp(fsroot_path, "/")) { > > >> errno = ENOSYS; > > >> > > >> -- > > >> Jeff Squyres > > >> jsquy...@cisco.com > > >> For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > >> > > >> _______________________________________________ > > >> hwloc-devel mailing list > > >> hwloc-de...@open-mpi.org > > >> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel > > >> > > > > > > -- > > > Samuel > > > Je suis maintenant possesseur d'un ordinateur portable Compaq Armada > > > 1592DT avec port infra-rouge. Auriez-vous connaissance de programmes > > > suceptibles d'utiliser ce port afin de servir de télécommande ? > > > -+- JN in NPC : ben quoi, c'est pas à ça que ça sert ? > > > _______________________________________________ > > > hwloc-devel mailing list > > > hwloc-de...@open-mpi.org > > > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel > > > > > > -- > > Jeff Squyres > > jsquy...@cisco.com > > For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > > > _______________________________________________ > > hwloc-devel mailing list > > hwloc-de...@open-mpi.org > > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel > > > > > > > > -- > > Paul H. Hargrove phhargr...@lbl.gov > > Future Technologies Group > > Computer and Data Sciences Department Tel: +1-510-495-2352 > > Lawrence Berkeley National Laboratory Fax: +1-510-486-6900 > > _______________________________________________ > > hwloc-devel mailing list > > hwloc-de...@open-mpi.org > > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel > > > -- > Jeff Squyres > jsquy...@cisco.com > For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > _______________________________________________ > hwloc-devel mailing list > hwloc-de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel > -- Paul H. Hargrove phhargr...@lbl.gov Future Technologies Group Computer and Data Sciences Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900