AFP548

10.4.3 breaks debian gcc on nfs mounts

I am doing embedded development on an arm 9 board running Debian 3.
I have the debian root nfsroot served from a PB G4 17" with 10.4.3
This setup worked in OS X 10.4.2. After the upgrade to 10.4.3 it no longer works. The bug is a subtle one. If I compile a file using gcc on the arm 9 and the a.out gets saved to the nfs file system (served by my P. The a.out file does not have execute permissions as it should.

This makes it impossible to build anything that uses a big make file.

The test is simple put the following in a file say foo.c
int main(){return 0;}

run
gcc foo.c

the result should be a file a.out with execute permissions.
However in 10.4.3 it doesn't. I think it is a timing problem or race condition problem. In unix you can't create a file with execute permissions due to the base mask. One has to change the permissions after the file is created. Normally gcc will do this if the file compiles correctly. I believe that in 10.4.3 the file gets created alright but when gcc then tries to change the permissions it can't because the server is caching the file creation.

If I run gcc foo.c a second time without first deleting a.out, a.out will then have execute permissions. I believe because it doesn't have to create the file this time so no race condition when it sets the permissions.

Once I detected the problem it took me a while to believe it was nfs that was the culprit. However if I do the nfs mount on 10.3.9 there is no problem. If I do the same gcc on the local flash file system of the ARM 9 a.out has execute permissions. In every case the nfs parameters are identical. I run the test as root. I discovered this problem while trying to build python from src.

Anybode have any idea how I can reconfigure 10.4.3 nfs server to behave like 10.4.2? or what changed so that I can experiment with my client configuration to compensate?

here is the fstab entry on my linux client
10.0.2.150:/nfs/nfsroot/ / nfs defaults,noauto 0 0

I believe the nfs client default options are as follows

rsize = 1024
wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac

and my nfs server export
nidump exports .
/Data/nfsroot -maproot=root -network=10.0.2.0 -mask=255.255.255.0


Exit mobile version