Martin Oehler wrote:
Wann? Ich schreibe grade einen kleinen Raytracer, der auf einem Rechner gleicher Hardware +/- RAM fehlerfrei läuft. Das ganze unter C++. Wer sowas noch nicht gemacht hat: mehr oder weniger sind das zwei for-schleifen, in denen Berechnungen ausgeführt werden. Das ganze läuft 400x300 mal, also 120000 Ausführungen der inneren Schleife.
Ahhh, da schlaegt mein Geophysiker-Herz hoeher.... :-) RayTracer brauchen wir hier auch ziemlich oft, wenn auch vielleicht nicht genau die gleichen wie Du sie einsetzt.
Jetzt zum Problem: nach ca 300x3 Ausführungen wird es bei mir dunkel, umschalten auf Konsole geht nicht mehr (anpingen kann man ihn vielleicht noch, habe hier aber nur einen Rechner stehen). [...] Der Fehler tritt auch nicht immer an der gleichen Stelle des Programms auf, sondern nach einer gewissen Anzahl von Schleifendurchläufen, den Speicher habe ich inzwischen auch statisch zugeteilt, STL wird auch nicht mehr benutzt. Ach ja, zu Tode swappen kann man auch ausschließen, der swap bleibt schön leer.
Du arbeitest nicht zufaellig mit Pointern oder aehnlichem? Damit kann man boese Dinge anstellen.... Du allokierst nicht zufaellig zu viel Speicher irgendwo? Dir laeuft nicht zufaellig eine Schleifenvariable aus dem Ruder? Mit C++ kann man auch ganz nett auf Feldelemente zugreifen, die gar nicht wirklich existieren (Fortran faengt so etwas IIRC ab, bei C++ ist dafuer der Programmierer selbst verantwort- lich). Wir entwickeln hier ein Migrationsprogramm in C++, da gab es auch zu Beginn merkwuerdige Abstuerze.... Hast Du das Programm schon mal "debuggt"? Auf Linux ist da ddd sehr zu empfehlen, ein Frontend fuer gdb. Prinzipiell koennte es schon etwas mit der Kernel-Version zu tun haben, evtl. bist Du da auf einen Bug gestossen..... Gruesse, Th. -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)