Shutdown: Thread-Problem mit uClibc

Alles rund um das grafische Benutzerinterface Enigma
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

Hi,

wie bereits hier erwähnt, gibt es ein Problem, wenn Enigma sich selbst beenden soll.

Das Problem tritt auf beim ersten Start von Enigma in einem frischen Yadd nach
der Sprach- und Zeitzonenauswahl, die normalerweise einen Neustart von Enigma
nach sich zieht, das ist im o.g. Thread beschrieben.

Nun taucht das gleiche Problem auch beim Shutdown von Enigma auf. Wenn ich die
Power-Taste auf der Dbox2-Fernbedienung länger gedrückt halte, erscheint ein
Menü, dort wähle ich "Shutdown now" aus, es bleibt aber immer ein Thread zurück.

Hier ein Log von Shutdownprozess, Enigma ist mit --with-debug kompiliert worden:

Code: Alles auswählen

[ENIGMA] beginning clean shutdown
[ENIGMA] main
destroy /hdd/movie/recordings.epl
destroy /var/tuxbox/config/enigma/playlist.epl
destroy /var/tuxbox/config/enigma/userbouquet.ef17d.tv
destroy /var/tuxbox/config/enigma/userbouquets.tv.epl
destroy /var/tuxbox/config/enigma/userbouquet.aa8b.radio
destroy /var/tuxbox/config/enigma/userbouquets.radio.epl
destroy /var/tuxbox/config/enigma/userbouquet.1ac25.file
destroy /var/tuxbox/config/enigma/userbouquets.file.epl
[ENIGMA] serviceSelector
[ENIGMA] unmountAllMountPoints
[ENIGMA] fertig
- (58) wizard: scan
- (57) wizard: timezone
- (56) wizard: fpudate
- (55) wizard: language
- (54) wizard: tv system
- (49) Timer Manager
[eTimerManager] down ( 0 events in list )
destroy /var/tuxbox/config/enigma/timer.epl
- (48) eDVBCAHandler
- (48) EPG cache
thread has completed..
thread joined 0
- (48) socket mmi handler
- (47) eServiceHandlerExternal
- (47) eServiceHandlerJPG
- (47) eServicePlaylistHandler
- (47) eServiceHandlerMP3
- (47) eServiceHandlerDVB
 ------------> changed! 4f
AUDIO_GET_STATUS - playing
DEMUX_STOP - audio - ok
VIDEO_GET_STATUS - playing
DEMUX_STOP - video - ok
DEMUX_STOP - pcr - ok
AUDIO_STOP - ok
VIDEO_STOP - ok
fd.video closed
TuxTxt stopped service 2c0
DEMUX_STOP - vtxt - ok
- (46) eServiceFileHandler
- (46) eServiceStructureHandler
- (45) eServiceInterface
- (40) eDVB lib
saving bouquets...
done
1 LNBs written
 ------------> changed! 0
fd video = -1, audio = -1, demux_video = -1, demux_audio = -1, demux_pcr = -1, demux_vtxt = -1, mpeg = -1
 ------------> changed! 0
- (39) stream watchdog
- (35) textedit field actions
- (35) number actions
- (35) cursor actions
- (35) focus actions
- (35) list actions
- (35) shortcut actions
- (35) tuxtxt actions
- (35) enigma standby actions
- (35) TransponderEditWindow Actions
- (35) enigma helpwindow actions
- (35) rotor menu actions
- (35) enigma vcr actions
- (35) timer view actions
- (35) timer edit actions
- (35) tuxtxt offset actions
- (35) epg selector actions
- (35) enigma mainmenu actions
- (35) EPG Style Selector actions
- (35) service selector actions
- (35) enigma main actions
- (35) enigma global actions
- (35) enigma event view actions
- (30) eGauge
- (30) eSlider
- (30) eStatusBar
- (30) eWindow
- (30) eWidget
- (30) eProgress
- (30) eLabel
- (30) eCheckbox
- (30) eButton
- (30) eChannelInfo
- (26) Console RC Driver
- (26) input device driver
- (25) eTextInputField
- (25) RC Input layer
- (20) skin subsystem
- (15) SystemInfo
- (10) gRC
waiting for gRC thread shutdown
gRC thread has finished
- (9) GFBDC
avia_gt_gv: set_input_mode (mode=2)
avia_gt_gv: set_input_size (width=720, height=576)
- (9) Font Render Class
- (5) d-Box LCD Hardware
- (5) eActionMapList
- (1) Background File Eraser
thread has completed..
thread joined 0
- (1) EAUDIO
- (0) Configuration
reached rl -1
reached rl -1
 ------------> changed! 0
Hier die Prozessliste, nachdem im Log keine neuen Meldungen mehr auftauchen:

