Fix für Abstürze beim z.B. Verschieben/Löschen von Kanälen in Version 2.3.1

  • So, hier jetzt mal vorab einer der wichtigsten Fixes für Version 2.3.1.
    Beim Löschen bzw. Verschieben von Kanälen (egal ob im Menü oder via SVDRP) konnte es vorkommen, daß der VDR abstürzte, weil das Ausgabedevice beim Umschalten auf den aktuellen Kanal (was nach einem Löschen bzw. Verschieben notwendig sein kann) u.U. selber auf die Kanalliste zugreifen möchte und daher innerhalb der Write-Locks der Verschiebe- bzw. Lösch-Operation einen weiteren Read-Lock zu setzen versuchte - was bisher schiefging.


    Ich habe jetzt cRwLock und cStateLock so erweitert, daß verschachtelte read-Locks innerhalb eines Write-Locks vom selben Thread aus ermöglicht werden. Dies sollte auch keine Probleme machen, da der Code, welcher den Read-Lock setzt, ja immer eine in sich schlüssige Situation vorfindet, mit der er umgehen können muß. Und für den "äusseren" Write-Lock ändert sich gar nichts, weil der Code mit Read-Lock die Daten ja nicht verändern kann.


    Wer es schon mal ausprobieren möchte, kann den beiliegenden Patch anwenden. Damit sollten alle solchen Abstürze (auch in anderen Funktionen bzw. Plugins) behoben sein.


    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!