Re: VDR timer + mplayer = VDR crash. Please fix!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07 Jun 2007 Anssi Hannula <anssi.hannula@xxxxxxxxx> wrote:

> Attached is a patch for mplayer plugin which closes file descriptors 
> (except 0, 1, 2) when forking mplayer script.

Thanks.
I took over that with slight changes. The final patch is attached.
Could I please have some feedback if it's working as good as
yours?

Regards.

-- 
Stefan Huelswitt
s.huelswitt@xxxxxx  | http://www.muempf.de/
--- player-mplayer.c
+++ player-mplayer.c
@@ -383,17 +383,19 @@
     dsyslog("mplayer: mplayer child started (pid=%d)", getpid());
 
     if(MPlayerSetup.SlaveMode) {
-      close(inpipe[1]);
-      close(outpipe[0]);
       if(dup2(inpipe[0],STDIN_FILENO)<0 ||
          dup2(outpipe[1],STDOUT_FILENO)<0 ||
          dup2(outpipe[1],STDERR_FILENO)<0) {
         esyslog("ERROR: dup2() failed in MPlayer child: (%d) %s",errno,strerror(errno));
         exit(127);
         }
-      close(inpipe[0]);
-      close(outpipe[1]);
       }
+    else {
+      int nfd=open("/dev/null",O_RDONLY);
+      if(nfd<0 || dup2(nfd,STDIN_FILENO)<0)
+        esyslog("ERROR: redirect of STDIN failed in MPlayer child: (%d) %s",errno,strerror(errno));
+      }
+    for(int i=getdtablesize()-1; i>STDERR_FILENO; i--) close(i);
 
     char cmd[64+PATH_MAX*2], aid[20];
     char *fname=Quote(file->FullPath());
_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux