Uncaught Exception



  • Hallo zusammen,

    ich habe das Problem, dass mein Programm mit einem Segmentation
    fault abstürzt. Ich habe mit -mthreads compiliert und gelinkt (MinGW).
    Sobald ich das per Kommentar kenntlich gemachte try catch lösche,
    funktioniert es einwandfrei. Das try catch ist in diesem Fall
    unnötig, allerdings nur weil ich das Problem auf das Nötigste
    reduziert habe...

    void thread2(void* t){
        try{ // Kritesches try - catch
            for(int i=0; i<1000; i++){
                printf("%i\n", i);
                ::Sleep(1000);
            }
        }
        catch(...){
        }
        _endthread();
    }
    
    void thread1(void* t){
            _beginthread(thread2, 0, NULL);
            ::Sleep(10000);
            try{
                throw 0;
            }
            catch(...){
                printf("Exception");
            }
    	_endthread();
    }
    
    int main(int argc, char *argv[]){
        _beginthread(thread1,0, NULL);
        ::Sleep(60000);
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Kann irgendeiner von euch nen Fehler finden?
    Also ich such schon die ewig und find nix...

    Danke,
    Exceptioner



  • (nur mal ein paar Gedanken zu dem Programm:)

    Das Hauptprogramm wartet 60 Sekunden (+x), bevor es sich beendet, der Thread benötigt insgesamt 1000 Sekunden. Und da main() am Ende der Ausführung seine Ressoucren aufräumt, dürften nach einer Weile die Ausgaben des Threads ins Leere laufen.

    PS: Es gibt bessere Möglichkeiten als "system("PAUSE");", das Konsolenfenster aktiv zu halten 😉



  • Hallo CStoll!

    Dass die Ausgaben später ins leere laufen ist mir klar...
    Aber auch wenn der Thread nur 8 Sekunden läuft(i<8),
    krieg ich ein Segmentation fault.
    immer zu dem Zeitpunkt, wo die Exception fliegt.

    Der gdb sagt mir jetzt allerdings zusätzlich:
    at bits/stl_algobase.h : 150
    min(const _Tp& __a, const _Tp& __b)

    Aber ich hab immernoch keinen Plan 😞

    für i>10 erhalte ich diese Info nicht.

    Gruß.
    Exceptioner



  • *push*


Anmelden zum Antworten