I need some help trying to work out why CGI.pm (guessing at the module) appears to unlink a temporary file just after opening it and before writing some uploaded file content to it.
I use <input type=file> in a form which I POST to a modperl Apache server (version 2.2.14) on Fedora 10. Intermittently the perl script is unable to access the CGItemp file. Here's what I have found: A network/packet trace shows the correct transmission of the HTTP and file each time. A Data::Dumper of the CGI variable instance shows the form variable has been set to a file handle like this 'config_file' => [ $VAR1->{'.tmpfiles'}{'*Fh::fh00013Smartmon_Initial_Config_Export.txt'}{'hndl'} ] However when the program goes to access the temporary file eg /usr/tmp/45632, it does not exist. I started printing the httpd PID in the HTTP output and found that some of the processes consistently failed and others would consistently work. I ran an strace on each of the httpd processes (running with 5 children) and found that the failing processes would unlink the CGItemp file just after opening it - so this is why it is unavailable to the perl script later on. A good processes would open the CGItemp file and then start writing to it. GOOD PROCESS (strace output): ------------------------------- open("/usr/tmp/CGItemp45478", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 22 ioctl(22, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfcc4e08) = -1 ENOTTY (Inappropriate ioctl for device) _llseek(22, 0, [0], SEEK_CUR) = 0 fstat64(22, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 fcntl64(22, F_SETFD, FD_CLOEXEC) = 0 write(22, "[MonsvrConfig]\r\nmonsvr_protocol="..., 3464) = 3464 BAD PROCESS (strace output): ----------------------------- open("/usr/tmp/CGItemp45481", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 21 ioctl(21, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfcc4e08) = -1 ENOTTY (Inappropriate ioctl for device) _llseek(21, 0, [0], SEEK_CUR) = 0 fstat64(21, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 fcntl64(21, F_SETFD, FD_CLOEXEC) = 0 unlink("/usr/tmp/CGItemp45481") = 0 Why does it get unlinked just after opening and before the uploaded content can be written to it? -- View this message in context: http://old.nabble.com/Intermittent-File-Upload-Failures---CGI-tmpfile-unlinked-tp28078476p28078476.html Sent from the mod_perl - General mailing list archive at Nabble.com.