Code: Alles auswählen

# ps -ef | grep enigma | grep -v grep
root       170     1  0 21:40 ?        00:00:00 /bin/sh /etc/init.d/start_enigma
root       183   170  3 21:40 ?        00:00:22 /bin/enigma
#
Ich kenne mich mit Thread-Programmierung leider überhaupt nicht aus und
noch weniger mit dem Innenleben von Enigma. Kann hier jemand helfen?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

In einem glibc-yadd werden die o.g. Logmeldungen durch diese fortgesetzt:

Code: Alles auswählen

[MOVIEPLAYER] message 9 coming in...
[MOVIEPLAYER] message 9 handled.
thread has completed..
thread joined 0
Shutdown
CXA2126 found
The system is going down NOW!
Sending SIGTERM to all processes
Sending SIGKILL to all processes
Requesting system halt
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von dbluelle »

Ich habe gerade was eingecheckt, das das Problem (zumindest auf der Dreambox) löst.
Ich vermute, dass der Thread einfach "zu früh" (d.h. bevor Enigma vollständig initialisiert ist) gestartet wird, aber genau weiss ich das auch nicht :gruebel: .

Das Hauptproblem bei Enigma auf uclibc ist m.E. jetzt noch die nicht funktionierende Auswahl der Zeitzone.
IMHO liegt es daran, dass uclibc nix mit den localtime-Einträgen anfangen kann,
sondern nur die TZ-Umgebungsvariable unterstützt.
Man könnte das ja in Enigma entsprechend anpassen,
aber ich habe bisher nirgends eine Liste mit den passenden TZ-Strings für die Zeitzonen, die Enigma zur Auswahl hat, gefunden :roll: .
Weiss jemand, ob es irgendwo sowas gibt?

dbluelle
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:Ich habe gerade was eingecheckt, das das Problem (zumindest auf der Dreambox) löst.
Ich vermute, dass der Thread einfach "zu früh" (d.h. bevor Enigma vollständig initialisiert ist) gestartet wird, aber genau weiss ich das auch nicht :gruebel: .
Das Problem ist auch auf der Dbox2 behoben, danke!
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von dbluelle »

dbluelle hat geschrieben:Das Hauptproblem bei Enigma auf uclibc ist m.E. jetzt noch die nicht funktionierende Auswahl der Zeitzone.
IMHO liegt es daran, dass uclibc nix mit den localtime-Einträgen anfangen kann,
sondern nur die TZ-Umgebungsvariable unterstützt.
Man könnte das ja in Enigma entsprechend anpassen,
aber ich habe bisher nirgends eine Liste mit den passenden TZ-Strings für die Zeitzonen, die Enigma zur Auswahl hat, gefunden :roll: .
Weiss jemand, ob es irgendwo sowas gibt?
Ich hab's jetzt mal in Enigma eingebaut. Dazu habe ich die Einträge in root/etc/timezone.xml um einen Parameter tz erweitert, der die TZ-Werte für die einzelnen Zeitzonen enthält. Die Werte habe ich grösstenteils von http://www.iptvuzmani.com/konular/time-zone-string/4, aber die sind auch nicht vollständig (es fehlt z.B. Israel, da habe ich geraten :gruebel: ).

Wird die timezone.xml eigentlich auch von Neutrino verwendet? Falls nicht, dann wäre es IMHO besser, wenn wir die nach apps/tuxbox/enigma/data verschieben (Dann muss man da auch nicht mehr zwei Versionen (in /root und /root_dream) warten.

dbluelle
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:Wird die timezone.xml eigentlich auch von Neutrino verwendet?
afaics nein, nur von Enigma in setup_timezone.cpp
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:Dann muss man da auch nicht mehr zwei Versionen (in /root und /root_dream) warten.
Dafür hätte ich ohnehin einen Vorschlag:
http://forum.tuxbox-cvs.sourceforge.net ... 69#p368169

Wenn das umgesetzt ist, gibt es nur noch cdk/root.
Die dortigen makefiles unterscheiden dann je nach Boxtyp,
welche Dateien ins Image kommen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:(es fehlt z.B. Israel, da habe ich geraten :gruebel: ).
http://www.zeitzonen.de/israel.html
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Shutdown: Thread-Problem mit uClibc

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:
dbluelle hat geschrieben:Das Hauptproblem bei Enigma auf uclibc ist m.E. jetzt noch die nicht funktionierende Auswahl der Zeitzone.
Ich hab's jetzt mal in Enigma eingebaut.
Ich habe die makefiles noch ein wenig optimiert,
geht das so in Ordnung? EDIT: Patch ist im CVS:
http://article.gmane.org/gmane.comp.vid ... ox.scm/636
http://article.gmane.org/gmane.comp.vid ... ox.scm/637