Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
C++ Programm: mit -O3 ohne Probs. ohne Segfault

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter
Gast





BeitragVerfasst am: 10. Jun 2001 17:26   Titel: C++ Programm: mit -O3 ohne Probs. ohne Segfault

Hallo,

ich habe ein C++ Programm, dass bei unterschiedlichen Optimierungsstufen beim kompilieren unterschiedliche ausgaben liefert !
es besteht aus 2 Quelltextdateien, kompiliere ich mit:
g++ mki.cpp board.cpp
so erhalte ich nach ./a.out einen Segmentationfault.
kompiliere ich dagegen mit:
g++ -O3 mki.cpp board.cpp
so läuft a.out korrekt durch.

Ich habe dieses Verhalten auf zwei Rechnern getestet.
Rechner 1:
g++ -v
gcc version 2.95.3 20010315 (SuSE)

Rechner 2:
g++ -v
gcc version 2.95.2 19991024 (release)

Ist dies ein Bug im gcc ?? Sollte ich das irgendwo melden (wo?) ?
 

das



Anmeldungsdatum: 22.01.2001
Beiträge: 78
Wohnort: 42369 Wuppertal

BeitragVerfasst am: 10. Jun 2001 18:56   Titel: Re: C++ Programm: mit -O3 ohne Probs. ohne Segfaul

Hmmm, normalerweise ist es eher umgekehrt, also daß Programme ohne Optimierungen problemlos laufen, aber mit Optimierungen u.U. Schwierigkeiten machen. Ich glaube aber kaum, daß gcc ohne Optimierungen einen Kompilier-Fehler macht, der mit -O3 nicht auftritt - wahrscheinlich liegt der Fehler eher in deinem eigenen Code.

Hast du mal versucht das Programm im Debugger auszuführen, um rauszufinden wo das Segfault auftritt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Peter
Gast





BeitragVerfasst am: 10. Jun 2001 21:28   Titel: C++ Programm: mit -O3 ohne Probs. ohne Segfaul

Nein,
ich habe das noch nicht mit ddd angeschaut, ich habe einfach immer die O3 Optimierung genommen, da es damit funktioniert. Also glaubst du das es in Ordnung ist, dass Unterschiedliche Ausgaben zustande kommen ? Kein Bug ?
 

das



Anmeldungsdatum: 22.01.2001
Beiträge: 78
Wohnort: 42369 Wuppertal

BeitragVerfasst am: 10. Jun 2001 22:07   Titel: Re: C++ Programm: mit -O3 ohne Probs. ohne Segfaul

Ein Bug ist es sicher. Es ist weder normal noch in Ordnung wenn du mit -O3 andere Ergebnisse hast als ohne.

Die Frage ist nur, ob gcc den Fehler verursacht oder dein eigener Code. Ich würde mal auf deinen Code tippen...
Es wäre denkbar daß gcc den Code deines Programms unterschiedlich im Speicher anordnet, je nachdem ob du mit oder ohne Optimierungen kompilierst. Das könnte dann dazu führen daß Fehler wie beispielsweise Überschreitungen von Array-Grenzen das Programm nur manchmal zum Absturz bringen - eben je nachdem ob du Optimierungen verwendest oder nicht.
Versuch also einfach mal mit Hilfe eines Debuggers rauszukriegen wo das Programm abstürzt...

Ein Bug in gcc ist natürlich auch nicht ausgeschlossen, halte ich aber für extrem unwahrscheinlich.


Dominic
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Peter
Gast





BeitragVerfasst am: 11. Jun 2001 5:32   Titel: C++ Programm: mit -O3 ohne Probs. ohne Segfault

Ich habe den Fehler gefunden, war sehr simpel, ich habe einfach einen Array verkleinert, aber vergessen die Schleife, die den Array "nullt" anzupassen. Mit O3 hat er wohl erkannt, dass ich die sowieso nicht zulässigen Zuweisungen im Programm nicht brauche. Also wurde die Schleife automatisch angepasst
 

das



Anmeldungsdatum: 22.01.2001
Beiträge: 78
Wohnort: 42369 Wuppertal

BeitragVerfasst am: 11. Jun 2001 8:06   Titel: Re: C++ Programm: mit -O3 ohne Probs. ohne Segfaul

Ich glaube nicht, daß gcc die Schleife automatisch angepasst hat, so schlau ist der auch wieder nicht...
Ich denke eher, daß sich einfach zufällig mit -O3 nichts wichtiges hinter der Array im Speicher befand, so daß die Zuweisungen keinen Schaden angerichten haben. Ohne -O3 waren dann die Daten anders angeordnet, die Schleife hat irgendwas überschrieben was nicht überschrieben werden durfte, und bang, segfault...


Dominic
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Wolfgang
Gast





BeitragVerfasst am: 11. Jun 2001 9:33   Titel: Re: C++ Programm: mit -O3 ohne Probs

Hi!

Schau einfach mal den ausgegebenen Assembler-Code an (Option -S von gcc). Darin kann man sehen, ob er das wirklich wegoptimiert.

Cheers,
Wolfgang
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy