Bug #1936
openvfork() -> fork()
0%
Description
Der Beitrag wurde aus dem VDR Forum kopiert:
softhddevice bug ( X Speicherzugriff auf VDR )
Hallo alle zusammen,
ich habe in meinem VDR 2.1.6 das softhddevice in der Version: softhddevice (0.6.1rc1-GITa3c0052) installiert.
Hiermit ergibt sich folgendes Fehlerbild.
Es werden von VDR keine Tuningbefehle an meine Sundtek Tuner übermittelt. Dementsprechend ist ein umschalten der Kanäle nicht möglich.
Das ganze macht im Logfile mit folgendem Eintrag auf sich aufmerksam:
ERROR: set frontend/here 0/0: Unpassender IOCTL (I/O-Control) für das Gerät
Ich habe mich mit diesem Problem an den Sundtek Support gewendet und bin hier hervorragend unterstützt worden.
Der Fehler liegt hier:
http://projects.vdr-developer.org/git/vd…fthddev.c#n3095
Das ist der Übeltäter
Mit vfork öffnet das softhddevice einen 2. Prozess
Wenn jetzt im 2. Prozess das Frontend geschlossen wird, wird es auch für den ursprünglichen Prozess geschlossen
Weil diese sich ja den gleichen Speicherbereich teilen.
Mit fork() (nicht vfork()) werden die Speicherbereiche kopiert und da hat der 2. Prozess dann keinen zugriff mehr auf den 1. (also VDR), so sollte das auch sein.
In dieser besagten Zeile sollte anstelle von vfork, nur fork stehen. Dann funktionert das Softhddevice wie zu erwarten.
Ich hoffe ich habe mich verständlich ausgedrückt.
Viele Grüße