nach best uptime , boost::interprocess::bad_alloc

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    habe hier einen Raspberry pi mit 16GB SD-Karte und normal installierter Raspberry BS.
    Nach einer gewissen Uptime ca. 1-2 Wochen erhalten ich die folgende Meldungen im Terminal

    error pid:11371, boost::interprocess::bad_alloc
    error pid:11373, boost::interprocess::bad_alloc
    error pid:11375, boost::interprocess::bad_alloc
    error pid:11380, boost::interprocess::bad_alloc
    error pid:11382, boost::interprocess::bad_alloc

    nach Suche im Netz hatte ich nur einen reboot gefunden... ist das alles was es dazu gibt?

    ansonsten habe ich apache2, mysql und php installiert und zum Testen hatte ich noch eine Mongodb drauf.

    Weiss jemand was der Grund für diese komische Meldung ist?
    Gruß Jürgen

  • Das ist hoechst wahrscheinlich ein Memory-Problem.

    C++ wirft bad_alloc wenn es keinen Speicher allozieren kann.

    Auffallend ist, dass es immer wieder andere PIDs sind. Stirbt da ein Prozess
    und wird wieder neu gestartet ? Oder ist es eine ganze Gruppe von Prozessen
    die zusammengehoeren ?

    Was fuer ein Prozess gehoert zur angegebenen ID ?


  • Das ist hoechst wahrscheinlich ein Memory-Problem.

    C++ wirft bad_alloc wenn es keinen Speicher allozieren kann.

    Auffallend ist, dass es immer wieder andere PIDs sind. Stirbt da ein Prozess
    und wird wieder neu gestartet ? Oder ist es eine ganze Gruppe von Prozessen
    die zusammengehoeren ?

    Was fuer ein Prozess gehoert zur angegebenen ID ?

    hallo,
    das das mit dem Speicher dachte auch schon ein anderes Mitglied hier mit dem gleichen Problem.
    das war es dann aber doch nicht.
    zuwas die PID's gehören?
    die eine zumindest zur -bash
    die anderen? mmmhh? keine Ahnung
    wenn ich bs xua eingebe sehe ich nur ein der PID's und das ist die bash
    ich logge mich auch via SHH ein.

    Ich habe auch im Netz wenig drüber erfahren und weiss also nicht wo ich da suchen oder ansetzen soll
    gerade habe ich mich erneut eingeloggt und wieder diese komische Meldung
    dann habe ich mit ps xua danach gesucht
    und nochmals ps xua eingegeben
    diese PID's ändern sich also ständig

    siehe Ausgabe:

    pi@printer2 ~ $ ps xua|grep 11542
    error pid:11558, boost::interprocess::bad_alloc
    error pid:11557, boost::interprocess::bad_alloc
    pi 11558 0.0 0.4 5920 1792 pts/1 S+ 00:17 0:00 grep --color=auto 11542
    pi@printer2 ~ $ ps xua|grep 11542
    error pid:11560, boost::interprocess::bad_alloc
    error pid:11559, boost::interprocess::bad_alloc
    pi 11560 0.0 0.4 5920 1792 pts/1 S+ 00:17 0:00 grep --color=auto 11542
    pi@printer2 ~ $ ps xua|grep 11542
    error pid:11562, boost::interprocess::bad_alloc
    error pid:11561, boost::interprocess::bad_alloc
    pi 11562 0.0 0.4 5920 1792 pts/1 S+ 00:17 0:00 grep --color=auto 11542
    pi@printer2 ~ $ ps xua|grep 11542
    error pid:11564, boost::interprocess::bad_alloc
    error pid:11563, boost::interprocess::bad_alloc
    pi 11564 0.0 0.4 5920 1792 pts/1 S+ 00:17 0:00 grep --color=auto 11542
    pi@printer2 ~ $ ps xua|grep 11564
    error pid:11566, boost::interprocess::bad_alloc
    error pid:11565, boost::interprocess::bad_alloc
    pi 11566 0.0 0.4 5920 1792 pts/1 S+ 00:17 0:00 grep --color=auto 11564

    Einmal editiert, zuletzt von selfmade (21. Mai 2014 um 00:19)


  • > siehe Ausgabe:
    Ich seh nix, das hat keinen Zusammenhang.

    Machen wir mal einen Test mit dem wir was anfangen koennen:

    ps -Alfw

    Warten bis der Fehler auftritt

    ps -Alfw

    hallo,
    wie meinst Du das "warten bis der Fehler auftritt"?

    ich habe ps mit diesen Parametern eingegeben
    hier die Ausgabe

    Gruß Jürgen

  • Er Meint: Vorher und Nachher vergleich um herauszufinden, das der Prozess war, denn der Prozess ist ja WEG wenn er abgestürzt ist.
    Ich ich widerhole mich: Wie voll ist denn der RAM, speziell kurz vor dem Absturz, läuft der voll?


  • Er Meint: Vorher und Nachher vergleich um herauszufinden, das der Prozess war, denn der Prozess ist ja WEG wenn er abgestürzt ist.
    Ich ich widerhole mich: Wie voll ist denn der RAM, speziell kurz vor dem Absturz, läuft der voll?


    ok
    habs verstanden.. werden den RAM mal prüfen und melde mich dann wieder


    Danke!
    Gruß Jürgen

  • Hallo,
    hier also der Reihenfloge nach was passiert und den Ausgaben
    ich habe es nun mit 2 ssh-terminals probiert
    also zuerst eingeloggt und in diesem terminal die Befehle ausgeführt
    "Zuvor" bedeutet das ich nur mit einem Terminal eingeloggt war
    "danach" bedeutet das ich mich mit dem zweiten Terminal eingeloggt habe

    Zuerst logge ich mich via ssh ein
    dann kommen erstmal diese boost::interprocess::bad_alloc Medlunge. Immer vier Meldungen
    Zuvor:
    dann rufe ich
    ps -Alfw
    hier die Ausgabe


    dann habe ich in diesem Terminal noch
    den Befehl ausugeführt /also auch zuvor)
    cat /proc/meminfo


    dann noch dmesg

    dann meldete ich mich mit einer zweiten ssh-session an
    und gab im anderen Terminal wieder die gleichen Befehle ein
    hier die Ausgaben
    danach


    dann noch meminfo


    und noch dmesg

    sorry für den ganzen code...
    hoffe aber so dass ihr sieht an was es liegen könnte

    der RAM sieht sieht schon etwas voll aus ..

    Gruß Jürgen

  • Ok, war anscheinend nicht klar genug ...

    Also noch einmal, ganz detailliert:

    1. ps -Alfw
    2. Warten bis der Fehler auftritt
    3. Meldung aufschreiben ! Welcher Prozess hat einen Fehler gemeldet ?
    4. ps -Alfw

    -> Analyse

    Welche Prozesse haben Fehler gemeldet ?

    Die vierte Spalte ist die Prozess-ID und die muss mit der Prozess-ID in der Fehlermeldung
    uebereinstimmen.

    --> Gibt es genau diese Prozesse nach dem Fehler noch ?
    --> Wie heissen die Prozesse ?
    --> Wer ist der Parent-Prozess (Die funfte Spalte ist die Prozess-ID vom Parent-Prozess)

  • hallo,
    dann haben wir aneinander vorbei geredet, sorry

    Der Fehler tritt NUR dann auf wenn ich mich einlogge
    sonst nicht
    ich bekomme nur diese Meldungen " boost::interprocess::bad_alloc" nach dem einloggen auf im Terminal ausgegeben.
    Wenn ich "ps- xxx oder dmesg oder meinfo aufrufe bekomme ich auch
    boost::interprocess::bad_alloc"

    es sieht so aus.

    ich habe mich gerade eingeloggt
    jetzt erhalte ich diese Meldungen

    Code
    Last login: Wed May 21 22:15:48 2014 from pc192-168-2-200
    error pid:12857, boost::interprocess::bad_alloc
    error pid:12859, boost::interprocess::bad_alloc
    error pid:12861, boost::interprocess::bad_alloc
    error pid:12866, boost::interprocess::bad_alloc
    error pid:12868, boost::interprocess::bad_alloc


    wenn ich jetzt mit
    ps -Alfw|grep 12857
    mir den Prozess ansehe
    kommt

    Code
    0 S pi       12857 12856  1  80   0 -  2169 wait   09:14 pts/0    00:00:01 -bash
    0 R pi       12871 12857  0  80   0 -  1707 -      09:16 pts/0    00:00:00 ps -A                                           lfw
    0 S pi       12872 12857  0  80   0 -  1480 pipe_w 09:16 pts/0    00:00:00 grep                                            --color=auto 12857


    und bei den nächsten PID's kommt

    also gar nichts... er bringt zwar fünf Meldungen mit Prozessen, es ist aber tatsächlich nur noch einer vorhanden

    Hoffe ich habe es jetzt nicht wieder falsch gemacht, sorry

    Viele Grüße
    Jürgen

    Einmal editiert, zuletzt von selfmade (22. Mai 2014 um 09:21)

  • Hmm, ich galube eigentlich nicht, dass die bash das macht. Soviel
    ich weiss, ist die in C geschrieben, aber die Fehlermeldung kommt
    von einer C++ - Library.

    Da muss ein ganzer Schawrm Prozesse laufen, die wie wild Speicher
    allozieren, und die bash und ihre Subprozesse kommen ihnen in die
    Quere.

    Anderer Ansatz:

    Ich hab gerade keinen PI zur Hand, aber da funktioniert ja fast alles
    was auf Linux laeuft. Wenn die Anleitung nicht klappt, ist das weil
    ich auf einem PC-Linux getestet habe.

    Auf der Kommandozeile top aufrufen, dann f druecken, mit dem
    Cursor %MEM selektieren und s druecken.

    Jetzt sollte die Liste der Prozesse nach deren Memory-Belegung
    sortiert sein.

    Was steht da zu oberst ?
    Sieht man wilde Bewegungen ?

    Einmal editiert, zuletzt von Tell (22. Mai 2014 um 12:52)

  • Was steht da zu oberst ?
    Sieht man wilde Bewegungen ?

    nein sieht für mich alles normal aus

    die folgende Ausgabe sehe ich und es bewegt sich nicht viel


    Gruß Jürgen

    so ein Mist...ich kann es mir gar nicht vorstellen das ich eigentlich mit einer Standardinstallation diese Probleme habe..
    nicht das es an der Hardware liegt... sd-karte etc..

    aha
    habe mich gerade auf einem zweiten terminal unter ssh eingeloggt und im ertsten Terminal top laufen lassen
    dann kommt das bei der bash (in der top Ausgabe)

    Code
    388 root      20   0 55592 9532 5116 S   0,0  2,5   1:06.39 apache2
    13018 pi        20   0  8676 4356 2348 S   0,0  1,1   0:01.33 bash
    13068 pi        20   0  8676 4352 2344 S  22,6  1,1   0:01.32 bash
    13013 root      20   0  9260 2932 2348 S   0,0  0,8   0:00.46 sshd
    13063 root      20   0  9260 2932 2348 S   0,0  0,8   0:00.47 sshd
    13032 pi        20   0  7172 2432 1844 R   4,3  0,6   0:26.26 top

    wenn ich die apache-prozesse und mysql sowie die erste ssh-session addiere und dann kommen beimn einloggen nochmals 22% des RAM-Verbrauchs dazu...
    kann es daran liegen?

    sorry quatsch.. die Spalte die ich meinte bezieht sich ja auf die CPU-Last

    Einmal editiert, zuletzt von selfmade (22. Mai 2014 um 14:49)

  • MySQL frisst 310MB virtuelles Memory und verbraucht am meisten RAM.

    Und es soll in C und C++ geschrieben sein, passt also auch. Zudem
    benutzt es ganz sicher Interprozess-Kommunikation, wo die Exceptions
    herkommen.

    Sehr verdaechtig, ich wuerde mal da ansetzen.

    Was laeuft denn ueber dieses MySQL ?
    Koennte man es durch etwas kleineres ersetzen ?


  • MySQL frisst 310MB virtuelles Memory und verbraucht am meisten RAM.

    Und es soll in C und C++ geschrieben sein, passt also auch. Zudem
    benutzt es ganz sicher Interprozess-Kommunikation, wo die Exceptions
    herkommen.

    Sehr verdaechtig, ich wuerde mal da ansetzen.

    Was laeuft denn ueber dieses MySQL ?
    Koennte man es durch etwas kleineres ersetzen ?

    mmmhh... ja das klingt mir logisch...
    mist ich schreibe gerade ein webtool in php und mysqldb dahinter.
    es gibt bestimmt eine kleiner resourcenschonende db aber dazu müsste ich den ganzen php-code umbasteln.

    vielleicht kann man die mysqldb etwas abspecken... quasi selber kompilieren und das zeuch rausschmeissen was man nicht benötigt

    Zum Zeitpunkt meines einloggens b zw. auftreten der Fehler.. läuft die db zwar jedoch nicht unter last da ich nur ab und an drauf zugreife... meist ruht sie also

    vielleicht reicht es ja aus die mysql-conf anders zu konfigurieren... mmhh

    ich habe jetzt mal eine andere my.cnf benutzt die von mysql dabei war eine sogenannte small.cnf

    der Fehler kommt zwar immer noch... ich mache aber am we mal einen restart und schau was dann passiert
    die small cnf von mysql sollte eigentlich für Speicher weniger 128MB ausgelegt sein

    Einmal editiert, zuletzt von selfmade (22. Mai 2014 um 21:57)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!