softhddevice -> GrabImage

  • Hi,


    ich verwende für mein Aurora-Plugin GrabImage vom softhddevice-Plugin. Es passiert immer mal wieder, daß der Aufruf von GrabImage 'hängen' bleibt. Der aufrufende Thread läßt sich dann auch nicht mehr beenden oder abschießen. Das Log zeigt auch nichts verdächtiges. Ich lasse alle 1 Minute Aurora einen Log-Eintrag schreiben. Wenn GrabImage hängt, stoppen die Log-Einträge:


    Irgendwann im Zeitbereich von 18:05:40 bis 18:06:40 bleibt GrabImage hängen. Der Eintrag 'read incomplete section' kommt erst danach.


    Wie kann ich das Problem einkreisen?


    Gruß
    e9hack

  • Halt eine Ausgabe vor und nach dem Grabimage einbauen, dann weißt du ob Grabimage hängt.


    Eigentlich ist ein Lock vorhanden, also sollte nichts hängen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Halt eine Ausgabe vor und nach dem Grabimage einbauen, dann weißt du ob Grabimage hängt.


    Eigentlich ist ein Lock vorhanden, also sollte nichts hängen


    Es passiert mal eine Woche nichts, dann hängt es 3x pro Stunde. Wenn ich direkt vor bzw. nach GrabImage was ins Log schreibe, habe ich alle 20ms 2 Zeilen. Wenn ich da nicht alle einen halben Tag das Log lösche, ist meine Platte voll.


    Gruß
    e9hack

  • Dann untersuche nur den Sonderfall, wenn es passiert und nichts im Log steht, dann muß es etwas anderes sein.

    Code
    uint32_t start;
           uint32_t end;
    
    
           start = GetMsTicks();
           GrabImage(...);
           end = GetMsTicks();
           if ( (end - start) > 20 ) {
                 Warning("grab-image hat zu lange gedauert\n");
           }


    Kannst es im softhddevice direkt einbauen und beim Aufrufer auch.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • SoftHDDevice ist unschuldig. Die Aurora-Ausgabe ist mal wieder hängen geblieben, die vor und nach dem Aufruf von GrabImage erzeugten Log-Einträge laufen aber weiter. Was in dem Zusammenhang merkwürdig ist, das Live-Plugin liefert im Fernbedienungsmodus normalerweise pro Sekunde ein Bild. Aktuell gibts beim Wechseln in den Modus ein Bild, aber nur ein Standbild. Beim Verlassen und zürückwechseln gibts das nächste Standbild.


    Gruß
    e9hack

  • Muß nicht umbedingt unschuldig sein. Laufen mehre Threads die grabben?
    Da könnte es ein Locking Problem gehen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Es hat wieder zugeschlagen und es hat definitiv nichts mit softhddevice zu tun. In meinem Aurora-Plugin werden per serieller Schnittstelle, in diesem Fall ein FT232 USB UART Wandler, Daten ausgegeben:

    Ich starte vor einigen kritischen Stellen einen Thread, der nach Ablauf von 1sec einen String ins Log schreibt. Wenn alles richtig läuft, wird der Thread nach wenigen msec beendet und gibt nichts aus. Es sieht so aus, daß tcdrain() hängen bleibt. Ich verstehe nur nicht warum. In der Vergangenheit ist das nie aufgetreten. Ich könnte noch prüfen, ob die vorherigen write() Aufrufe fehlerfrei abgearbeitet werden. Möglicherweise haben die 3.x.x Kernel einen USB-Bug.


    Gruß
    e9hack

Jetzt mitmachen!

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