Borland meckert: Project raised exception class EPrivilege



  • Hallo zusammen,
    ich hab ein großes Problem mit dem Borland Builder. Bitte helft mir, denn ich bin echt am verzweifeln. Das Kompilieren meines Projektes läuft ohne weiteres, auch ausführen lässt es sich. Wenn ich dann allerdings auf einen Button zum erstellen einer Socketverbindung klicke kommt folgende Fehlermeldung:

    "Project xyz.exe raised exception class EPrivilege with message 'Privileged instruction'. Process stopped. Use Step or Run to continue."

    Das Programm friert dann ein. Es öffnet sich ausserdem eine neue Datei namens Forms.hpp und hat dort die Zeile 930 markiert. Manchmal öffnet sich auch die Datei dialogs.hpp
    Hab auch schon auf einigen anderen Seiten nachgesehn, wo Leute das selbe Problem hatten, konnte allerdings noch keine Lösung finden, habe nur herausgefunden, dass das vermutlich ein Fehler mit Borland ist. Wenn ich den Teil mit den Sockets rauslösche, funktionierts in der Regel dann trotzdem nicht, obs funktioniert oder nicht ist völlig willkürlich. Ich änder ein paar Zeilen und nix geht mehr, ich mach die Schritte rückgängig und es funktioniert genauso wenig. Ich schreibs wieder hin, plötzlich gehts wieder, also ein Programmierfehler ist es wohl nicht 🙂

    Bitte helft mir, freue mich über jeden Tipp. Bei den vielen Bugs vom Borland Builder denkt man manchmal, dass es da nie eine Debug-Phase gegeben hat 😞

    Vielen Dank
    Jack



  • Ich glaube, dass Problem hat doch etwas mit den Sockets zu tun, ich habe durch trial and error herausfinden können, dass der Fehler nur auftritt, wenn ich die Funktion startWinsock() aufrufe. Diese befindet sich in meiner Header-Datei startup.h Eingebunden ist sie korrekt und aufrufen kann ich die Funktion ja auch. Die startup.h inkludiert einen Haufen Bibliotheken und hat die Funktion startWinsock(). Die lautet nur folgendermaßen:

    int startWinsock()
    {
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&wsa);
    }

    mir ist aufgefallen, dass es den fehler teilweise nicht mehr gibt, wenn ich irgendwas in der startup.h veränderen. Zum Beispiel MAKEWORD(1,1) mache anstatt (2,0). Wenn ich diese Änderungen rückgänig mache, tritt der Fehler trotzdem vorerst nicht auf bis er irgendwann nach irgendeiner kleinen Änderung im Hauptprogramm wieder plötzlich zuschlägt. 😕

    Einfügen tue ich übrigens folgende Bibliotheken, falls die eine Rolle spielen könnten...
    #include <errno.h>
    #include <iostream>
    #include <iomanip>
    #include <time.h>
    #include <string>
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <vcl.h>
    #include <winsock.h>



  • Hast du schon mal den Rückgabewert von WSAStartup (d.h. startWinSock) überprüft?

    Bei Erfolg sollte ja 0 zurückgegeben werden, ansonsten einer der folgenden Fehler (laut MSDN):
    WSASYSNOTREADY Indicates that the underlying network subsystem is not ready for network communication.
    WSAVERNOTSUPPORTED The version of Windows Sockets support requested is not provided by this particular Windows Sockets implementation.
    WSAEINPROGRESS A blocking Windows Sockets 1.1 operation is in progress.
    WSAEPROCLIM Limit on the number of tasks supported by the Windows Sockets implementation has been reached.
    WSAEFAULT The lpWSAData is not a valid pointer.


Log in to reply