[PATCH] Mal wieder ein sectionsd-Versuch...

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

Ich habe hier sowas, was beim booten ausgeführt wird (achtung, Zeit sollte per netdate vorher gesetzt sein, sonst wird das mit dem "älter als"-Vergleich nicht funktionieren und die epgfilter.xml bei jedem Booten neu geschrieben, das dauert bei mir so ca. 2 Sek.)

Code: Alles auswählen

#!/bin/sh
CONF=/var/tuxbox/config/zapit
FILT=$CONF/epgfilter.xml
BOUQ=$CONF/bouquets.xml
if [ ! -e $FILT ] || [ $FILT -ot $BOUQ ]; then
    echo '<?xml version="1.0" encoding="UTF-8"?>' > $FILT
    echo '<epgfilter is_whitelist = "1" except_current_next = "1">' >> $FILT
    sed -n '/<Bouquet.*Favoriten/,/<\/Bouquet>/{ s/<channel/<filter/; s/ sat=.*/\/>/p };
            /<Bouquet.*Favoriten 2/,/<\/Bouquet>/{ s/<channel/<filter/; s/ sat=.*/\/>/p };
            /<Bouquet.*Favoriten 3/,/<\/Bouquet>/{ s/<channel/<filter/; s/ sat=.*/\/>/p }' $BOUQ >> $FILT
    echo '</epgfilter>' >> $FILT
fi
Generell denke ich, dass dein Filter eigentlich nur den EPG bei den beiden Kanälen hätte töten sollen, insofern kann da schon noch ein Bug drin sein, den man halt mal suchen müsste.
FRauANtje
Neugieriger
Neugieriger
Beiträge: 7
Registriert: Donnerstag 22. November 2007, 23:04

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von FRauANtje »

seife,
seife hat geschrieben: Generell denke ich, dass dein Filter eigentlich nur den EPG bei den beiden Kanälen hätte töten sollen, insofern kann da schon noch ein Bug drin sein, den man halt mal suchen müsste.
Ich will gerne helfen, indem ich mal verschiedene epgfilter.xml durchprobiere. Da ich selber nicht compiliren kann, bräuchte ich dazu aber eine binary von sectionsd, die mir beim Aufruf zurückmeldet, wie die Kanäle in der epgfilter.xml behandelt werden (sollten) - und wie die Kanaele behandelt werden (sollten), die NICHT in der epfilter stehen.

Also z.B.
channel service id xyz oder name = full / nownext / no
und
other = full /nownext / no

Wenn Du das "quick and dirty" hinbekommst, kann ich mich einbringen und verschiedene Kombinationen durchtesten und zurückmelden, was geht und was nicht...

Gruss,


Frank
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

Was ganz anderes: du schriebst oben "ein Auszug". Kannst du mal die komplette epgfilter.xml pasten? Ich habe da einen Verdacht, nachdem ich grad in den Kot geschaut habe...

Oder anders gefragt:
kommt das

Code: Alles auswählen

<epgfilter is_whitelist="0" except_current_next="0"> 
...
</epgfilter>
öfters vor in deiner epgfilter.xml, evtl. mit verschiedenen Zahlen für die "0"?

EDIT:
nein, ich sehe grad, dass das:

Code: Alles auswählen

23:00:58.035 Reading EPGFilters
23:00:58.038 Add EPGFilter for onid="0000" tsid="0000" service_id="0000"
einfach nicht hätte passieren dürfen (es sei denn, du hast wirklich so einen filter drin gehabt). Woran das jetzt genau hängt, dazu bau ich dir mal nen debug-sectionsd.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

binary:
sectionsd-FRauANtje

Nicht mit "-d" starten, die wichtigen Sachen sollte man ohne sehen.

Das ist der diff:

Code: Alles auswählen

Index: sectionsd.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp,v
retrieving revision 1.262
diff -u -p -r1.262 sectionsd.cpp
--- sectionsd.cpp	12 May 2008 11:06:37 -0000	1.262
+++ sectionsd.cpp	14 May 2008 16:26:27 -0000
@@ -437,9 +437,10 @@ static bool checkEPGFilter(t_original_ne
 
 static void addEPGFilter(t_original_network_id onid, t_transport_stream_id tsid, t_service_id sid)
 {
+	printf("addEPGFilter(%04x, %04x, %04x)?\n", onid, tsid, sid);
 	if (!checkEPGFilter(onid, tsid, sid))
 	{
-		dprintf("Add EPGFilter for onid=\"%04x\" tsid=\"%04x\" service_id=\"%04x\"\n", onid, tsid, sid);
+		printf("Add EPGFilter for onid=\"%04x\" tsid=\"%04x\" service_id=\"%04x\"\n", onid, tsid, sid);
         	EPGFilter *node = new EPGFilter;
 	        node->onid = onid;
 		node->tsid = tsid;
@@ -7813,13 +7814,14 @@ static void readEPGFilter(void)
 
 	if (filter_parser != NULL)
 	{
-		dprintf("Reading EPGFilters\n");
+		printf("Reading EPGFilters\n");
 		
 		xmlNodePtr filter = xmlDocGetRootElement(filter_parser);
 		if (xmlGetNumericAttribute(filter, "is_whitelist", 10) == 1)
 			epg_filter_is_whitelist = true;
 		if (xmlGetNumericAttribute(filter, "except_current_next", 10) == 1)
 			epg_filter_except_current_next = true;
+		printf("is_whitelist: %s, except_curnext: %s\n", epg_filter_is_whitelist?"true":"false", epg_filter_except_current_next?"true":"false");
 		filter = filter->xmlChildrenNode;
 
 		while (filter) {
Index: xmlinterface.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/daemons/sectionsd/xmlinterface.cpp,v
retrieving revision 1.1
diff -u -p -r1.1 xmlinterface.cpp
--- xmlinterface.cpp	20 Nov 2005 15:11:40 -0000	1.1
+++ xmlinterface.cpp	14 May 2008 16:26:27 -0000
@@ -39,8 +39,10 @@ unsigned long xmlGetNumericAttribute(con
 {
 	char *ptr = xmlGetAttribute(node, name);
 
-	if (!ptr)
+	if (!ptr) {
+		printf("=> xmlGetNumericAttribute asked for '%s', not found!\n", name);
 		return 0;
+	}
 
 	return strtoul(ptr, 0, base);
 }
Ich vermute, das schlägt noch weiter unten fehl, aber um das zu debuggen müsste man dann debugcode in die libxmltree machen, was ohne ein komplettes Image zu bauen doch eher schwierig zu Testen wird.

Kannst du die epgfilter.xml mal irgendwo uploaden? Ich vermute ja, dass die irgendwie kaputt ist (DOS/UNIX Zeilenendungen oder irgend sowas gemeines)

Edit: URL zum Binary gefixt.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von mb405 »

ich hatte grad lustiges log auf premiere direkt portal :)
17:39:06.072 dmxCN: waking up again - requested from .change()
17:39:06.536 dmxCN: going to sleep...
17:39:06.626 dmxCN: waking up again - requested from .change()
17:39:07.020 dmxCN: going to sleep...
17:39:27.980 EIT Update Filter: Activate cnThread
17:39:28.033 dmxCN: waking up again - requested from .change()
17:39:29.469 dmxCN: going to sleep...
17:39:29.549 dmxCN: waking up again - requested from .change()
17:39:29.959 dmxCN: going to sleep...
17:39:30.039 dmxCN: waking up again - requested from .change()
17:39:30.445 dmxCN: going to sleep...
17:39:30.530 EIT Update Filter: Activate cnThread
17:39:30.568 dmxCN: waking up again - requested from .change()
17:39:30.954 dmxCN: going to sleep...
17:39:31.042 dmxCN: waking up again - requested from .change()
17:39:31.446 dmxCN: going to sleep...
17:39:31.507 dmxCN: waking up again - requested from .change()
17:39:31.948 dmxCN: going to sleep...
17:39:32.033 dmxCN: waking up again - requested from .change()
17:39:32.453 dmxCN: going to sleep...
17:39:32.533 dmxCN: waking up again - requested from .change()
17:39:32.948 dmxCN: going to sleep...
17:39:33.026 dmxCN: waking up again - requested from .change()
17:39:33.946 dmxCN: going to sleep...
17:39:34.030 dmxCN: waking up again - requested from .change()
17:39:34.435 dmxCN: going to sleep...
17:39:34.506 dmxCN: waking up again - requested from .change()
17:39:34.944 dmxCN: going to sleep...
17:39:35.033 dmxCN: waking up again - requested from .change()
17:39:35.448 dmxCN: going to sleep...
17:39:35.535 dmxCN: waking up again - requested from .change()
17:39:35.938 dmxCN: going to sleep...
17:39:36.003 dmxCN: waking up again - requested from .change()
17:39:36.443 dmxCN: going to sleep...
17:39:57.390 EIT Update Filter: Activate cnThread
17:39:57.428 dmxCN: waking up again - requested from .change()
17:39:58.897 dmxCN: going to sleep...
17:39:58.964 dmxCN: waking up again - requested from .change()
17:39:59.369 dmxCN: going to sleep...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

Ja, das kommt daher, weil dort nur ein current und kein next-Event kommt.
Dann triggert der CN-Thread solange neu, bis beide da sind - aber max. 5 sekunden lang. Das "EIT Update Filter: Activate cnThread" kommt immer dann, wenn sich die Version der EIT geändert hat. Dann muss der Thread triggern, um evtl. neue events zu holen.

Das ganze Cur/next-Handling sollte anders gemacht werden, mit Auswerten der Flags etc, so dass das tatsächliche "current"-Event angezeigt wird und nicht das event, dessen Zeit gerade passt etc, aber das ist halt eine größere Baustelle.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

So, ich habe meine Vermutung bezügl. FRauANtje's Problem mal überprüft (dass _ich_ eine kaputte epgfilter.xml hätte und es nur aus Zufall bei mir funktioniert hätte) überprüft, sie hat sich nicht bestätigt.

Ich vermute, dass das Problem etwas tiefer lag ("adding epgfilter tsid=0000 onid=0000..."), nämlich dass irgendwo beim XML-Parsen ein Fehler auftrat, z.B. kein Speicher verfügbar war, und deswegen die ganzen "0"-Werte zurückkamen (es ist ein designproblem des verwendeten XML-Parsers, dass man nicht zwischen "0" und "Fehler" unterscheiden kann).

Nachdem das Problem jetzt nicht mehr auftritt, will ich es aber auch gar nicht weiter debuggen :-)
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von mb405 »

kann es sein, das du zwischen v2 und final cvs noch was verändert hast, was nicht perfekt geht ??
meine box hat sich jetzt schon 2x über nacht frisch gebootet.
das war mit v2 nicht der fall
hapeba

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von hapeba »

Hi,

habe ähnliches beobachtet.

Nur ARD geschaut, nicht vorher gezappt.

Nach circa einer Stunde plötzlich Tonstörungen, dann stehendes Bild und kurz danach reboot der Box.

Ähnliches passiert mit der V2 nicht.

Kann aber Zufall sein (konnte es bisher nicht verifizieren - Frau hatte was dagegen).

MfG
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

Ohne Log kann ich da nicht viel zu sagen, aber die Sachen, die sich noch geändert haben, dürften keinen Reboot verursachen (es sei denn, es ist wieder so ein Problem mit dem ARD-EPG, aber dann ist der sectionsd nicht schuld).
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von mb405 »

nö ist egal. bei zdf und rtl und sat1 ist das selbe. hab grad mal 2 leuts gefragt, die das image auch nutzen.
da das nur über nacht im standby passiert siehts mit log schlecht aus.
wie gesagt die v2 hatte das nie
prodigy7
Erleuchteter
Erleuchteter
Beiträge: 595
Registriert: Donnerstag 1. Januar 2004, 16:59

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von prodigy7 »

Mehr durch Zufall ist mir gestern aufgefallen, das ich in letzter Zeit garnicht mehr das EPG resetten muss damit die doppelten Einträge rausfliegen. Mein Selbstbau-Image ist vom 10.03.
Kann es sein, dass ProSiebenSat.1 was gemacht haben?
PizzaPicante
Interessierter
Interessierter
Beiträge: 28
Registriert: Mittwoch 12. Juli 2006, 05:02

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von PizzaPicante »

Hi,

mir ist aufgefallen, das ich in der Infobar und Detailansicht das Epg für Sat1 habe - jedoch stehe ich auf Kabel1Classic ?

In der Kanalliste ist der EPG-Eintrag ok.

CU
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von GetAway »

@seife,

könntest du eine Beschreibung zu dem
neu eingechecktem sectionsd 1.263 geben.
Ich würde es dann gerne testen.

Gruß Getway
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von mb405 »

wieso beschreibung ?
einfach mal einbauen, und testen, obs nebenwirkungen gibt.
ich denke seife checkt sein zeug was er eincheckt meist sehr gründlich
hapeba

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von hapeba »

mb405 hat geschrieben:wieso beschreibung ?
einfach mal einbauen, und testen, obs nebenwirkungen gibt.
ich denke seife checkt sein zeug was er eincheckt meist sehr gründlich
Hi,

da gebe ich mal der Anfrage von GetAway recht.

Was das "gründlich" angeht, kann man getrost anderer Meinung sein (gilt auch ausserhalb vom sectionsd).

MfG
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von GetAway »

Sorry, ich möchte nicht falsch verstanden werden,
mir geht es hauptsächlich um "what happens".

Ich denke mal das es hier um reine Performacesteigerung geht!?
Wie gesagt, da nicht jeder Code so einfach interpretierbar ist
wäre eine kleine Erklärung dazu wünschenswert.

Gruß GetAway
hapeba

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von hapeba »

GetAway hat geschrieben:Sorry, ich möchte nicht falsch verstanden werden,
mir geht es hauptsächlich um "what happens".

Ich denke mal das es hier um reine Performacesteigerung geht!?
Wie gesagt, da nicht jeder Code so einfach interpretierbar ist
wäre eine kleine Erklärung dazu wünschenswert.

Gruß GetAway
Weichkeks oder auch Warmduscher.

MfG
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von seife »

Das ist hauptsächlich eine interne Änderung, die die vielen inkonsistent genutzten "lastChanged" Variablen entfernt und stattdessen die lastChanged in der DMX-Klasse verwendet, welche sowieso schon da waren.
Das ist kein spektakulärer fix, normalerweise wird man wohl keinen Unterschied bemerken. Jetzt sollte es jedenfalls so tun, wie ich mir das vorstelle ;)

Die zweite Änderung sorgt dafür, dass beim "sectionsdcontrol --nopause" sowohl der CN- als auch der EIT-Thread aufgeweckt werden. Das sorgt dafür, dass nach dem verlassen des Pause-modus wieder aktuelle Daten da sind.

Das sind beides Sachen, die ich schon lange hier rumliegen habe, die gut funktionieren und die, jetzt wo sie eingecheckt sind, verhindern, dass ich Bugreports bekommen und mich wundere, warum das bei mir alles funktioniert ;)

@hapeba: Deswegen wird das ja ins CVS eingecheckt. Wenn ein Stand kaputt ist, dann kannst du ja problemlos den letzten funktionierenden Stand auschecken.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von GetAway »

hapeba hat geschrieben:
Weichkeks oder auch Warmduscher.

MfG
Ne, Sitzpinkler! :lol: :lol:

//Edit:
@seife, Dankeeee.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von Tommy »

@hapeba: Deswegen wird das ja ins CVS eingecheckt. Wenn ein Stand kaputt ist, dann kannst du ja problemlos den letzten funktionierenden Stand auschecken.
Da setz ich aber ein Bier gegen das Der das kann/ weiß. :lol: (nachdem Er in einem anderen Thread dietmarw wg. der nightly builds zur Sau machen wollte)
hapeba

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von hapeba »

Tommy hat geschrieben:
@hapeba: Deswegen wird das ja ins CVS eingecheckt. Wenn ein Stand kaputt ist, dann kannst du ja problemlos den letzten funktionierenden Stand auschecken.
Da setz ich aber ein Bier gegen das Der das kann/ weiß. :lol: (nachdem Er in einem anderen Thread dietmarw wg. der nightly builds zur Sau machen wollte)
Hi,

weiss jetzt nicht, ob Du mein "uraltes" Posting meinst.

Aber wenn doch, dann sei auch ehrlich ... das damalige Image war tatsächlich nicht bootbar.

Aber vielleicht wollt Ihr ja auch unter Euch bleiben. Es hat mich nur heute gejuckt. Ich lass es demnächst.

MfG
hapeba

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von hapeba »

seife hat geschrieben:Das ist hauptsächlich eine interne Änderung, die die vielen inkonsistent genutzten "lastChanged" Variablen entfernt und stattdessen die lastChanged in der DMX-Klasse verwendet, welche sowieso schon da waren.
Das ist kein spektakulärer fix, normalerweise wird man wohl keinen Unterschied bemerken. Jetzt sollte es jedenfalls so tun, wie ich mir das vorstelle ;)

Die zweite Änderung sorgt dafür, dass beim "sectionsdcontrol --nopause" sowohl der CN- als auch der EIT-Thread aufgeweckt werden. Das sorgt dafür, dass nach dem verlassen des Pause-modus wieder aktuelle Daten da sind.

Das sind beides Sachen, die ich schon lange hier rumliegen habe, die gut funktionieren und die, jetzt wo sie eingecheckt sind, verhindern, dass ich Bugreports bekommen und mich wundere, warum das bei mir alles funktioniert ;)

@hapeba: Deswegen wird das ja ins CVS eingecheckt. Wenn ein Stand kaputt ist, dann kannst du ja problemlos den letzten funktionierenden Stand auschecken.
Hi,

ich wusste, dass Du dass nicht auf Dir sitzen lässt.

Deine Antwort ist genau dass, wass ich wissen wollte. Habe es schon probiert. Sieht gut aus.

Nehm mir mein Posting nicht übel. Aber warum muss man Dich immer erst locken?

Schönen Sonntag noch.

MfG
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von Houdini »

Unverschämtheit :evil:
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: [PATCH] Mal wieder ein sectionsd-Versuch...

Beitrag von Tommy »

ich ziehe dann das
Aber vielleicht wollt Ihr ja auch unter Euch bleiben
vor :dash: