[PATCH] Neustart von Neutrino nach segmentation fault

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

[PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

Nach einem segmentation fault im Audioplayer startet Neutrino neu
http://forum.tuxbox-cvs.sourceforge.net ... 37#p368537
GetAway hat geschrieben:fix segfault by left button if selected item on first side > 1
Ich kann diesen segfault bestätigen, darüberhinaus passiert folgendes:
zapit ist im standby, Neutrino wird nach dem segfault neugestartet,
zapit bleibt dabei im standby:
Segmentation fault
Neutrino exited with nonzero exit status, restarting...
starting /bin/neutrino
[neutrino] frameBuffer Instance created
812k video mem
[...]
[zapit] cmd 24 refused in standby mode
[CBasicClient] receive failed: /tmp/zapit.sock
[neutrino] Loading of scan settings failed. Using defaults.
Als Resultat erscheint auf meiner Kabelbox
Bild
weil zapit (und sectionsd) durch den Audioplayer in den Pausemodus
versetzt wurden. Außerdem denkt Neutrino nun, meine Kabelbox
wäre eine Satbox
[neutrino] received 10 sats
wenn zapit in CNeutrinoApp::run nach

Code: Alles auswählen

g_info.box_Type = g_Controld->getBoxType();
wieder gestartet wird, deshalb steht

Code: Alles auswählen

g_Zapit->setStandby(false);
weiter oben in CNeutrinoApp::run. Manchmal hat Neutrino nhttpd beim
Audioplayer-segfault mit in den Abgrund gezogen, beim Neustart wird
nhttpd vor Neutrino gestartet und benötigt daher auch Kommandos,
um sectionsd und zapit wieder zum Leben zu erwecken.

Dieser Patch verspricht Abhilfe, ohne Startskripts zu verändern: EDIT: Patch ist im CVS
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von seife »

Da finde ich es fast eleganter, das im Startskript zu machen (an einer zentralen stelle, statt das in alle Möglichen Ecken zu zerstreuen.

nhttpd macht so schon genug mist, der soll sich mal lieber da raushalten ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

seife hat geschrieben:nhttpd macht so schon genug mist, der soll sich mal lieber da raushalten ;)
Spricht etwas dagegen, dass durch den Start von nhttpd der Pausemodus
von zapit und sectionds in jedem Fall beendet wird?
Geschieht dies nicht, fehlt im nhttpd die Senderliste.

Darüberhinaus traue ich einer Skriptlösung nicht so ganz, da es zumindest
bei mir gelegentlich vorkommt, dass ich Neutrino manuell starte, zu
Debug-Zwecken sogar sehr oft ;)
Jedes Programm sollte die notwendigen Einstellungen zum reibungslosen Betrieb
selbst vornehmen und nicht auf externe Skripte angewiesen sein, imho.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von seife »

rhabarber1848 hat geschrieben:Darüberhinaus traue ich einer Skriptlösung nicht so ganz, da es zumindest
bei mir gelegentlich vorkommt, dass ich Neutrino manuell starte, zu
Debug-Zwecken sogar sehr oft ;)
Zum debuggen kannst du aber auch selbst den zapit und sectionsd wieder in Gang bringen...
Jedes Programm sollte die notwendigen Einstellungen zum reibungslosen Betrieb
selbst vornehmen und nicht auf externe Skripte angewiesen sein, imho.
Ja. Allerdings sind es halt hier verschiedene Programme, (nhttpd, neutrino), die beide etwas machen, ohne dass das koordiniert wird. Und das wird nicht übersichtlicher, wenn man das da, wo es auffällt, überpinselt.

Die richtige Lösung kommt hoffentlich dann, wenn wir nur noch einen Prozess brauchen um Fernseh zu schauen und nicht 5 ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

seife hat geschrieben:Da finde ich es fast eleganter, das im Startskript zu machen (an einer zentralen stelle, statt das in alle Möglichen Ecken zu zerstreuen.
Ich habe es jetzt so committed, wie Du es vorgeschlagen hast:
http://article.gmane.org/gmane.comp.vid ... ox.scm/735

Die Diskussion um die beste Lösung kann aber weitergehen, vielleicht
nachdem Coolstream den ultimativen one-binary-Neutrino-Code
vorgelegt hat ;)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von seife »

Ja. Vielleicht fällt mir dazu auch noch was besseres ein. Das mit dem standby muss sowieso noch überarbeitet werden... mach mal "pzapit -gi" wenn zapit im Standby ist... :)

IMHO gibt es auch keinen Grund, während zapit im Standby ist, die Kanalliste nicht rauszugeben etc. Aber das ist halt alles ziemlich verschlungen.

Aus diesem Grund ist mir der - eigentlich "hässlichere" - Workaround im Startskript dieses Mal lieber, als das in zwei entgegengesetzten Ecken - neutrino und nhttpd - zu fixen. Wenn da jemals was geändert wird, wird nämlich wenigstens eine dieser Ecken vergessen ;)

Wegen dem Coolstream-Source: ich erwarte nicht, dass der automagisch alle Probleme löst, aber ich stosse halt dauernd an die Grenzen der jetzigen Architektur mit multiplen daemons etc.
Ich wollte das selbst schon mal zusammenfassen, aber das ist halt eine etwas längerwierige Aufgabe und obwohl ich relativ viel Zeit für Tuxbox & Co. aufwenden kann/darf, bin ich nicht böse, wenn da jemand anders einen grossen Batzen schon gemacht hat.
Sprich: ich werde mir das anschauen und dann Entscheiden, was ich als Basis für alle meine Plattformen verwenden werde. Evtl. ists ja auch so grauslig, dass ich es doch lieber selbst mache ;) (allerdings glaube ich das bei den daran Beteiligten eigentlich nicht)
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von GetAway »

rhabarber1848 hat geschrieben: Ich habe es jetzt so committed, wie Du es vorgeschlagen hast:
http://article.gmane.org/gmane.comp.vid ... ox.scm/735
Wäre es jetzt nicht sinnig, diesen Code analog zu "enterStandby" in
"leaveStandby" zu übernehmen:

Code: Alles auswählen

Index: apps/dvb/zapit/src/zapit.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/dvb/zapit/src/zapit.cpp,v
retrieving revision 1.430
diff -U3 -r1.430 zapit.cpp
--- a/apps/dvb/zapit/src/zapit.cpp	19 May 2009 18:21:46 -0000	1.430
+++ b/apps/dvb/zapit/src/zapit.cpp	28 Jun 2009 14:17:21 -0000
@@ -2748,6 +2748,11 @@
 
 void leaveStandby(void)
 {
+	if (!standby)
+	{
+		sleep(1);
+		return;
+	}
 	if (!cam) {
 		cam = new CCam();
 	}
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

seife hat geschrieben:Da finde ich es fast eleganter, das im Startskript zu machen (an einer zentralen stelle, statt das in alle Möglichen Ecken zu zerstreuen.
Hast Du Deine Meinung geändert? ;)
http://article.gmane.org/gmane.comp.vid ... x.scm/2027

Sollte sectionsd nicht auch geweckt werden?
Code snippet aus meinem o.g. Patch:

Code: Alles auswählen

--- apps/tuxbox/neutrino/src/neutrino.cpp	2009-06-11 13:32:52.000000000 +0200
+++ apps/tuxbox/neutrino/src/neutrino.cpp	2009-06-25 14:53:48.000000000 +0200
@@ -2063,6 +2068,9 @@
 	g_PluginList 	= new CPlugins;
 	g_PluginList->setPluginDir(PLUGINDIR);
 
+	// unpause sectionsd, needed if Neutrino restarts after segfault
+	g_Sectionsd->setPauseScanning(false);
+
 	// mount shares before scanning for plugins
 	CFSMounter::automount();
 
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von seife »

rhabarber1848 hat geschrieben:Hast Du Deine Meinung geändert? ;)
Eigentlich nicht, aber der code gammelte hier halt schon rum ;-)
Und ja, sectionsd sollte in dem Fall auch getriggert werden, kann aber sein,daß das schon woanders passiert (oder mir nie auffiel weil ich nie crashes mit gestopptem sectionsd hatte).
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von Houdini »

vielleicht wird es doch noch Zeit die Neutrino Daemons a la coolstream "zu threaden"
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

Houdini hat geschrieben:vielleicht wird es doch noch Zeit die Neutrino Daemons a la coolstream "zu threaden"
es müsste "nur" noch gecodet werden ... ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Sollte sectionsd nicht auch geweckt werden?
committed:
http://article.gmane.org/gmane.comp.vid ... x.scm/2181
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von dbt »

Der war scheinbar nicht so ganz ok

Code: Alles auswählen

avia_gt_gv: set_input_mode (mode=2) 
avia_gt_gv: set_input_size (width=720, height=576) 
[neutrino] enable flash 
[neutrino] Software update enabled 
Segmentation fault 
Neutrino exited with nonzero exit status, restarting... 
setPauseScanning false 
neutrino: /lib/libpng12.so.0: no version information available (required by neutrino) 
neutrino: /lib/libpng12.so.0: no version information available (
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

oops :oops: Fehler ist im CVS korrigiert.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von Houdini »

rhabarber1848 hat geschrieben:
Houdini hat geschrieben:vielleicht wird es doch noch Zeit die Neutrino Daemons a la coolstream "zu threaden"
es müsste "nur" noch gecodet werden ... ;)
Es gibt zwar noch einiges zu tun/optimieren aber bitte sehr:
http://home.arcor.de/houdini/dbox/neutr ... readed.tgz
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: [PATCH] Neustart von Neutrino nach segmentation fault

Beitrag von rhabarber1848 »

Houdini hat geschrieben:
rhabarber1848 hat geschrieben:
Houdini hat geschrieben:vielleicht wird es doch noch Zeit die Neutrino Daemons a la coolstream "zu threaden"
es müsste "nur" noch gecodet werden ... ;)
Es gibt zwar noch einiges zu tun/optimieren aber bitte sehr:
http://home.arcor.de/houdini/dbox/neutr ... readed.tgz
Hier geht es weiter: http://www.tuxbox-cvs.sourceforge.net/f ... =2&t=49277