Jugendschutz im SportPortal!?!?

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

@Riker:
bitte auch den print weiter unten dann nur ausgeben, wenn die neue Größe überschritten wird

Code: Alles auswählen

	if (liste - evtList > 65*1024) 
		printf("warning: [sectionsd] all events - response-size: 0x%x\n", liste - evtList);
	responseHeader.dataLength = liste - evtList;
Homar
Senior Member
Beiträge: 1278
Registriert: Mittwoch 5. September 2001, 00:00

Beitrag von Homar »

ist ein bug...

kann ja nicht sein, das wenn festgestellt wird, das das Limit überschritten wird, nur eine Meldung ausgegeben wird und im Ablauf munter weitermacht :gruebel:

entweder printf und die zeile darunter in {} setzten oder die reihenfolge ändern und später abfangen.

Von wem ist die Passage gecoded?
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

kann ja nicht sein, das wenn festgestellt wird, das das Limit überschritten wird, nur eine Meldung ausgegeben wird und im Ablauf munter weitermacht
wenn das festgestellt wurde ist es schon zu spät

Der 'urcode' ist von
http://cvs.tuxbox.org/cgi-bin/viewcvs.c ... 19&r2=1.20
:-)
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

also bei mir kackt der nicht ab . ich arbeite noch mit den "alten" glibc geschichten
Homar
Senior Member
Beiträge: 1278
Registriert: Mittwoch 5. September 2001, 00:00

Beitrag von Homar »

@Houdini: stimmt, hast recht

Code: Alles auswählen

static void sendAllEvents(int connfd, t_channel_id serviceUniqueKey, bool oldFormat = true )
{
	#define EVENT_CACHE (65*1024)
	char *evtList = new char[EVENT_CACHE]; // 65kb should be enough and dataLength is unsigned short
	char *event = new char[2*1024];

	if (!evtList || !event)
	{
		fprintf(stderr, "low on memory!\n");
		return ;
	}

	dprintf("sendAllEvents for " PRINTF_CHANNEL_ID_TYPE "\n", serviceUniqueKey);
	*evtList = *event = 0;
	char *p_event = event;

	if (serviceUniqueKey != 0)
	{
		// service Found

		if (EITThreadsPause())
		{
			delete[] evtList;
			delete[] event;
			return ;
		}

		lockEvents();
		int serviceIDfound = 0;

		for (MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator e = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin(); e != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end(); e++)
		{
			if ((*e)->get_channel_id() == serviceUniqueKey)
			{
				serviceIDfound = 1;

				for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); t++)
				{
					if ( oldFormat )
					{
						char strZeit[50];
						sprintf(strZeit, "%012llx ", (*e)->uniqueKey());
						strcat(p_event, strZeit);

						struct tm *tmZeit;
						tmZeit = localtime(&(t->startzeit));
						sprintf(strZeit, "%02d.%02d %02d:%02d %u ",
								tmZeit->tm_mday, tmZeit->tm_mon + 1, tmZeit->tm_hour, tmZeit->tm_min, (*e)->times.begin()->dauer / 60);
						strcat(p_event, strZeit);
						strcat(p_event, (*e)->name.c_str());
						strcat(p_event, "\n");
					}
					else
					{
						*((event_id_t *)p_event) = (*e)->uniqueKey();
						p_event += sizeof(event_id_t);
						*((unsigned *)p_event) = t->startzeit;
						p_event += 4;
						*((unsigned *)p_event) = t->dauer;
						p_event += 4;
						strcpy(p_event, (*e)->name.c_str());
						p_event += strlen(p_event);
						p_event++;

						if (((*e)->text).empty())
						{
							strcpy(p_event, (*e)->extendedText.substr(0, 40).c_str());
							p_event += strlen(p_event);
						}
						else
						{
							strcpy(p_event, (*e)->text.c_str());
							p_event += strlen(p_event);
						}

						p_event++;
					}
				}
				*p_events = '\0';

				if (strlen(evtList) + strlen(event) <= EVENT_CACHE)
					strcat(evtList,event);
				else
					break;

				p_events = event;
				*p_events = '\0';
			} // if = serviceID
			else if ( serviceIDfound )
				break; // sind nach serviceID und startzeit sortiert -> nicht weiter suchen
		}

		unlockEvents();

		if (EITThreadsUnPause())
		{
			delete[] evtList;
			delete[] event;
			return ;
		}
	}

	if(strlen(*evtList)<=1)		/* für den Fall, das nichts gefunden wurde, ist evtList[0] = '\n' */
	{
		struct sectionsd::msgResponseHeader responseHeader;

		responseHeader.dataLength = strlen(evtList);

		dprintf("[sectionsd] all events - response-size: 0x%x\n", responseHeader.dataLength);

		if (writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true)
			writeNbytes(connfd, evtList, responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
		else
			dputs("[sectionsd] Fehler/Timeout bei write");
	}

	delete[] evtList;
	delete[] event;

	return ;
}

