Hallo,
mit dreambox-image-dm800se-20130912.nfi habe ich zwei mal diesen GS erlebt:
action -> InfobarMovieListActions movieList
allocating new converter! [6x]
action -> OkCancelActions cancel
It's now Sat Oct 5 23:07:59 2013
next real activation is Sun Oct 6 17:15:01 2013
[timer.py] next activation: 1381007379 (in 99781 ms)
Traceback (most recent call last):
File "/usr/lib/enigma2/python/mytest.py", line 280, in processDelay
self.current_dialog.doClose()
File "/usr/lib/enigma2/python/Screens/Screen.py", line 129, in doClose
if val: # is not a duplicate...
File "/usr/lib/enigma2/python/Components/MovieList.py", line 189, in __len__
return len(self.list)
AttributeError: 'MovieList' object has no attribute 'list'
bzw.:
action -> InfobarActions showMovies
main thread is non-idle! display spinner!
allocating new converter! [6x]
action -> OkCancelActions cancel
Traceback (most recent call last):
File "/usr/lib/enigma2/python/mytest.py", line 280, in processDelay
self.current_dialog.doClose()
File "/usr/lib/enigma2/python/Screens/Screen.py", line 129, in doClose
if val: # is not a duplicate...
File "/usr/lib/enigma2/python/Components/MovieList.py", line 189, in __len__
return len(self.list)
AttributeError: 'MovieList' object has no attribute 'list'
Alles anzeigen
Wie es dazu kam, wissen wir nicht mehr genau, aber das crash.log liest sich klingt wie der Versuch, die Anzeige der Liste der Aufnahmen abzubrechen, noch während sie langsam (bei 200 Aufnahmen) von der Platte geholt aud aufgebaut wird.
MovieList.py:
self.list wird aber erst in load zu [] initialisiert…
Screens.py:reload
124 # we can have multiple dict entries with different names but same Element
125 # but we dont can call destroy multiple times
126 for name in self.keys():
127 val = self[name]
128 del self[name] # remove from dict
129 if val: # is not a duplicate...
133 self[n] = None # mark as duplicate
Bei "if val:" klappert Python einige benutzerdefinierte Methoden ab, um auf True oder False zu kommen.
Ein trivialer Fix wäre, self.list gleich in __init__ zu setzen, aber vielleicht sollte __len__ anders definiert oder das in Python kontroverse "Truth Value Testing" von "if val:" gänzlich vermieden werden? Der Kommentar "mark as duplicate" legt nahe, dass "if val is not None:" der korrekte Test sein könnte. Oder soll irgendwelches Locking verhindern, dass Objekte zu früh abgebaut werden?
Benutzte Plugins: FlashExpander, dazu noch von SqueezeOut inspiriertes manuelles Kopieren einiger dicker Dateien von /media/squashfs-images auf die SATA-Partition für /usr, die vom FlashExpander genutzt wird.
Mein image ist nicht das neueste, aber ich habe im enigma2.git keine Korrektur in diesem Bereich gesehen.