J'ai un serveur écrit en C qui génère un nouveau thread chaque fois qu'un nouveau client se connecte. Afin de tester mon serveur, j'ai écrit un script qui émule 500 clients. Le serveur gère les deux premières centaines de clients et à la fin je reçois l'erreur suivante de Valgrind:Que signifie l'erreur VgTs_WaitSys dans Valgrind?
Thread 456: status = VgTs_WaitSys
==4182== at 0x4E383EC: recv (recv.c:34)
==4182== by 0x4017F1: process_data (socket2.h:45)
==4182== by 0x40195E: thread (FBServer.c:82)
==4182== by 0x4E30A03: start_thread (pthread_create.c:300)
==4182== by 0x532DD4C: clone (clone.S:112)
Thread 457: status = VgTs_WaitSys
==4182== at 0x4E383EC: recv (recv.c:34)
==4182== by 0x4017F1: process_data (socket2.h:45)
==4182== by 0x40195E: thread (FBServer.c:82)
==4182== by 0x4E30A03: start_thread (pthread_create.c:300)
==4182== by 0x532DD4C: clone (clone.S:112)
...
Thread 499: status = VgTs_WaitSys
==4182== at 0x4E383EC: recv (recv.c:34)
==4182== by 0x4017F1: process_data (socket2.h:45)
==4182== by 0x40195E: thread (FBServer.c:82)
==4182== by 0x4E30A03: start_thread (pthread_create.c:300)
==4182== by 0x532DD4C: clone (clone.S:112)
À la ligne 82 FBServer.c, le thread appelle une fonction appelée process_data qui reçoit des données du client. La fonction process_data est indiquée ci-dessous:
void process_data(int clientSock)
{
size_t n;
char jstring[MAX_LEN + 1];
int bytes_received_so_far = 0;
int bytes_count;
char *buf = NULL;
while(bytes_count = recv(clientSock, jstring, MAX_LEN, 0))
{
if(bytes_count <= 0)
{
close(clientSock);
pthread_exit(NULL);
}
printf("Bytes received = %d\n", bytes_count);
jstring[bytes_count] = '\0';
...
...
}
}
Quelqu'un peut-il m'aider à interpréter les messages d'erreur?
Est-ce la première erreur (ou la sortie du tout) que vous donne Valgrind? – nos
Sur quelle plateforme êtes-vous? Il dépend de la plateforme si vous êtes limité par le nombre de descripteurs de fichiers ouverts. Par exemple, sur ma machine Linux, je peux avoir 1024 fichiers ouverts et 128 connexions semi-ouvertes à la fois. – zdav