[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