IOException and ARM

My client is still having issues with my app writing files. He has a slightly unusual setup - two ARM computers, one running RaspPi (32bit) and the other running Odroid (64bit) I can only compile ARM32 so my app has to run on the RaspPi but has to write files to the Oroid.

So my client set up some type of networking, where specifying “/mnt/wav” is the path to a folder called “wav” somewhere on the Odroid.

The problem (and it could be his, but I want to help solve the issue) is that whenever I do a BN = BinaryStream.Create(f, true) (where the path for f is /mnt/wav/newfile.wav) Xojo throws a IOException error, but a file named “newfile.wav” is created in the correct location with zero length.

He says “I can scp or mv files and I can save text files there, etc. I’ve got the shared NFS (/mnt/wav) set to accept the UID or GID of any user, and all permissions are granted.”

Any thought what could be the issue?

This exception should be reporting an ErrorNumber and Message. If you can get that information from the client it would help to know.

ErrorNumber is 2. err.Reason and err.Message do not contain anything.

He also says:

The networked drive is using NFS version 3 and /etc/exports is set to:
(rw, sync, no_subtree_check, all_squash, anonuid=1000, anongid=1000)
That uid and gid are set to 1000 because that is currently the uid and gid for both user ‘pi’ on the Pi and user ‘odroid’ on the Odroid. I’m not sure when Syncer is running and writing what ‘user’ the Pi and Odroid think it is though, similar to what you mentioned in your email last night. Maybe that’s what’s up, but the ‘all_squash’ should take care of that.
When I check permissions of /home/odroid/pipes/wav on the Odroid they are: drwrwxrwxrwx 2 odroid odroid
When I check permissions of /mnt/wav on the Pi they are: drwrwxrwxrwx 2 pi pi

Error number 2 on Raspbian should be:

#define	ENOENT 2	/* No such file or directory */

Nice to know but doesn’t address the question. In fact it makes it more confusing. A file IS being written there, it’s just zero length - AND Xojo throws the error. So the path is valid, otherwise it wouldn’t write the zero-length file.

Start your app with sudo and see what that does

You could try LargeBinaryStreamMBS class instead.

But if it runs against similar limit (e.g. quota) or permissions are limited, it may not be different.