Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2714 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Erreur de segmentation avec un main vide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de segmentation avec un main vide

n°1546339
matique
Posté le 21-04-2007 à 18:07:14  profilanswer
 

Bonjour,
 
Je suis actuellement en cours de developpement d'un systeme client-server securisé avec openssl en langage C.
Pour l'instant, je n'ai fais que le serveur. La compil passe nickel.
Mon probleme est que lorsque que je lance mon server, ma fenetre shell de ferme instantannément. Le mode debug fait reference a une erreur de segmentation.  
En commentant le code, je me suis rendu compte que c'est l'utilisation de fonction issues de la librairie openssl qui provoquait cette erreur.
Je connais bien cette erreur mais c'est la première fois que je la vois apparraitre sans que rien ne soit appelé car mon main ne contient qu'un "int d = getch();". D'autant plus que ce meme programme marche sur la machine d'un copin.
 
Savez vous comment regler ce probleme autrement que d'essayer de reinstaller l'OS?
 
Merci d'avance !
 
Je precise que utilise Devc++ (ou devblock), la librairie open ssl est installée sur windows et mise a jour.
 
Voici mon code:
 

Code :
  1. ///////////////////////////////////////////////////////
  2. /////////////////// common.h ///////////////////////
  3. ///////////////////////////////////////////////////////
  4. #ifndef COMMON_H
  5. #define C0MMON_H
  6. #include <openssl/ssl.h>
  7. #include <openssl/err.h>
  8. #include <winsock2.h>
  9. #include <conio.h>
  10. SOCKET  fd;
  11. SSL_CTX *SSL_ctx;  // SSL context
  12. SSL  *SSL_fd;  // SSL socket
  13. struct sockaddr_in address;
  14. int  server_len;
  15. void error(char* s);
  16. int write_message(char *msg);
  17. int read_message(char *msg);
  18. #endif
  19. ///////////////////////////////////////////////////////
  20. /////////////////// common.c ///////////////////////
  21. ///////////////////////////////////////////////////////
  22. #include "common.h"
  23. struct sockaddr_in address;
  24. void error(char* s) {
  25.     printf("%s\a\n",s);
  26.     getche();
  27.     exit(1);
  28. }
  29. int write_message(char *msg)
  30. {
  31. int i = SSL_write(SSL_fd,msg,strlen(msg));
  32. if ( i <= 0) // if SSL_write failed
  33.  error("Couldn't write" );
  34. else
  35.     return i; // if successfull returns number of bytes sent
  36. }
  37. int read_message(char *msg)
  38. {
  39. int i = SSL_read(SSL_fd,msg,strlen(msg));
  40. if ( i <= 0) // if SSL_read failed
  41.         error("Couldn't read the message" );
  42. else {
  43.     msg[i] = '\0';
  44.  return i;  // if successfull returns number of bytes received
  45. }
  46. }
  47. int main() {
  48.     char d  = getch();
  49.     return 0 ;
  50. }


mood
Publicité
Posté le 21-04-2007 à 18:07:14  profilanswer
 

n°1546343
zecrazytux
Posté le 21-04-2007 à 18:18:09  profilanswer
 

Code :
  1. int getch(void);


 
ça vient peut etre de là... j'ai des doutes quand même...
que dis gdb exactement ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1546451
matique
Posté le 21-04-2007 à 23:11:06  profilanswer
 

Non je ne pense pas, j'ai essayé avec scanf j'ai le meme probleme.
Si je supprime l'appel aux fonctions SSL_write et SSL_read par exemple (meme si elle ne sont jamais appelées dans le main), le programme fonctionne.
 
Si gdb est le debugger, ca me sort une boite de dialogue de type warning dont le message est "Une violation d'accès (erreur de segmentation) est apparue dans votre programme"


Message édité par matique le 21-04-2007 à 23:19:17
n°1546500
matique
Posté le 22-04-2007 à 07:08:19  profilanswer
 

=> Probleme résolu par la mise a jour de ssleay32.dll et ws2_32.DLL directement dans system32 et non pas dans le repertoire avec l'exe.
 
Merci a tous pour votre aide!

n°1546515
Sve@r
Posté le 22-04-2007 à 10:17:21  profilanswer
 

matique a écrit :

Merci a tous pour votre aide!


De rien  :D  
It's our job  :sol:


Message édité par Sve@r le 22-04-2007 à 10:17:43

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Erreur de segmentation avec un main vide

 

Sujets relatifs
[C - Ncurses] Hello World : Affichage désespérement vide...Erreur de syntaxe a la *** !
Webservice et erreur 401dessiner un rectangle vide sur une image
[Erreur python]underlying C/C++ object has been deleted [ Résolu ]Besoin d'un petit coup de main de 30s pour changer des couleurs
[Erreur] Creating default object from empty valueAfficher les erreur lors du lancement d'un script bash
[RESOLU][c][gcc] erreur de compilationErreur : ISNULL is not Declared sur Orale 8i
Plus de sujets relatifs à : Erreur de segmentation avec un main vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR