I demand that Deti Fliegl may or may not have written...
Anssi Hannula wrote:
Deti Fliegl wrote:
Klaus Schmidinger wrote:
Doesn't SystemExec() (see tools.c) take care of this?
Yes you are right - it takes care internally but not for plugins like dvdswitch etc. In order to fix this problem you could patch every single plugin or just set the right file descriptor flag once. I think the latter does not cause any interference and should solves some issues.
For the record, the latter creates a small race condition: an external program could be launched before FD_CLOEXEC is set on an fd.
In VDR all file descriptors seem to be allocated at startup. IMHO it is not very likely that a race condition could happen.
From open(2):
O_CLOEXEC (Since Linux 2.6.23) Enable the close-on-exec flag for the new file descriptor. Specifying this flag permits a program to avoid an additional fcntl(2) F_SETFD operation to set the FD_CLOEXEC flag. Addi- tionally, use of this flag is essential in some multithreaded programs since using a separate fcntl(2) F_SETFD operation to set the FD_CLOEXEC flag does not suffice to avoid race condi- tions where one thread opens a file descriptor at the same time as another thread does a fork(2) plus execve(2).
No use *now*, I know - too many people not yet using a new-enough kernel...