The open() system call in f8 really broken...

Steve Dickson SteveD at redhat.com
Thu Aug 16 00:56:10 UTC 2007


Can some please explain why my process dies with the following
error:

*** invalid open64 call: O_CREAT without mode ***: 
/home/src/fc/nfs-utils/devel/nfs-utils-1.1.0/utils/exportfs/exportfs 
terminated

and the following change stops the error:

- if ((fd = open(fname, readonly? O_RDONLY : (O_RDWR|O_CREAT))) < 0) {
+ if ((fd = (open)(fname, readonly? O_RDONLY : (O_RDWR|O_CREAT))) < 0) {
           xlog(L_WARNING, "could not open %s for locking", fname);
           return -1;
    }

Which does not change the fact I'm using O_CREAT w/out a mode
So what is the point of killing the process???

Now If I'm not mistaken, its been legal since the 70s to use
O_CREAT without a mode because (depending on the OS) the mode
of parent directory will be used (or something similar)...

But the main point here is why are going to piss off the
entire community by killing processes that have run for
years and years because *we* decided to change the how the open
system call is interrupted...

If we want to strictly enforce the meaning of open() that
is fine... fixing broken code is always a good thing...
but don't kill process because of a misinterpretation that
happen years ago... Give the developers a chance to fix
the problem be throwing out a warning or something...
but *don't* kill the process! What happens if /sbin/init
has a bad open, we going to bring down a system out
of principal?

Please, for f8 give us a chance and change the kill to a
warning... and I sure in the end, by f9 all of the
developers (if we have any at that point) will be using
the open() system call correctly...

steved.




More information about the Fedora-maintainers mailing list