Programm crashd aus unerklärlichen Gründen



  • Hallo Leute,
    Ich hatte Probleme an einer Stelle von meinem Programm, dann hab ich versucht zu debuggen aber seitdem crashed er immer an dieser Stelle:

    findfile.c:

    int __cdecl _findclose(intptr_t hFile)
    {
        if (!FindClose((HANDLE)hFile)) { // <------- crash 
            errno = EINVAL;
            return (-1);
        }
        return (0);
    }
    

    Edit:
    Warum auch immer crashed es heute an dieser Stelle:

    findf64.c

    __time64_t __cdecl __time64_t_from_ft(FILETIME * pft)
    {
            SYSTEMTIME st;
            FILETIME lft;
    
            /* 0 FILETIME returns a -1 time_t */
    
            if (!pft->dwLowDateTime && !pft->dwHighDateTime) {
                return ((__time64_t)-1);
            }
    
            /*
             * Convert to a broken down local time value
             */
            if ( !FileTimeToLocalFileTime(pft, &lft) ||
                 !FileTimeToSystemTime(&lft, &st) )
            {
                return ((__time64_t)-1);
            }
    
            return ( __loctotime64_t(st.wYear,
                                     st.wMonth,
                                     st.wDay,
                                     st.wHour,
                                     st.wMinute,
                                     st.wSecond,
                                     0) ); // <------ Crash
    }
    

    Wisst ihr was da los ist ?



  • Vermutlich hast Du ein Fehler in Deinem Programm.



  • Ich hab nichts an meinem Programm gemacht dass dies auslösen könnte.
    Nicht bewusst zumindest.
    Wie gesagt hab ich nur debugged und schon war es da.
    Außerdem sind das SystemFiles, an denen hab ich nichts gemacht.

    Edit:
    Er crashed anscheinend immer an einer anderen Stelle..



  • Der Fehler wird irgendwo in deinem Code stecken. Vermute du schreibst irgendwo über ein Stringende.
    Gut wäre es wenn du Crash oder Felhlermeldung mit angibst.



  • Es gibt keine Fehlermeldung.
    "Programm has stopped working"

    Edit:
    Ich konnte jetzt ein bisschen Filtern und sehe dass der Fehler auftritt wenn externe ressourcen(dateien) geladen werden.
    Deswegen denke ich dass das Problem irgendwo in der dateistruktur liegt.
    Undzwar sagt die Stelle wo es abstürzt etwas über Zeit.
    ich habe das programm in vs2003 angefangen zu schreiben, habe es vor paar monaten geupdated und musste manche sachen umschreiben da die struktur anders war.
    time_t war früher zum beispiel 4byte groß, nund nichtmehr.
    Deswegen habe ich stattdessen einen integer verwendet um die zeit, als die resource datei erstellt wurde einzulesen:

    time_t time_;
    memcpy( &time_, &pHeader[ nHeaderPosition ], sizeof( int ) ); nHeaderPosition += sizeof( int );

    früher stand da eben statt sizeof( int ) sizeof (time_t).

    Hier müsste irgendwo der Fehler liegen, aber ich verstehe immernoch nicht wie er entstanden ist.
    Ich habe nichts dran gemacht.

    Kann es sein dass ich irgendwo etwas eingestellt hab sodass er auf 64bit compiled ?
    Da ist ein int zb ja 8byte groß.


  • Mod

    Du überschreibst vermutlich irgendwo Speicher und so lange Du mit so wilden Sachen wie memcpy rummachst ist es auch wahrscheilich, dass Du dort vermutlich einen Fehlermachst.

    Ich sehe zum Beispiel keinen Grund mit memcpy und sizeof time_t zu arbeiten. Entweder ist das time_t odernicht. Dann kannst Du auch eine normale Adresseierung über den Typ wählen. time_t ist in einem 64bit Programm grundsätzlich 64bit Wert.


Log in to reply