hier ein Fix.

Kann zur Zeit leider nicht einchecken, vielleicht tust du es für mich :P
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Das ist aber nicht die einzige Stelle an der sowas passiert.
Aber jetzt verschiebst du das Problem von eventlist nach event (falls event > 2k)
Aber das passiert ja nicht, genauso wie 65kB auch ausreichen, *g*

Ich schau nochmal drüber.

Houdini
Homar
Senior Member
Beiträge: 1278
Registriert: Mittwoch 5. September 2001, 00:00

Beitrag von Homar »

ein einzelner event kann doch nicht grösser 2k sein...

mache 3k draus, iss mir egal. Aber auf jedenfall wird nun abgefragt.


Es gibt noch eine andere stelle, wo der gleiche Code verwendet wird.
Dort sollte es auch so gemacht werden.

Hochschrauben auf 128K lösst nicht das Problem lieber Houdini
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

hängt das problem auch mit diesem zusammen:
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
zap failed!
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
zap failed!
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
zap failed!
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
zap failed!
[dmx.cpp:read:184] read(fd, buf, n): Connection timed out
zap failed!
[neutrino.cpp] executing /var/tuxbox/config/standby.on.
[controld] videoOutput off
[controld] SAAIOSMODE: Invalid argument
[controld] SAAIOSWSS: Invalid argument
zapit shot down :)
Waiting for controld (max. 9 seconds)
Going to halt system now ...
Starting pid 227, console /dev/console: '/bin/switch'
CXA2126 found
The system is going down NOW !![nhttpd] stop requested......
*** glibc detected *** double free or corruption (out): 0x10060af8 ***
Sending SIGKILL to all processes.
The system is halted. Press Reset or turn off power
innu
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Aber auf jedenfall wird nun abgefragt.
Ist aber dann auch genauso zu spät, weil event überschrieben wird.
Hochschrauben auf 128K lösst nicht das Problem lieber Houdini
Da hast Du vollkommen recht.

Houdini
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

@Houdini & metallica

Houdini, bei deinem neusten sectionsd-Fix, den metallica ins cvs eingecheckt hat, ist wohl etwas schief gegangen. Es wurden alle deutschen Umlaute rausgepatcht.
Metallica
Einsteiger
Einsteiger
Beiträge: 191
Registriert: Dienstag 30. Dezember 2003, 01:49

Beitrag von Metallica »

Gaucho316 hat geschrieben:@Houdini & metallica

Houdini, bei deinem neusten sectionsd-Fix, den metallica ins cvs eingecheckt hat, ist wohl etwas schief gegangen. Es wurden alle deutschen Umlaute rausgepatcht.
Ja ,gesehen kA was da passiert ist. (bei nächsten commit wird gefixt wenn nich jmd vorcher macht. )
@Homar
Dein fix ist aber auch kein wirkliche fix , weil zZ ist 65kb bei Zdfinfo schon zu wenig . Ich weiss wir können auf 128kb erhöhen. ;)
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

so hier ist mein neuer patch für sectionsd.cpp allerdings gegen die vorletzte cvs Version :-/

http://home.arcor.de/houdini/dbox/secti ... 25.diff.gz

Changes:
- Hopefully all possible Heapcorruptions are fixed now.
- When the eventlist/servicelist exceeds the maximum size it is cut - maybe we can increase size (but only for ZDF Info?)

Houdini
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Houdini hat geschrieben:- When the eventlist/servicelist exceeds the maximum size it is cut - maybe we can increase size (but only for ZDF Info?)
Houdini
Please increase, if needed for proper operation on ZDF infokanal :lol:
PetB
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

@Houdini
also auf version 1.203
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

also auf version 1.203
yep
Homar
Senior Member
Beiträge: 1278
Registriert: Mittwoch 5. September 2001, 00:00

Beitrag von Homar »

du kennst den unterschied zwischen einem event und allen events eines Kanals?

naja... :gruebel:
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

edit

Geht nun wieder, weis auich nicht was es war, nach nem clean und nochmal bauen ging es.

Sorry


Riker
Torsten73
Erleuchteter
Erleuchteter
Beiträge: 547
Registriert: Mittwoch 30. Juni 2004, 16:06

Beitrag von Torsten73 »

Hi,
also der JTG Snap vom 25.11. läuft nun bisher ohne Auffälligkeiten bei mir. Uptime jetzt 22h auf ARD ohne Sectionsd Crash. Vorher war es schon nach wenigen Stunden auf ARD mit dem EPG vorbei.
Auch ein ZDFInfo Test und megazapen hat die Box nicht aus der Ruhe gebracht.
Morgen Abend werde ich, wenn der Snap von heute auch so läuft, es mal meiner Schwiegermutter antuen, die bekannterweise nichts besseres tut als den halben Tag zu zappen :lol: Wenns crasht, dann bei Ihr...

Scheint tatsächlich, dass Ihr der Ursache langsam den Garaus gemacht habt... Aber mal nicht zu früh freuen, erst mal abwarten.

Weiter so 8)

Torsten
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Hallo,

Meine Erfahrung mit dem JTG Snap vom 26.11. 18:35

Philips, sections scan auf "ein", aktuell 10 Std. Uptime ohne Probleme.
Zappen ZDF-Infokanal, ohne Probleme.

Nokia, sections scan auf "aus"! auch 10 Std. Uptime, sonst ohne Probleme.

Auf der Nokia hatte ich mit sections scan auf "ein" 2 x kernel panic.
Schalte es jetzt gerade mal wieder ein und schau obs wieder pasiert.

Kurz noch ne Frage generell:
Wie ich erfahren habe bedeutet sections scan....:
ein = sucht nach neuen Kanälen auf dem TRansponder (meldet neuen gefundenen Kanal) nur beim zappen oder immer (interval) ?
(keine info) ein = das ganze ohne Bescheid zu geben wenn ein Kanal gefunden wurde ?
aus = aus

MUSS ich eine Kanalsuche machen wenn ich das Image neu aufspiele, oder kann ich auch meine alten services.xml und bouquets.xml nutzen ?
Muss ich irgend was anderes noch beachten, in bezug auf den sections scan ?
Danke an alle die hier gewerkelt haben, bin ziemlich zufrieden das die EPG Geschichte besser geworden ist.
Bye
PetB
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

@petb
falscher thread . gehört hier rein!
http://forum.tuxbox-cvs.sourceforge.net ... &start=300
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

mb405 hat geschrieben:@petb
falscher thread . gehört hier rein!
http://forum.tuxbox-cvs.sourceforge.net ... &start=300
Ok, danke, dachte weil Torsten73 hier auch was dazu geschreiben hat und die Unterhaltung hier imo passte.......
Habs im anderen Thread gepostet.
Um was gehts denn dann hier ?
Was hab ich mir denn dann für einen Stuss zusammen gereimt ? :lol:
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Und schwupp, da war er weg. Heute im Laufe des Tages ist mir der sectionsd wieder einmal abgestürzt. Genaueres kann ich nicht sagen, da ich es eben erst bemerkt habe. Der Absturz ist mir auf einem Premiere-Sender passiert. Es kann auch nur vom Premiere-EPG herkommen, da ich seit dem Start der Box am Samstag Abend nur Premiere-Kanäle (inkl. Sport und Direkt) an hatte.
Die letzten Änderungen haben wohl leider noch nicht das bewirkt, was sie sollten. :cry: Ich nutze den JtG-Snap vom 26.11.2005 mit ausgeschaltetem automatischen Kanal-Update. Mit einem Log kann ich aber leider nicht dienen.
MOhlmann
Einsteiger
Einsteiger
Beiträge: 205
Registriert: Montag 19. April 2004, 21:09

Beitrag von MOhlmann »

Hi, hier mal noch ein Log wo der sectionsd abgestürtzt ist

Code: Alles auswählen

avia_gt_napi: lost sync on queue 4 (lost 45 bytes)
[timeThread] time(): 30.11.2005 03:16:46, tim: Wed Nov 30 03:16:46 2005
[timeThread] time(): 30.11.2005 03:46:46, tim: Wed Nov 30 03:46:46 2005
[tuxdns] online_ip: 84.xxx.xxx.xxx
Status: onlinestatus changed
[tuxdns] new IP detected, try to update your account
[tuxdns] new status: good
[timeThread] time(): 30.11.2005 04:16:46, tim: Wed Nov 30 04:16:46 2005
[timeThread] time(): 30.11.2005 04:46:46, tim: Wed Nov 30 04:46:46 2005
[timeThread] time(): 30.11.2005 05:16:46, tim: Wed Nov 30 05:16:46 2005
[timeThread] time(): 30.11.2005 05:46:46, tim: Wed Nov 30 05:46:46 2005
[timeThread] time(): 30.11.2005 06:16:45, tim: Wed Nov 30 06:16:45 2005
[timeThread] time(): 30.11.2005 06:46:45, tim: Wed Nov 30 06:46:45 2005
[timeThread] time(): 30.11.2005 07:16:46, tim: Wed Nov 30 07:16:46 2005
[timeThread] time(): 30.11.2005 07:46:46, tim: Wed Nov 30 07:46:46 2005
[timeThread] time(): 30.11.2005 08:16:46, tim: Wed Nov 30 08:16:46 2005
[timeThread] time(): 30.11.2005 08:46:46, tim: Wed Nov 30 08:46:46 2005
avia_gt_napi: lost sync on queue 3 (lost 188 bytes)
avia_gt_napi: lost sync on queue 5 (lost 188 bytes)
sectionsd: /home/jtgimage/dbox2/cdk/lib/gcc/powerpc-tuxbox-linux-gnu/3.4.4/../../../../powerpc-tuxbox-linux-gnu/include/b
oost/shared_ptr.hpp:253: T* boost::shared_ptr<T>::operator->() const [with T = SIevent]: Assertion `px != 0' failed.
[CBasicClient] connect failed.
/tmp/sectionsd.sock: Connection refused
[CBasicClient] connect failed.
/tmp/sectionsd.sock: Connection refused
request canceled
: Connection reset by peer
Gruß Michael
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Danke für den log
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

petb hat geschrieben:
mb405 hat geschrieben:@petb
falscher thread . gehört hier rein!
http://forum.tuxbox-cvs.sourceforge.net ... &start=300
Ok, danke, dachte weil Torsten73 hier auch was dazu geschreiben hat und die Unterhaltung hier imo passte.......
Habs im anderen Thread gepostet.
Um was gehts denn dann hier ?
Was hab ich mir denn dann für einen Stuss zusammen gereimt ? :lol:
Bye
PetB
Ja, was denn nun :lol:
Wo gehts jetzt um den sectionsd Kram hier oder in dem Thread da oben ? :gruebel: :gruebel:
Bye
PetB