Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » problematisches try-catch

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.10.2006, 19:34 Uhr
~Exceptioner
Gast


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...


C++:
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2006, 22:16 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Zeig mal was du in dem try/catch-block wirklich tust, evtl ist da der Hund begraben
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2006, 23:12 Uhr
~Exceptioner
Gast


Hallo FloSoft,

also eigentlich schreib ich ne Thread-Klasse und der übergibst du ein Runnable -
wie in Java - , aber da der Code halt wesentlich komplexer ist, hab ich ihn auf C-Code reduziert.
Und das ist halt das äußere try-catch, damit in einem Thread "nichts" passieren kann, wenn eine Exception nicht gefangen wird.
In dem try-catch-Block brauch ich gar nichts machen.
Das Programm stürzt bei genau dem Code von oben zum Zeitpunkt wo die Exception fliegt ab.

Gruß,
Exceptioner
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.10.2006, 10:39 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi, evtl ist deine Threadlibrary nicht threadsafe und er haut in nen anderen catch-block rein? schon mal geprüft WO er "einschlägt"?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.10.2006, 14:42 Uhr
(un)wissender
Niveauwart


_endthread wird implizit aufgerufen. Das darfst du nicht selber machen, soweit ich weiß.


Bearbeitung:

Ich habe mal eine funktionierende Thread Klasse geschrieben, wenn du sie braucht, dann kannst du sie haben.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 23.10.2006 um 14:44 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.10.2006, 22:35 Uhr
~Exceptioner
Gast


Ich Depp...

Ich hatte noch eine nicht threadsichere dll mitgelinkt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: