Stiftung: Stabiler sectionsd
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Stiftung: Stabiler sectionsd
Weil sich die Bugreports leider über mehrere Topics verteilt haben, habe ich nicht so ganz den Überblick.
Hängt sich der sectionsd noch auf?
Wenn ja, dann postet bitte hier rein, wie ihr ihn möglichst schnell und reproduzierbar um die Ecke bringen könnt. Leider kann ich persönlich Meldungen, wie 24 Stunden auf ZDF laufen lassen, nicht überprüfen.
Ach und die Kanalsuche spielt vorerst nicht mit. Also bitte auf aus.
Weiterhin sollte der aktuelle CVS-Stand maßgeblich sein.
Mit sectionsd -d erstellte Logs wären hilfreich. Ebenso detaillierte Angaben zur Konfiguration.
Hängt sich der sectionsd noch auf?
Wenn ja, dann postet bitte hier rein, wie ihr ihn möglichst schnell und reproduzierbar um die Ecke bringen könnt. Leider kann ich persönlich Meldungen, wie 24 Stunden auf ZDF laufen lassen, nicht überprüfen.
Ach und die Kanalsuche spielt vorerst nicht mit. Also bitte auf aus.
Weiterhin sollte der aktuelle CVS-Stand maßgeblich sein.
Mit sectionsd -d erstellte Logs wären hilfreich. Ebenso detaillierte Angaben zur Konfiguration.
-
- Erleuchteter
- Beiträge: 547
- Registriert: Mittwoch 30. Juni 2004, 16:06
Hi,
also beim JTG 4.12. sind die Hänger immer noch reproduzierbar. 1-2 Tage mehr schafft der SectionSD nicht.
Aber mir ist da etwas merkwürdiges aufgefallen:
DBox ist seit 17h an, ohne Absturz. Nun bin ich ins EPG (ARD) gegangen und habe mir die Liste mal genauer angesehen. Nun sie war vollständig, aber der erste Eintrag war von vor 17h!
Der Einsprung im EPG ist zwar bei der aktuellen Sendung, aber man kann munter zurück scrollen und sieht alle Sendungen seit dem Start der Box.
Das kann doch kaum gewollt sein, oder?
Meiner Meinung nach sollte es so sein, dass die EPG Einträge aus der Vergangenheit gelöscht werden und damit der Speicher freigegeben wird und der erste Eintrag in der EPG Übersicht die aktuelle Sendung ist.
Noch dazu kommt das der Speicher laut Sysinfo nur noch bei 0,2MB liegt. wo will man dann noch EPG Daten ablegen?
Ich könnte mir gut vorstellen, dass dort der Hund begraben liegt. Richtig ist dieses Verhalten nämlich bestimmt nicht, und wer weiß was das für Folgen nach sich zieht...
Cu
Torsten
also beim JTG 4.12. sind die Hänger immer noch reproduzierbar. 1-2 Tage mehr schafft der SectionSD nicht.
Aber mir ist da etwas merkwürdiges aufgefallen:
DBox ist seit 17h an, ohne Absturz. Nun bin ich ins EPG (ARD) gegangen und habe mir die Liste mal genauer angesehen. Nun sie war vollständig, aber der erste Eintrag war von vor 17h!
Der Einsprung im EPG ist zwar bei der aktuellen Sendung, aber man kann munter zurück scrollen und sieht alle Sendungen seit dem Start der Box.
Das kann doch kaum gewollt sein, oder?
Meiner Meinung nach sollte es so sein, dass die EPG Einträge aus der Vergangenheit gelöscht werden und damit der Speicher freigegeben wird und der erste Eintrag in der EPG Übersicht die aktuelle Sendung ist.
Noch dazu kommt das der Speicher laut Sysinfo nur noch bei 0,2MB liegt. wo will man dann noch EPG Daten ablegen?
Ich könnte mir gut vorstellen, dass dort der Hund begraben liegt. Richtig ist dieses Verhalten nämlich bestimmt nicht, und wer weiß was das für Folgen nach sich zieht...
Cu
Torsten
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
-
- Einsteiger
- Beiträge: 205
- Registriert: Montag 19. April 2004, 21:09
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Okay, jetzt fange ich schon wieder mit Crossposting an, aber der Patch aus dem anderen Topic gehört auch irgendwie dahin.
Die Erklärung hier:
Mich störte, dass EPG-events zuerst gelöscht und dann sofort wieder hinzugefügt wurden. Finde ich irgendwie unschön. Gibt es dafür einen Grund? Z.B. ändern sich die Events mal in ihrer Länge oder so? Z.B. bei verlängerten Liveübertragungen? Dann wäre meine "Verbesserung" natürlich schlecht. Jetzt habe ich es so gemacht, dass wenn die Event-ID existiert, wird nichts unternommen. Vorher wurde gelöscht und direkt danach wieder hinzugefügt. Das führt natürlich zu unnötigen Speicher OPs.
Die Erklärung hier:
Mich störte, dass EPG-events zuerst gelöscht und dann sofort wieder hinzugefügt wurden. Finde ich irgendwie unschön. Gibt es dafür einen Grund? Z.B. ändern sich die Events mal in ihrer Länge oder so? Z.B. bei verlängerten Liveübertragungen? Dann wäre meine "Verbesserung" natürlich schlecht. Jetzt habe ich es so gemacht, dass wenn die Event-ID existiert, wird nichts unternommen. Vorher wurde gelöscht und direkt danach wieder hinzugefügt. Das führt natürlich zu unnötigen Speicher OPs.
-
- Einsteiger
- Beiträge: 205
- Registriert: Montag 19. April 2004, 21:09
-
- Einsteiger
- Beiträge: 281
- Registriert: Mittwoch 8. Dezember 2004, 21:45
die sectionsd 1.211 (houdinis fix) stürtzt bei mir alle paar stunden unmotiviert ab. freier speicher geht auf 600-700kb herunter - anschließend reagiert die box nicht mehr.
ich habe eventstocaache auf 4 tage und oldeventsare auf 60min
sectionsd 1.212 (nirvanas fix) habe ich noch nicht eingepflegt.
innu
ich habe eventstocaache auf 4 tage und oldeventsare auf 60min
sectionsd 1.212 (nirvanas fix) habe ich noch nicht eingepflegt.
innu
-
- Erleuchteter
- Beiträge: 547
- Registriert: Mittwoch 30. Juni 2004, 16:06
@Nirvana:
NNein es waren definitiv EPG Einträge von Dienstag 14 Uhr, da fingen die ersten an. Das war auch Zurückgerechnet der Startpunkt der Box. Nachgesehen hatte ich das heute morgen gegen 8.30.
Also wenn die letzte Sendung noch gecached wird könnte ich das noch für sinnvoll halten, aber nicht für 6h oder wie tatsächlich eher unendlich (obwohl ich ja denke das hier ein Softwarefehler vorliegt). Wir haben doch eh zuwenig Speicher für den EPG, warum den alten Müll mit uns mitschleppen?
Und zu den unnötigen Speicherzugriffen, war das nicht Günter der mal etwas vorgeschlagen hatte, damit nicht "auf dem Heap rumgeorgelt" wird? Kenne mich damit nur leider nicht aus, aber es ist schon richtig, das es in der Technik ja auch Fehler der CPUs gibt, die durch zu intensieven Gebrach vom Stack oder ähnlichem einen Fehler/Absturz hervorrufen können. So was gab es bei meiner C-Control nämlich auch... Das ganze anders programmiert, ohne Stack und schon funktioniert es.
Cu
Torsten
NNein es waren definitiv EPG Einträge von Dienstag 14 Uhr, da fingen die ersten an. Das war auch Zurückgerechnet der Startpunkt der Box. Nachgesehen hatte ich das heute morgen gegen 8.30.
Also wenn die letzte Sendung noch gecached wird könnte ich das noch für sinnvoll halten, aber nicht für 6h oder wie tatsächlich eher unendlich (obwohl ich ja denke das hier ein Softwarefehler vorliegt). Wir haben doch eh zuwenig Speicher für den EPG, warum den alten Müll mit uns mitschleppen?
Und zu den unnötigen Speicherzugriffen, war das nicht Günter der mal etwas vorgeschlagen hatte, damit nicht "auf dem Heap rumgeorgelt" wird? Kenne mich damit nur leider nicht aus, aber es ist schon richtig, das es in der Technik ja auch Fehler der CPUs gibt, die durch zu intensieven Gebrach vom Stack oder ähnlichem einen Fehler/Absturz hervorrufen können. So was gab es bei meiner C-Control nämlich auch... Das ganze anders programmiert, ohne Stack und schon funktioniert es.
Cu
Torsten
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Was halten denn die Gelehrten von diesem Code-Schnipsel im Housekeeper?
speicherinfo1 wird nur gefüllt, wenn debug == true. Kurz danach werden aber Infos von speicherinfo1 abgefragt, wenn Events gelöscht wurden. Dies gilt auch wenn nicht debug ist. Können da nicht böse, böse Dinge passieren?
Code: Alles auswählen
struct mallinfo speicherinfo1;
if (debug)
{
// Speicher-Info abfragen
speicherinfo1 = mallinfo();
}
lockEvents();
unsigned anzEventsAlt = mySIeventsOrderUniqueKey.size();
removeOldEvents(oldEventsAre); // alte Events
if (mySIeventsOrderUniqueKey.size() != anzEventsAlt)
{
dprintf("total size of memory occupied by chunks handed out by malloc: %d\n", speicherinfo1.uordblks);
dprintf("total bytes memory allocated with `sbrk' by malloc, in bytes: %d (%dkb, %.2fMB)\n", speicherinfo1.arena, speicherinfo1.arena / 1024, (float)speicherinfo1.arena / (1024.*1024));
dprintf("Removed %d old events.\n", anzEventsAlt - mySIeventsOrderUniqueKey.size());
}
-
- Developer
- Beiträge: 457
- Registriert: Sonntag 23. März 2003, 00:39
hi,
ist dprintf nicht ein makro, das zu
oder ähnlich expandiert wird?
ciao,
ChakaZulu
ist dprintf nicht ein makro, das zu
Code: Alles auswählen
if (debug) printf(...)
ciao,
ChakaZulu
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Code: Alles auswählen
for (MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
e != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); e++) {
...
if (false == goodtimefound) {
// keep track of our iterator
etmp = e;
etmp--;
deleteEvent((*e)->uniqueKey());
e = etmp;
}
...
Okay, habe ich nicht überprüft.
Nächstes Opfer: Das oben ist aus removeOldevents. Was passiert, wenn das erste event der Liste geläöscht wird? Dann ist e == begin und dann wird etmp--. Führt das vielleicht zu Problemen und erklärt wieso alte Events nicht verschwinden?
-
- Einsteiger
- Beiträge: 127
- Registriert: Donnerstag 23. Oktober 2003, 20:50
Re: Stiftung: Stabiler sectionsd
Hallo,
Dabei habe ich folgendes festgestellt:
+ sectionsd stürzt anscheind nicht mehr ab (in früheren Versionen, war der EPG nach ca. einem Tag weg, d.h. sectionsd hat sich beendet)
- sectionsd lässt nach mehreren Umschaltvorgängen die Box einfrieren indem zuviel Speicher belegt wird. Ein Login per telnet, abschiessen von sectionsd bringt die Box wieder zum Laufen.
Früher funtkionierte der sectionsd eigentlich ganz gut - kennt jemand evtl. ein Datum, wo dies noch so war? Ich würde dann gerne diese Version auschecken und einbauen, sofern es denn mit dem aktuellen Neutrino geht...
ich habe hier ein selbsterstelltes Yadi-Image (Yadi-Script vom 06.11.2005), wo ich in letzter Zeit immer nur die sectionsd und zapit neu aus dem CVS hole und teste. Die letzte Version ist vom 06.12.05.Nirvana hat geschrieben: Hängt sich der sectionsd noch auf?
Dabei habe ich folgendes festgestellt:
+ sectionsd stürzt anscheind nicht mehr ab (in früheren Versionen, war der EPG nach ca. einem Tag weg, d.h. sectionsd hat sich beendet)
- sectionsd lässt nach mehreren Umschaltvorgängen die Box einfrieren indem zuviel Speicher belegt wird. Ein Login per telnet, abschiessen von sectionsd bringt die Box wieder zum Laufen.
Früher funtkionierte der sectionsd eigentlich ganz gut - kennt jemand evtl. ein Datum, wo dies noch so war? Ich würde dann gerne diese Version auschecken und einbauen, sofern es denn mit dem aktuellen Neutrino geht...
-
- Einsteiger
- Beiträge: 116
- Registriert: Montag 29. März 2004, 22:00
Code: Alles auswählen
kennt jemand evtl. ein Datum, wo dies noch so war? Ich würde dann gerne diese Version auschecken und einbauen
meines wissens müßte bis zum 15.08.2005 noch alles funzen.
ich wollte gerade mal nachschauen, aber leider ist tuxbox irgendwie nicht erreichbar ?!?
mfg
wittinobi
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
JTG 4.12.
Nicht reproduzierbare Hänger.
Eine Box läuft 2 Tage, die andere 1 Tag, wieder ne andere dazwischen.
Leide finde ich keinen repoduzierbaren Weg mehr sectionsd mutwillig abzuschiessen.
Im log steht, wenn überhaupt, immer nur Segmentation Fault.
Bei einer Nokia semmelt auch ab und zu mal die ganze Box ab und bleibt mit leicht verkrüppelter LCD Anzeige stehen.
(Um es gleich vorwehzunehmen, die Box mit JTG 04.10 läuft Ewigkeiten durch, ohne Probs)
Ne andere Nokia wird ab und zu mal extrem langsam.
Die Philips machts am besten, obwohl die bis vor kurzem am schnellsten Fehler zeigte.
Ich versteh die Boxen und den sectionsd im Moment garnicht
Sorry kann nicht wirklich dienlich sein.
Bye
PetB
Nicht reproduzierbare Hänger.
Eine Box läuft 2 Tage, die andere 1 Tag, wieder ne andere dazwischen.
Leide finde ich keinen repoduzierbaren Weg mehr sectionsd mutwillig abzuschiessen.
Im log steht, wenn überhaupt, immer nur Segmentation Fault.
Bei einer Nokia semmelt auch ab und zu mal die ganze Box ab und bleibt mit leicht verkrüppelter LCD Anzeige stehen.
(Um es gleich vorwehzunehmen, die Box mit JTG 04.10 läuft Ewigkeiten durch, ohne Probs)
Ne andere Nokia wird ab und zu mal extrem langsam.
Die Philips machts am besten, obwohl die bis vor kurzem am schnellsten Fehler zeigte.
Ich versteh die Boxen und den sectionsd im Moment garnicht
Sorry kann nicht wirklich dienlich sein.
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Einsteiger
- Beiträge: 128
- Registriert: Sonntag 12. Mai 2002, 10:43
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
@Nirvana
Da muß man sich noch was einfallen lassen, aber was passiert, wenn man den aktuellen iterator aus der liste löscht und dann diesen weiter iteriert?
Houdini
Oha da hast du glaub ich recht, das wird nicht abgefangen, da muß ich mich schämenNächstes Opfer: Das oben ist aus removeOldevents. Was passiert, wenn das erste event der Liste geläöscht wird? Dann ist e == begin und dann wird etmp--. Führt das vielleicht zu Problemen und erklärt wieso alte Events nicht verschwinden?
Da muß man sich noch was einfallen lassen, aber was passiert, wenn man den aktuellen iterator aus der liste löscht und dann diesen weiter iteriert?
Houdini
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
-
- Erleuchteter
- Beiträge: 547
- Registriert: Mittwoch 30. Juni 2004, 16:06
Hi,
so nochmal zu meinen Beobachtungen:
also ich komme nach Hause, Box läuft immer noch (die heute morgen die uralten Events anzeigte) Uptime 1T7h. Sectionssd noch aktiv. freier Speicher =0,8MB allerdings sectionsdscan = an.
keine 10 min. später nachdem gezappt wurde was so läuft, wird die Box grottenlangsam und kaum bedienbar. Das konnte ich noch per WebIF auslesen, bis meine Schwiegermutter den Reset machte (obwohl sie nicht sollte ):
und das kommt dann zig mal...
Vorher habe ich mir ZDF EPG angesehen, dort war der erste EPG Eintrag vom Dienstag 16 Uhr und Uptime 1T 8h. Aktueller Uhrzeit war 23.30 Mittwoch!
Dann habe ich mal versucht eine Speichermessung zu erstellen.
D.h. habe folgende Sender angezappt und mit Sysinfo den freien Speicher ausgelesen, nachdem der Prozessor nichts mehr tat:
RTL = 10,7 MB free
Sat1 = 10,5 MB free
ARD = 6,6 MB free (dauert am längsten)
ZDF= zwischenzeitlich 3,8 -> zum Schluß 4,8 MB free ?!? was soll der Schwanker?
Pro7 = 3,8 -> 4,8 MB wie bei ZDF
Premiere = 3,3 -> 4,4 MB
wieder auf
RTL = 3,5 und nach einiger Zeit wieder 4,5 dauert aber länger als vorher
wieder auf
Sat1 = 3,5 -> 4,5MB
Zusammengefasst, sind nach 15 min Onlinezeit noch 4,5MB Speicher frei. Dabei habe ich auf den Paketen ARD/ZDF/Sat1/RTL alle EPG Daten gesammelt die anfallen.
D.h. in den nächsten Stunden wird der Speicher kontinuirlich weniger, obwohl er doch gleich bleiben müßte wenn ich nichts anderes mache!
Was allerdings das Gespringe im freien Speicher zwischen 3,5 und 4,5 bedeutet weiß ich auch nicht.
Ich habe auch Screenshots, kann die aber bei bedarf nur mailen, habe keinen Webspace
So ich hoffe das hilft ein wenig weiter ...
Cu
Torsten
so nochmal zu meinen Beobachtungen:
also ich komme nach Hause, Box läuft immer noch (die heute morgen die uralten Events anzeigte) Uptime 1T7h. Sectionssd noch aktiv. freier Speicher =0,8MB allerdings sectionsdscan = an.
keine 10 min. später nachdem gezappt wurde was so läuft, wird die Box grottenlangsam und kaum bedienbar. Das konnte ich noch per WebIF auslesen, bis meine Schwiegermutter den Reset machte (obwohl sie nicht sollte ):
Code: Alles auswählen
avia_gt_dmx queue 31 overflow (count1)
Vorher habe ich mir ZDF EPG angesehen, dort war der erste EPG Eintrag vom Dienstag 16 Uhr und Uptime 1T 8h. Aktueller Uhrzeit war 23.30 Mittwoch!
Dann habe ich mal versucht eine Speichermessung zu erstellen.
D.h. habe folgende Sender angezappt und mit Sysinfo den freien Speicher ausgelesen, nachdem der Prozessor nichts mehr tat:
RTL = 10,7 MB free
Sat1 = 10,5 MB free
ARD = 6,6 MB free (dauert am längsten)
ZDF= zwischenzeitlich 3,8 -> zum Schluß 4,8 MB free ?!? was soll der Schwanker?
Pro7 = 3,8 -> 4,8 MB wie bei ZDF
Premiere = 3,3 -> 4,4 MB
wieder auf
RTL = 3,5 und nach einiger Zeit wieder 4,5 dauert aber länger als vorher
wieder auf
Sat1 = 3,5 -> 4,5MB
Zusammengefasst, sind nach 15 min Onlinezeit noch 4,5MB Speicher frei. Dabei habe ich auf den Paketen ARD/ZDF/Sat1/RTL alle EPG Daten gesammelt die anfallen.
D.h. in den nächsten Stunden wird der Speicher kontinuirlich weniger, obwohl er doch gleich bleiben müßte wenn ich nichts anderes mache!
Was allerdings das Gespringe im freien Speicher zwischen 3,5 und 4,5 bedeutet weiß ich auch nicht.
Ich habe auch Screenshots, kann die aber bei bedarf nur mailen, habe keinen Webspace
So ich hoffe das hilft ein wenig weiter ...
Cu
Torsten
-
- Tuxboxer
- Beiträge: 2614
- Registriert: Montag 20. Mai 2002, 10:49
- Image: JTG-Image [IDE] Version 2.4.4
- Image: (7025SS) Merlin
Screenshots kannst Du bei Image Shack uploaden. Diese Bilder kannst Du dann hier direkt in Deine Posts einfügen.Ich habe auch Screenshots, kann die aber bei bedarf nur mailen, habe keinen Webspace
So ich hoffe das hilft ein wenig weiter ...
Greetz von DrStoned
Greetz von DrStoned
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
Hallo,
habe heute Nacht das erhalten.
Weis nicht genau wann und wie, hab ja geschlafen.
Sections scan ist aus, trotzdem meldet er ab und zu Transponder blahfasel gefunden und ähnliches....Zeugs.PetB
habe heute Nacht das erhalten.
Weis nicht genau wann und wie, hab ja geschlafen.
Sections scan ist aus, trotzdem meldet er ab und zu Transponder blahfasel gefunden und ähnliches....Zeugs.
Code: Alles auswählen
Machine check in kernel mode.
Caused by (from SRR1=1032): Transfer error ack signal
Oops: machine check, sig: 7
NIP: C38A016C XER: 20000000 LR: C38A011C SP: C18C5EB0 REGS: c18c5e00 TRAP: 0200 Not tainted
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c18c4000[135] 'sectionsd' Last syscall: 13
last math 00000000 last altivec 00000000
GPR00: 00001310 C18C5EB0 C18C4000 00000001 00000000 00131022 10144FE8 31021D00
GPR08: 00000013 C38A8000 C38A0000 C38A8000 44004084 10047264 00000000 300194B4
GPR16: 00000000 4397852F 10020000 10040000 00001032 018C5F40 00000000 C0002AA0
GPR24: C0003B60 00000020 C1C91AC0 00131022 00000000 00000080 00000000 C1C91AC0
Call backtrace:
00000020 C38A04D8 C0003A98 C0003B9C C0002AA0 4397C00F 0FD2E7F0
0FF2F884 10018E50 1001939C 1000E48C 100144F8 0FE45B84 0FD58B08
PCR discontinuity: PCR: 0x0779C10F1, OLDPCR: 0x0779AF0C6, Diff: 73771
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
<0>Rebooting in 180 seconds..?debug: DDF:
-
- Erleuchteter
- Beiträge: 547
- Registriert: Mittwoch 30. Juni 2004, 16:06
Ahh, gut zu wissen. Thx!DrStoned hat geschrieben:Screenshots kannst Du bei Image Shack uploaden. Diese Bilder kannst Du dann hier direkt in Deine Posts einfügen.Ich habe auch Screenshots, kann die aber bei bedarf nur mailen, habe keinen Webspace
So ich hoffe das hilft ein wenig weiter ...
Greetz von DrStoned
Nochmal zum Speicherbedarf, habe heute nacht eine Box nach Neustart auf Premiere Radio gelassen, nichts anderes angezappt, mal sehen, was heute Abend der freie Speicher sagen wird.
Das ganze mit dem freien Speicher ist mir mittlerweile alles sehr zweifelhaft. Sectionsdscan benötigt auch Speicher uund nicht gerade wenig 3-4 MB und der MB selbstverständlich ebenso, vom Pictureviewer ganz zu schweigen. Und alle Aplikationen benötigen eigentlich mehr Speicher als wir zur Verfügung haben.
Heute morgen habe ich testweise bei einem Freespeicher von 0,8MB den Picviewer gestartet (ohne decodingserver) und anstatt das Bild anzuzeigen ist die Box ausgegangen. Selber Versuch direkt nach dem Neustart funktioniert problemlos.
Anscheinend wird der Speicher nicht richtig freigegeben, wenn andere Aplikationen ihn benötigen und zusätzlich läuft de Speicher mit der sectionsd voll.
Was/wo wird eigentlich abgefangen wenn mehr Speicher benötigt als vorhanden? Auslagern geht ja schlecht, also muß doch irgendwo was grundsätzliches bei den Taks schieflaufen.
Ich stelle mir das so vor, das wenn eine andere Vordergrundanwendung Speicher haben will, der Speicher vorher geleert werden muß, damit für die gerade aktive Anwendung wieder genügend zur Verfügung steht.
Und genau da würde ich suchen.
1. Warum löscht der Sectionsd nicht die alten Events (daraus resultiert der wachsende Speicherbedarf) ?
2. Wieso wird ein Speicherüberlauf nicht abgefangen?
3. Wo wird definiert welcher Task welchen Adressbereich nutzt und unter welchen Bedingungen den wieder freigibt?
Soviel von meinem logischen Verständniss. Korrigiert mich, wenn ich blödsinn Rede, aber ich denke das darin die Ursache liegt.
Ich hoffe dass es Euch gelingt die Probleme im Code zu finden, ich kann es leider mit meinen Programmierkünsten nicht. Ist schon viel zu lange her
Cu
Torsten
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
zu 1:Und genau da würde ich suchen.
1. Warum löscht der Sectionsd nicht die alten Events (daraus resultiert der wachsende Speicherbedarf) ?
2. Wieso wird ein Speicherüberlauf nicht abgefangen?
3. Wo wird definiert welcher Task welchen Adressbereich nutzt und unter welchen Bedingungen den wieder freigibt?
macht er doch (ok mit meinem letzten Patch gibts da ein Problem...)
zu 2:
wird er meisten (aber nicht immer), muß überall wo Speicher allokiert wird separat abgefangen werden.
zu 3:
nirgendwo, bzw das macht das OS. Speicher wird mit malloc allokiert und dann irgendwann wieder freigegeben (oder auch nicht). Das steuert die Applikation.
Zum Speicherverauch des sectionsd: Ich habe >4 Wochen damit verbracht herauszufinden wo der Speicher verloren geht, aber nichts gefunden.
Was ich herausgefunden habe ist, dass alleine ca. 50% für die Verwaltung der Events verbraucht wird (std::set, std::map) - auch wenn man alle events nachher löscht bleibt der maximalstand der maps bestehen.
Houdini
-
- Contributor
- Beiträge: 1833
- Registriert: Mittwoch 10. April 2002, 15:39
und was war hiermit??
Günther:
ich bin ja kein coder, aber könnte man da nicht testweise andere methoden anwenden?
Günther:
http://forum.tuxbox-cvs.sourceforge.net ... &start=380Weiterhin ist mir aufgefallen, daß ganz schon auf dem heap rumgeorgelt wird (mallocs). Ich weiss ja nicht wie das bei Linux ist, aber Speicherfragmentierungen sind ansonsten die größten Probleme bei embedded C++Projekten (nicht ohne Grund sind malloc in der embedded Welt oft verboten). Das könnte auch der Grund sein, warum die Boxen nach Stunden oder Tagen abschmieren.
ich bin ja kein coder, aber könnte man da nicht testweise andere methoden anwenden?
-
- Einsteiger
- Beiträge: 205
- Registriert: Montag 19. April 2004, 21:09
Hier hab ich noch ein log wo die box hängen geblieben ist.
http://people.freenet.de/mohlmann/secti ... 081205.rar
Und hier noch eines wo die box runter gefahren ist. Im Seriellen log stand noch segmentation fault!
http://people.freenet.de/mohlmann/secti ... _fault.rar
Gruß Michael
http://people.freenet.de/mohlmann/secti ... 081205.rar
Und hier noch eines wo die box runter gefahren ist. Im Seriellen log stand noch segmentation fault!
http://people.freenet.de/mohlmann/secti ... _fault.rar
Gruß Michael
Zuletzt geändert von MOhlmann am Donnerstag 8. Dezember 2005, 17:24, insgesamt 1-mal geändert.