[Gelöst] Mysteriöser Bug in Messagebox.py (war eigene Dummheit)

  • LÖSUNG: Das DialogMaster- Plugin ist Schuld, das die Methoden der Messagebox- Klasse überschreibt...


    ich habe das ganze zwar schon an die enigma2-devel- Mailingliste geschickt, würde mich aber freuen, wenn jemand das mal bei sich reproduzieren könnte (vielleicht bin ich ja auch einfach nur zu blöd)


    Bugbeschreibung: Bei der Messagebox vom Typ TYPE_YESNO mit Timeout wird nicht -wie im Code hinterlegt- der default- Wert zurückgegeben, sondern immer False...
    Mein Untersuchungen haben ergeben, dass aus irgendeinem Grund nie die timeoutCallback() nach dem Ablauf aufgerufen wird, sondern immer die cancel()


    Hier der relevante Code- Abschnitt aus der Messagebox.py:


    Wenn man vor der Zeile 106 eine neue Zeile einfügt mit dem code

    Code
    print "[Messagebox] before timeoutCallback"


    und vor der Zeile 113 eine Zeile:

    Code
    print "[Messagebox] cancel"



    und das ganze dann von einem Plugin aus aufruft (Beispiel aus DemoPlugins/TestPlugin/plugin.py, ergänzt um Timeout)):

    Code
    47                 self.session.openWithCallback(self.mycallback, MessageBox, _("Test-Messagebox?"), timeout=10)


    Dann kommt auf der Telnet Konsole folgende Ausgabe nach Ablauf des Timeouts:


    ...
    [Messagebox] before timeoutCallback
    [Messagebox] cancel
    ...


    anstatt -wie es im Code steht-:


    ...
    [Messagebox] before timeoutCallback
    Timeout!
    ...


    Aufgefallen ist mir das ganze in meinem Kiddytimer- Plugin, das im Falle des Ablaufs des Timeouts immer in den False- Zweig geht, obwohl als Default True angegeben ist.
    Aber wie beschrieben ist es reproduzierbar im TestPlugin...


    Thanx
    Tode


    P.S.: Das war definitiv nicht immer so, ich bin ja erst draufgekommen, weil plötzlich mein KiddyTimer nicht mehr so funktioniert, wie ich es gewohnt war...

    Einmal editiert, zuletzt von Tode ()

  • Nö, das geht hier wie erwartet


    Timeout:

    Code
    (0)fe event: status 1, inversion off, m_tuning 6
    Timeout!
    answer: True
    Traceback (most recent call last):
      File "/usr/lib/enigma2/python/mytest.py", line 193, in processDelay
    	callback(*retval)
      File "/usr/lib/enigma2/python/Plugins/DemoPlugins/TestPlugin/plugin.py", line 54, in mycallback
    	raise Exception("test-crash")
    Exception: test-crash


    yes:

    Code
    (0)fe event: status 0, inversion off, m_tuning 5
    action ->  MsgBoxActions ok
    answer: True
    Traceback (most recent call last):
      File "/usr/lib/enigma2/python/mytest.py", line 193, in processDelay
    	callback(*retval)
      File "/usr/lib/enigma2/python/Plugins/DemoPlugins/TestPlugin/plugin.py", line 54, in mycallback
    	raise Exception("test-crash")
    Exception: test-crash


    no:

    Code
    (0)fe event: status 0, inversion off, m_tuning 5
    action ->  MsgBoxActions ok
    answer: False
    (0)fe event: status 1, inversion off, m_tuning 6
  • hmmm... ich habe das jetzt sowohl in einem 1.5er Image von Oozoon als auch in einem komplett neu geflashten 1.6er von Oozoon reproduzieren können...


    Woran könnte das liegen...
    Tode

  • Ich schau mal, ob ich da heute Abend dazu komme, ein Backup des Images zu machen (mit meinen Debug- Änderungen)... vielleicht siehst Du ja was...


    Danke, dass Du Dich darum kümmerst.

  • oh sch...
    Ich bin wirklich ein riesiger Idiot.
    NEIN, die Messagebox hat keinen Bug.
    NEIN, auch mein eigenes Plugin hat keinen Bug.


    JA, der Fehler existiert...
    Aber er kommt -wie so oft in solchen Fällen- von einem anderen Plugin.... Das Plugin DialogMaster ist der Schuldige.


    Asche auf mein Haupt, aber den Zusammenhang habe ich nicht kapiert.
    Ich habe das Plugin erst vor kurzem entdeckt und fand es praktisch um die Fehlermeldungen auszublenden, wenn der Kanal (besonders die Kinderkanäle) abends / nachts nicht sendet....
    Tja... und das habe ich einfach in jedem Image wieder installiert, und damit auch den Fehler immer mitgenommen...


    Vergesst all den Blödsinn, den ich -mal wieder- produziert habe...


    Tausendmal Entschuldigung.


    Tode