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

  FORUM HardWare.fr
  Programmation
  C++

  "erreur de segmentation" avec les threads sous linux en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"erreur de segmentation" avec les threads sous linux en C++

n°1267766
TheShot
Posté le 15-12-2005 à 17:29:21  profilanswer
 

Salut !
J'utilise pthread.h pour gérer les threads sous linux mais mon programme crash sur la fonction pthread_create et linux me dis "erreur de segmentation"

Code :
  1. pthread_create ( &threadId[_threadCounter], NULL, my_thread_process, (void*) "0" )


 
my_thread_process est ma méthode statique qui contient le code du thread. Auriez vous une idée d'où pourrait provenir l'erreur ? ou au pire une autre lib qui permette de gérer les threads sous linux ?

mood
Publicité
Posté le 15-12-2005 à 17:29:21  profilanswer
 

n°1267834
bjone
Insert booze to continue
Posté le 15-12-2005 à 18:12:47  profilanswer
 

et sans le "0" ?
a quoi il sert ton "0" pas bo ?

n°1267901
Joel F
Real men use unique_ptr
Posté le 15-12-2005 à 19:13:37  profilanswer
 

boost::thread :o

n°1268145
TheShot
Posté le 16-12-2005 à 09:53:15  profilanswer
 

bjone a écrit :

et sans le "0" ?
a quoi il sert ton "0" pas bo ?


 
c'est ce qui est passé en paramètre my_thread_process(void* arg) dans l'exemple que j'ai vu il font la même chose avec "1" ou "2", je sais pas quoi mettre a la place...

n°1268146
TheShot
Posté le 16-12-2005 à 09:53:37  profilanswer
 

Joel F a écrit :

boost::thread :o


 
c'est une lib ?

n°1268167
Joel F
Real men use unique_ptr
Posté le 16-12-2005 à 10:13:07  profilanswer
 

oui

n°1268171
blackgodde​ss
vive le troll !
Posté le 16-12-2005 à 10:15:15  profilanswer
 

TheShot a écrit :

c'est une lib ?


 
www.boost.org


---------------
-( BlackGoddess )-
n°1268173
bjone
Insert booze to continue
Posté le 16-12-2005 à 10:18:48  profilanswer
 

TheShot a écrit :

c'est ce qui est passé en paramètre my_thread_process(void* arg) dans l'exemple que j'ai vu il font la même chose avec "1" ou "2", je sais pas quoi mettre a la place...


 
NULL ou 0 si tu t'en sers pas.
pas "0".

n°1268203
TheShot
Posté le 16-12-2005 à 10:34:35  profilanswer
 

bjone a écrit :

NULL ou 0 si tu t'en sers pas.
pas "0".


 
ça me met la même erreur  :(

n°1268215
blackgodde​ss
vive le troll !
Posté le 16-12-2005 à 10:52:51  profilanswer
 

&threadId[_threadCounter]
tu es sur de ne pas faire de dépassement de tableau ?


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 16-12-2005 à 10:52:51  profilanswer
 

n°1268226
TheShot
Posté le 16-12-2005 à 11:06:50  profilanswer
 

_threadCounter est initialisé a 0 dans le constructeur et le programme n'arrive pas au _threadCounter++.
Par contre my_thread_process est déclaré en static dans la classe et pas dans la définition, vous pensez que ça peut poser un problème ?
 

Code :
  1. while(1)
  2. {
  3.  _newSocket = accept(_mySocketServer, (struct sockaddr *)&_sockInfoClient, (socklen_t*) &_sockInfoClientSize);
  4.  cout<<"accept ok, newSocket = "<<_newSocket<<endl ;
  5.  if (_newSocket != -1)
  6.  {
  7.   if(pthread_create ( &threadId[_threadCounter], NULL, my_thread_process, NULL ) != 0)
  8.   {cout<< "erreur avec pthread_create "<<endl ;} //le quatrième paramètre est l'argument passé à  my_thread_process
  9.   _threadCounter++ ;
  10.   //we don't call CloseHandle(_semaphoreHandle) because we are in an infinite loop
  11.  }
  12. }

n°1268248
blackgodde​ss
vive le troll !
Posté le 16-12-2005 à 11:25:41  profilanswer
 

et threadId est déclaré comment ? ton problème vient aussi peut-etre du code exécuté dans le nouveau thread


---------------
-( BlackGoddess )-
n°1268253
TheShot
Posté le 16-12-2005 à 11:33:34  profilanswer
 

blackgoddess a écrit :

et threadId est déclaré comment ? ton problème vient aussi peut-etre du code exécuté dans le nouveau thread


 
j'ai fais :
pthread_t threadId[1000] ;
 
sinon j'ai mis tout le code a l'intérieur du thread en commentaire et ça fais la même chose

n°1268791
TheShot
Posté le 16-12-2005 à 23:00:04  profilanswer
 

up

n°1268846
blackgodde​ss
vive le troll !
Posté le 17-12-2005 à 03:10:53  profilanswer
 

mmh je vois pas ... peux-tu poster le minimum de code qui reproduise ton problème, et qui forme une source compilable ?


---------------
-( BlackGoddess )-
n°1269333
el muchach​o
Comfortably Numb
Posté le 18-12-2005 à 00:18:15  profilanswer
 

TheShot a écrit :

_threadCounter est initialisé a 0 dans le constructeur et le programme n'arrive pas au _threadCounter++.
Par contre my_thread_process est déclaré en static dans la classe et pas dans la définition, vous pensez que ça peut poser un problème ?
 

Code :
  1. while(1)
  2. {
  3.  _newSocket = accept(_mySocketServer, (struct sockaddr *)&_sockInfoClient, (socklen_t*) &_sockInfoClientSize);
  4.  cout<<"accept ok, newSocket = "<<_newSocket<<endl ;
  5.  if (_newSocket != -1)
  6.  {
  7.   if(pthread_create ( &threadId[_threadCounter], NULL, my_thread_process, NULL ) != 0)
  8.   {cout<< "erreur avec pthread_create "<<endl ;} //le quatrième paramètre est l'argument passé à my_thread_process
  9.   _threadCounter++ ;
  10.   //we don't call CloseHandle(_semaphoreHandle) because we are in an infinite loop
  11.  }
  12. }



C'est juste pour l'exemple, ou tu incrémentes _threadcounter même si pthread_create foire ?  :??: Si tu vas dans le if de multiples fois, tu peux faire exploser ton tableau threadId.

n°1269598
TheShot
Posté le 18-12-2005 à 20:37:04  profilanswer
 

je pense que tu as raison, je vais essayer  :)


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

  "erreur de segmentation" avec les threads sous linux en C++

 

Sujets relatifs
[socket] plantage sur les specifications du socket sous linux en C++Erreur suspecte
Création d'un cgi-bin exécutable sous linux[C et Linux]: Prog port serie
Erreur de segmentationerreur itérateur
Mysql sous linux[PHP] Formulaire qui se reremplit si erreur
problème avec les sockets pour passer de windows a linux 
Plus de sujets relatifs à : "erreur de segmentation" avec les threads sous linux en C++


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