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
Updated by Juergen over 8 years ago
Der obige Link ist leider unvollstaendig. Wer kann diesen vervollstaendigen ?
Uebrigens halte ich es fuer unwahrscheinlich, dass das Problem durch ein Ersetzen von vfork durch fork geloest wird:
Diese beiden Syscalls unterscheiden sich hinsichtlich ihres Umgangs mit Filedescriptoren eigentlich nicht.
Aber um das zu beurteilen, waere eben ein korrekter Link auf die Quelltextstelle sehr hilfreich.
Updated by Juergen over 8 years ago
Vielleicht kann der Ersteller ja auch die Message von Subdtek hier weiterleiten.