BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C++ Mysteriöser Segfault » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Mysteriöser Segfault
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Mysteriöser Segfault       Zum Anfang der Seite springen

Naja, es ist eigentlich in C geschrieben, aber das kann man im Auswahlmenü nicht
auswählen. Ok, zum Problem:

Ich arbeite gerade an einem kleinen Programm. Aber immer wenn ich es starte Stürzt es mit einem Speicherzugriffsfehler ab. Zur Erklärung: Das Programm liegt mit fgets eine Konfigurationsdatei Zeilenweise ein. Dann wird mit strstr überprüft um was für eine Einstellung es sich handelt (ok, ist zwar nicht sehr effizient, aber da die Datei sehr klein ist und auch kaum Optionen kennt hab ich das der Einfachheit halber so gemacht).
Dann scannt die Funktion ScanForParamPos die eingelesene Zeile nach dem ersten Zeichen nach ein oder mehreren Leerzeichen oder Tabs und findet so den Parameter. Außerdem stellt sie sicher, daß kein newline oder carriage return Zeichen am Parameter hängt indem der einfach nur 0x00 ersetzt wird.

Damit ich jetzt die Quelle des Segfaults genauer bestimmen kann habe ich mich durch das Einfügen von printf Anweisungen näher an die Stelle herangetastet. Das sind die Letzten Worte des Programms:
Zitat:

[14:49] Module loaded: seen
[14:49] Module loaded: blowfish
[14:49] Module loaded: uptime
Using Port 12345
Activating Private-Mode...
Using channel: #abcdef
Debug......
AppendItem-Funktion

[14:49] * Last context: tclhash.c/238 []
[14:49] * Please REPORT this BUG!
[14:49] * Check doc/BUG-REPORT on how to do so.
[14:49] * Wrote DEBUG
[14:49] * SEGMENT VIOLATION -- CRASHING!
Speicherzugriffsfehler

Daher weiß ich daß das Programm in der Funktion AppendItem crasht. Das Problem. Der betreffende Code Ausschnitt sieht wie folgt aus.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
static int AppendItem(char *nickname, Subscriptions *ChainStart)
{
	Subscriptions	*actualPosition;
	Subscriptions	*lastPosition;

	printf("AppendItem-Funktion\n\n");
	actualPosition = ChainStart;
	printf("Debug 1");

Es ist also nur eine simple Zuweisung. Durch nie der Crash eigentlich nicht
verursacht werden kann, es sei denn actualPosition wird dereferenziert. Da man
aber erkennen kann, daß ich das nicht mache, habe ich keine Ahnung, was Da
schiefläuft. Denn "Debug 1" wird, wie oben sichtbar, nicht ausgegeben. Die
Definition von "Subscriptions" sieht übrigens folgendermaßen aus.
code:
1:
2:
3:
4:
5:
6:
7:
8:
typedef struct
{
	void	*previousItem;
	void	*nextItem;
	char	nickname[MAX_NICKLEN];
} Subscriptions;

Wer den kompletten Sourcecode braucht kann ihn hier bekommen:
http://compuholic.homelinux.org/remote.c
08.08.2003 15:25 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Bogus Bogus ist männlich
Unbedeutend


images/avatars/avatar-1140.jpg

Dabei seit: 23.07.2003
Beiträge: 468
Herkunft: ausm Dorf

      Zum Anfang der Seite springen

ich versteh zwar nicht wirklich viel von C++, aber mal so ne frage... ist der Port 12345 nicht für das bekannte Progi Netbus???

__________________
man was hatte ich ne dämliche signatur oO
08.08.2003 15:41 Bogus ist offline E-Mail an Bogus senden Homepage von Bogus Beiträge von Bogus suchen
Champus Champus ist männlich
BlackBoarder


images/avatars/avatar-2272.png

Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe

      Zum Anfang der Seite springen

Sicher aber nur wenn NetBus auch aktiv ist smile

__________________
CorvusCorone -> Champus
08.08.2003 16:01 Champus ist offline Homepage von Champus Beiträge von Champus suchen
Bogus Bogus ist männlich
Unbedeutend


images/avatars/avatar-1140.jpg

Dabei seit: 23.07.2003
Beiträge: 468
Herkunft: ausm Dorf

      Zum Anfang der Seite springen

ja, das ist schon klar... aber trotzdem danke für die info!

__________________
man was hatte ich ne dämliche signatur oO
08.08.2003 16:09 Bogus ist offline E-Mail an Bogus senden Homepage von Bogus Beiträge von Bogus suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Das Programm mit mit NetBus überhaupt nix zu tun.
Den Port 12345 habe ich nur als Beispiel gewählt.
08.08.2003 16:29 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Bogus Bogus ist männlich
Unbedeutend


images/avatars/avatar-1140.jpg

Dabei seit: 23.07.2003
Beiträge: 468
Herkunft: ausm Dorf

      Zum Anfang der Seite springen

ahh so, na siehste, so kann man sich vertun, hab ja gesagt kenn mich mit C++ nicht besonders gut aus, so konnte ich auch nicht sehen für was es gut war... Sorry traurig

__________________
man was hatte ich ne dämliche signatur oO
08.08.2003 16:36 Bogus ist offline E-Mail an Bogus senden Homepage von Bogus Beiträge von Bogus suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Hm, also ich seh da nur die void-pointer, für was sind die
und auf was zeigen die ?
Und übergibst du einen gültigen Pointer ?

Und die remote.c kann ich nicht downloaden...

Devil

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von phlox81: 08.08.2003 19:41.

08.08.2003 19:40 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Danke erstmal.

Ich hab das Problem gerade gefunden. Auch wenn ich nicht verstehe, warum es nicht funktioniert. Offentsichtlich hat die printf Funktion des Segfault verursacht. Als ich sie auskommentiert habe lief alles einwandfrei. Gut, eigentlich Fehler lag einige Zeilen weiter unten was aber nicht erklärt warum die printf-Funktion abstürzt.
08.08.2003 22:04 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » C++ Mysteriöser Segfault

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH