Shared-Memory Segment loeschen..

  • Hi,


    langsam wird es gruselig. Eben ist mir eine Lab-Version bei einem Update auf den Server gerutscht und prompt fangen leider die Probleme an. Das Update beendet mit einem "LiveConfig failed". Der Grund ist eine etwas wenig aussagekraeftige Fehlermeldung:


    Code
    Server already running? Can't create shared memory segment: File exists


    Im Handbuch habe ich dann den entscheidenen Hinweis gefunden. Das shmem-Segment soll man angeblich per


    Code
    ipcrm -s <shmid>


    loeschen koennen. Den Parameter -s gibt es zwar... fuehrt aber in meinem Fall (Debian Squeeze) nicht zum Ziel. Vielmehr ist


    Code
    ipcrm -m <shmid>


    der korrekte Parameter. Ein anschließender Start erfolgte glückerweise reibungslos.


    Gruss ksmx

  • Danke für den Hinweis, ist ein Doku-Fehler - es ist wirklich "-m" zu verwenden.


    Wir haben das Problem nach dem Neustart auf einigen Testsystemen auch schon beobachtet; letztendlich scheint es eine Timing-Sache zu sein: der "start-stop-daemon" kehrt zu schnell zurück bzw. beendet den laufenden LiveConfig-Prozess nicht wirklich; der anschließende Neustart schlägt dann natürlich fehl. Ich weiß nicht ob Sie das nun noch prüfen können, aber stand in der Spalte "nattch" (number of attached processes) wirklich "0"? Wenn LC korrekt beendet wurde (also nicht mit einem SEGFAULT abgestürzt ist) wird der Shared Memory nämlich immer freigegeben. Eventuell finden Sie auch noch Hinweise in der LiveConfig-Logdatei.


    Wir werden das Init-Script morgen noch mal entsprechend überarbeiten, um an dieser Stelle etwas "robuster" zu sein.


    Viele Grüße


    -Klaus Keppler

  • Wie der nattch-Wert zu diesem Zeitpunkt war, kann ich leider nicht mehr beschwoeren. Hier ein Logauszug:



    Mir ist noch etwas eingefallen/aufgefallen: Nachdem der Update-Prozess die neue Liveconfig-Instanz nicht ordentlich starten konnte habe ich mir die Prozessliste angesehen und den Prozess 24696 gefunden (scheinbar auch ein weiterer Thread). Diesen habe ich per kill terminiert. Vielleicht ist es ein Indiz dafuer, dass liveconfig nicht unter jedem Umstand sauber/komplett beendet.


    Gruss ksmx

  • Diesem Log-Auszug und der Beschreibung nach zu urteilen lief noch ein Child-Prozess* von LiveConfig der nicht ordentlich beendet war - das erklärt, warum der Shared Memory noch vorhanden war.
    Der Grund für den hängenden Child-Prozess wiederum war vermutlich irgendwann mal ein Fehler/Abbruch in einem der Lua-Scripte, was zu einem Deadlock in einem der Lua-Threads führte - durch eine Änderung sollte dieses nun auch nicht mehr auftreten (wenn ein Lua-Script abbricht, werden künftig alle Ressourcen automatisch wieder freigegeben)


    Falls noch mal irgendwas "Merkwürdiges" passiert geben Sie bitte Bescheid - LiveConfig soll eigentlich möglichst robust sein.


    Viele Grüße


    -Klaus Keppler


    *) LiveConfig startet drei Prozesse: einen Watchdog, einen Server-Prozess für die GUI (als User "liveconfig") und einen Client-Prozess für die Konfigurationsarbeiten. Der LiveConfig-Client (lcclient) enthält praktisch nur den Watchdog und den Client-Prozess.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!