Segmentation Fault im Netzcode?



  • Ich bin grad dabei, selbst einen sehr einfachen IRC Bot zu schreiben. Ich compiliere den Code immer unter Cygwin, also ist das praktisch für ein Linuxsystem geschrieben.

    Jedenfalls will ich nun erreichen, dass das Programm auf Port 113 nach eingehenden Verbindungen lautschts (wegen Ident). Und habe dazu folgendes Tut befolgt: http://beej.us/guide/bgnet/output/html/multipage/syscalls.html

    Es geht um folgenden Code:

    sockaddr_storage their_addr;
    socklen_t addr_size;
    addrinfo hints, *res;
    int sock_listen, sock_remote;
    
    memset (&hints, 0, sizeof (hints));
    hints.ai_family = AF_INET;
    hints.ai_family = SOCK_STREAM;
    hints.ai_flags = AI_PASSIVE;
    
    getaddrinfo (NULL, "113", &hints, &res);
    
    cout << res->ai_addr << endl;
    

    Die letzte Zeile stellt dabei nur den Versuch da, auf res zuzugreifen. Beim Ausführen des Codes bekomme ich dadurch immer ein Segmentation Fault.

    Kann mir jemand weiterhelfen?



  • Keine Ahnung, ob´s daran liegt, aber du besetzt ai_family zwei Mal. Das SOCK_STREAM gehört nach ai_socktype.

    Möglicherweise ist res NULL und jeder Zugriff darauf löst UB aus. Den Rückgabewert von getaddrinfo ignorierst du ebenfalls, du weisst also garnicht, ob der Aufruf überhaupt gelingt.



  • Oh Gott, wie dämlich =.=

    Danke, das war's. Manche Fehler sind echt zu banal.


Log in to reply