Announcement

Collapse
No announcement yet.

Segmentation fault in Threads

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Segmentation fault in Threads

    Hi,

    zunächst das grundlegende zum Einordnen des Fehlers: ich nutze den Gnu C++ Compiler unter KDevelop auf openSUSE-Basis. Nicht wirklich meine gewohnte Entwicklungsumgebung, aber sie ist vom Projekt vorgegeben, also versuche ich mich zu arrangieren... Ich poste meine Frage auf dieser Ebene, da die Unterforen für spezifische C++ Varianten nur Borland C++ und Visual C++ umfassen, wenn diese Frage wo anders hin gehört, sagt Bescheid...

    Ich habe da ein kleines Problem beim Zugriff auf Variablen (in diesem Fall einer std::map) zwischen Threads.

    Objekt Z aus Thread A enthält eine map, die Konfigurationsdaten speichert. Da Der Thread A in einer while-Schleife auf Anfragen reagieren muss, wollte ich länger dauernde Operationen in kleinere Threads auslagern, daher wird z.B. bei Kopieraktionen über das Netzwerk aus der Schleife heraus ein Thread erzeugt (mithilfe einer Klasse, die von Thread abgeleitet ist, das selbst wiederum eine der java-Thread angelehnte Klasse zu sein scheint, die den eigentlichen Aufruf um pthread_create kapselt) und Objekt Z als Referenz an das Thread-Objekt übergeben.

    Beim Ausführen des Threads wird nun Z->RunRemoteCommand(...) aufgerufen, das seinerseits IsRemote() aufruft, das wiederum über config.count("remote") nachsehen möchte, ob ein Eintrag in der Konfiguration vorhanden ist. Und genau bei diesem Zugriff erhalte ich einen Segmentation Fault.

    Segmentation Faults hab ich nur in Erinnerung als "neben den Array greifen" oder "in geschützten Speicher schreiben", anscheinend wird aber auch der Zugriff über Thread-Grenzen verweigert (seltsamerweise kann ich aber die direkten Objekt-Attribute von Z auslesen).

    Kann mir jemand mit etwas mehr Ahnung zu C++-Threads weiterhelfen?

    Gruß
    Martin
Working...
X