[fpc-devel]Re: Bug in AssignPipe() on Linux
Marco van de Voort
marcov at stack.nl
Sun Nov 9 20:02:04 CET 2003
[ Charset ISO-8859-1 unsupported, converting... ]
> Marco van de Voort wrote:
> > - Do an strace, and see if there is a function that fails.
>
> Everything seems OK.
>
> $ strace pipetest
> execve("/home/plc/Pascal/test1.9/pipetest", ["pipetest"], [/* 63 vars */]) = 0
> sigaction(SIGFPE, {0x805a9d4, [], 0}, {SIG_DFL}, 0x40054d58) = 0
> sigaction(SIGSEGV, {0x805a9d4, [], 0}, {SIG_DFL}, 0x40054d58) = 0
> sigaction(SIGBUS, {0x805a9d4, [], 0}, {SIG_DFL}, 0x40054d58) = 0
> sigaction(SIGILL, {0x805a9d4, [], 0}, {SIG_DFL}, 0x40054d58) = 0
> getpid() = 4307
> readlink("/proc/4307/exe", "/home/plc/Pascal/test1.9/pipetest", 255) = 33
> open("/etc/timezone", O_RDONLY) = 3
This is the culprit. People that have this file don't have the problem.
If this one goes wrong, the errno value remains there, and the next
decision that bases itself on linuxerror goes wrong.
This is why it was hard to reproduce:
In my case, this happens
getpid() = 3953
readlink("/proc/3953/exe", "/export/home/marcov/pipetest", 255) = 28
open("/etc/timezone", O_RDONLY) = -1 ENOENT (No such file or directory)
-> failed
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1074, ...}) = 0
open("/etc/localtime", O_RDONLY) = 3
-> found, but errno is untouched.
More information about the fpc-devel
mailing list