Marko Mäkelä wrote:
The problem seems to lie in shutdown.c, in SystemExecSession(). It won't close file descriptor 0, but it will close anything above STDERR_FILENO (which is normally 2). This function appears to show up in strace output as "clone()". Adding close(0) to the function fixes the problem. Do you see any reason why the shutdown script would need to access stdin? (I can see reasons why it would want to access stdout or stderr.)
Actually, the SystemExecSession() is just a modified version of SystemExec() in thread.c, that was used before to call the shutdown script. They only differ in the fact that VDR continues instead of waiting for the child process, and that the child process is detached into its own session. There's no serious difference regarding the file handles. Since the shutdown script runs in the background, the stdin could probably be closed. After all, VDR should continue to 'own' stdin, and running in the background would probably cause a conflict. However, running the script with a closed file handle may cause other side effects.
Cheers, Udo _______________________________________________ vdr mailing list firstname.lastname@example.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr