Memory leak in enigma2

  • Hi,


    wenn ich versuche nicht-lokale Sender zu schauen (zum Beispiel mittels Partnerbox hinzugefügt) wächst der enigma2 Prozess immer weiter, bis der dreambox client (800se client, 8000 server) abstürzt.
    Mit dem Plugin dürfte das nichts zu tun haben, da das feature ja inzwischen fest integriert wurde.
    Am besten nachvollziehbar auf HD-Sendern, dort dauert es nicht lange bis der Speicher voll ist.
    In älteren OE 1.6 Images existiert dieser bug nicht, z.B.: release-dm800se-3.2.0.nfi von 2011.


    gruß
    anonymous

  • Wie lange soll das dauern ?
    Nach 50 Minuten HD Streaming von der 8k, hab ich noch kein Memory Leak festgestellt auf meiner dm800se.
    Ich hatte damit bisher noch nie Probleme.

    Panasonic TX50-EXW784
    Panasonic SC-ALL70TEGK / SC-ALL2 wireless 5.1 Sundbar
    dm8000, dm7080, dm800sev2, dm900-dvb-s2-unicable, dm900-dvb-s2-multisat
    www.dreambox-tools.info Merlin-Project

  • idr. ~1 Stunde.
    kannst Du mal den output von "free -m" auf dem client posten?
    Bei mir ist erst der ganze Speicher weg, dann wird der cache aufgebraucht und danach wird geswapped.
    Enigma2 benutzt dann etwa 77mb Speicher alleine.

  • Habe zu testzwecken nochmal alles frisch aufgesetzt.
    Vorgehensweise:
    Neustes Image geflashed (dreambox-image-dm800se-20131209), Partnerbox plugin installiert, remote bouquet hinzugefügt.
    Getestet wurde ARD HD.
    Anfangs sah das noch gut aus:

    Code
    total   	used   	free 	shared	buffers 	cached
    Mem:       	131     	84     	47      	0      	0     	28
    -/+ buffers/cache:     	56     	75
    Swap:        	0      	0      	0


    Enigma2 hatte zu diesem Zeitpunkt nur 35mb Speicher verbraucht.


    Nach nur einer halben Stunde war Schluss mit lustig:

    Code
    total   	used   	free 	shared	buffers 	cached
    Mem:       	131    	129      	2      	0      	0      	2
    -/+ buffers/cache:    	127      	4
    Swap:        	0      	0      	0


    Enigma2 Speicherverbrauch lag bei 73.6mb und Box war unbedienbar.
    :frowning_face:

  • free ist auch kein Tool um den echten Speicherverbrauch zu messen. Linux ist ein system mit lazy swap, sprich es wird nur wieder memory frei gemacht wenn es für was anderes gebraucht wird.


    Insofern sind 'nur' ein paar MB die dir free anzeigt sobald ein system was mit mehreren Prozessen zu tun hat was ganz normales.


    Ich würde dir mal die Lektüre von /proc/meminfo empfehlen und den Gebrauch von top und vmstat bevor du was diagnostizierst.

  • Danke für den Tipp, aber ich habe bereits top benutzt und damit die größe des "enigma2" Speicherverbrauchs festgestellt, siehe mein letztes posting.

  • Und woher weist du wo top sich die Werte herholt bzw. wie diese gerechnet werden, bei einer Applikation die Multithreaded läuft kommt da immer zu viel raus - musst nur ein bisschen die freundliche Suchmaschine aus der Nachbarschaft fragen.


    Zitat

    When you run top, you will notice that a lot of memory are
    being used even though there may not be much applications currently
    running. The reasons for this huge usage is that the kernel allocates
    memory that isn't in active use by processes to things like filesystem
    caches to improve performance. If there is demand on the memory by
    another application or data, the kernel will free up the memory.

    Insofern gilt da das selbe wie beim free. Schau bei /proc/meminfo nach dann siehst du was wirklich frei ist und solange Linux nicht anfangen muss sachen abzuwürgen kann free und top da auch sehr nahe bei 0 stehen. Hängenbleiben kann auch von einem peak kommen für den dann halt nicht schnell genug freigeschaufelt werden kann


    Mach ein swapfile auf die harddisk und wenn das ständig benutzt wird und der verbrauch kontinuerlich steigt weist du mehr ...


    Und alte images auf OE 1.6 brauchen halt weniger memory, da war schon der gstreamer bug kein Problem weil der Film üblicherweise aus war bevor das Memory weg war.


    Die Boxen mit nur 256MB Memory sind für OE 2.0 nicht umsonst nicht released worden ...

  • kann ja sein dass die Werte nicht stimmen, trotz allem gibt es einen memory leak bei mir.
    Das zeigt auch gut deine Idee mit swap: nachdem der Speicher voll ist, wird immer weiter geswapped, bei 50mb im swap habe ich aufgehört. Die box ist dabei natürlich sehr träge und kaum zu gebrauchen.
    Mehr RAM wie in der V2 würden das Problem auch nur herauszögern, denke schon dass OE 2.0 gut laufen könnte.

  • Bloede nur das andere das so nicht haben.


    Und wenn du deine Infos nur stückweise rausrückst ist dir auch schwer zu helfen.


    Ich leugne ja nicht das du ein Problem hast, aber wenn es ein allgemeines wäre sähe es hier anders aus ....

  • Ich habe bereits wieder auf OE 1.6 umgestellt was im übrigen überhaupt keinen memory leak hat, läuft tadellos auch über längeren Zeitraum. Betrifft der gstreamer bug nicht nur mkv files mit subtitles?
    Es geht mir auch nicht um den insgesamten Speicherverbrauch von OE 2.0, es ist mir klar, dass mehr benötigt wird. Was aber wohl kaum normal sein dürfte ist, dass der enigma2 process immer größer wird bis die swap voll ist.
    Wenn noch weitere infos benötigt werden flashe ich gerne nochmal das aktuelle experimental release. z.B. cat /proc/meminfo ?

  • im alten OE 1.6 wird alter enigma2 code verwendet und eine alte gstreamer version. Und die sind auch nicht friktionsfrei ...


    Aber du kannst nicht 'Memory leak' schreien, ohne sinnvolle weitere Infos und dich dann wieder auf OE 1.6 zurückziehen und denken irgendwe wird schon deinen (?) Müll wegräumen.


    So funktioniert nicht mal DMM - von der Community ganz zu schweigen.


    Vielleicht bin ich da etwas empfindlicher als andere, aber ich habe schon zu oft 'geht nicht' als Fehlermeldung gelesen wo sich die Leute dann wundern das sie ignoriert wird.


    Insofern hat dir Ghost auch eine richtige und faire Antwort gegeben.

  • Nun, ich werde alles in meiner Macht Stehende tun um das Problem zu beheben bzw. dabei behilflich zu sein, aber ich bin eben mit meinem Latein am Ende.
    Meine dm800se ist ein reiner streaming client und mit OE 2.0 ist das einfach nich praktikabel, da nach 30 Minuten der Speicher zugemüllt ist.
    Ich liefere gerne weitere Infos wenn überhaupt interesse daran besteht. Liest sich nämlich so als würde es das Problem gar nicht geben, obwohl es sogar hier im Forum schon einen Thread zur selben Problematik gibt.
    Wenn man ein wenig im web sucht findet man auch noch mehr in anderen Foren.

  • Du merkst aber schon das du statt 'geht nicht' halt 'geht evt. auch bei anderen nicht' als Agrumentation benutzt


    So ist es weder praktikabel noch realistisch das irgendwas passiert auch wenn ich deine gute Absicht nicht in Frage stellen will.


    Und wozu du bei einem reinem Streaming client überhaupt OE 2.0 brauchst will ich jetzt gar nicht hinterfragen.

  • Ich wüsste nicht inwiefern meine frische Installation sich von anderen unterscheidet, von daher weiss ich auch nicht warum nicht jeder das Problem hat.
    Aber das geht auch zu weit. Bei manchen läufts nicht und jetzt ist nur noch zu klären warum :smiling_face:

  • also ich würde mal den output von enigma2 in telnet am client mitloggen wenn du streamst ob da irgendwas seltsames drinnen steht.


    init 4 und dann enigma2 in telnet ...

  • Ich mach immer lieber ein serielles Log (bei der 800se über MiniUSB sehr schnell gemacht, wenn man den Treiber installiert hat :grinning_squinting_face: ). Wenn ich E2 im Telnet starte zum Mitloggen, stürzt es bei mir irgendwie häufiger ab.

    so long
    m0rphU