Try Catch in VDR Plugin

  • Hi,


    ich entwickle gerade ein VDR Plugin, bzw habe ich eins erweitert und habe leider ein Problem damit.


    Um den Zweck kurz zu umreißen:
    Ich habe ein Rudergerät verbunden mit dem VDR, darauf läuft ein Perl-Skript, welches ein Python Skript started und die Daten abgrägt, diese dann an einen modifizierten osdserver schickt. Leider stürzt mir manchmal der komplette VDR ab. Ich habe schon alle Eventualitäten abgeklärt, also divisionen durch 0, oder wenn Variablen leer sind. Das ist nicht das Problem.
    Per Debugger bekomme ich einen Segfault bei:


    Code
    if(font){...


    font ist:


    Code
    cFont::GetFont(fontOsd);


    Nun will ich das abfangen mit:


    Code
    try { ... } catch(...){ }


    ...aber das hilft gar nichts. Wie kann ich diese Exceptions denn "non-fatal" machen?


    Besten Dank im Voraus...
    VG

  • Du willst einen Segfault per try catch harmlos machen, damit du ihn nicht beseitigen musst? Ich kann nur hoffen, das du dabei keine Hilfe bekommst, das ist doch Murks.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Original von gda
    Du willst einen Segfault per try catch harmlos machen, damit du ihn nicht beseitigen musst? Ich kann nur hoffen, das du dabei keine Hilfe bekommst, das ist doch Murks.


    Gerald


    Nunja, ich zeige die Werte vom Rudergerät über dem Fernsehbild an. Wenn ein Wert nicht interpretiert werden kann, ist das weniger schlimm, denn das nächste Update kann bestimmt interpretiert werden.
    Nur hilft es wenig, wenn ich am Rudern bin und sich der VDR neu startet, bloß weil ein komischer Wert übergeben wurde. Wie gesagt, lieber eine Sekunde lang kein Update als kompletter Neustart....


    Also ich würde mich schon freuen, wenn mir da einer helfen könnte...

  • Zitat

    Original von yoogie
    Nur hilft es wenig, wenn ich am Rudern bin und sich der VDR neu startet, bloß weil ein komischer Wert übergeben wurde.


    Es kommt kein Segfault wegen eines "komischen Wertes". Du hast da einen Programmier-Fehler.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Originally posted by yoogie

    Code
    if(font){...


    font ist:

    Code
    cFont::GetFont(fontOsd);


    zwischen Methoden/Klassen
    'font' vor Verwendung immer bestimmen, nicht speichern, also

    Code
    font = cFont::GetFont(fontOsd);
    if (font) {...
  • Zitat

    Original von egal


    zwischen Methoden/Klassen
    'font' vor Verwendung immer bestimmen, nicht speichern, also

    Code
    font = cFont::GetFont(fontOsd);
    if (font) {...


    Ok, ich werde das versuchen. Besten Dank für die Hilfe.

Jetzt mitmachen!

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