mitchm has asked for the wisdom of the Perl Monks concerning the following question:

Hey again monks...

I've succesfully created a perl module, using perlxs that calls functions from a C lib, and it is working flawlessly on my machine with perl 5.8.0 and libc6 2.3.2.

However, when I move the library to one of the development machines and recompile it, it still runs, however I get wierd file access errors.

The C lib creates a log file successfully and writes to it. But then when the C lib tries to create some tmp files, it dies with an error of "Could not create file"

doing an strace gives the following :

open("/tmp/qas/qa000001.tmp", O_RDWR) = -1 ENOENT (No such file or dir +ectory) open("/tmp/qas/qa000001.tmp", O_RDWR|O_CREAT|O_TRUNC, 0664) = 5 close(5) = 0 rmdir("/tmp/qas/qa000001.tmp") = -1 ENOTDIR (Not a directory) unlink("/tmp/qas/qa000001.tmp") = 0

Which I take to mean it created the file successfuly, then deleted it for some reason.

The /tmp/qas directory is writable by the user the perl script is run as.

The only things that I can see that have changed (relevant) are the perl version and the libc6 version.

Does anyone have any ideas that will stop me banging my head against a wall?

Replies are listed 'Best First'.
Re: perlxs and 5.6.1
by mitchm (Initiate) on Oct 03, 2003 at 06:10 UTC
    Sorry, should have mentioned the versions on the development machine are perl 5.6.1 and libc6 2.2.5.