Ciao a tutti, ho un problema con il mio server multithread. Il server accetta un numero "infinito" di connessioni mediante un ciclo, creando un thread per ogni connessione accettata.
Avviando 11 clienti che comunicano con 2 server, il protocollo di comunicazione va a buon fine. Se invece i clienti aumentano a 12, una chiamata a malloc nell'ultimo thread mi genera questo errore:
*** glibc detected *** ./bibserver: malloc(): memory corruption: 0x40404190 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x73e42)[0x400c8e42]
/lib/i386-linux-gnu/libc.so.6(+0x75905)[0x400ca905]
/lib/i386-linux-gnu/libc.so.6(__libc_malloc+0x6c)[0x400ccd3c]
./bibserver[0x804aed4]
/lib/i386-linux-gnu/libpthread.so.0(+0x6d4c)[0x40040d4c]
/lib/i386-linux-gnu/libc.so.6(clone+0x5e)[0x4013face]
La cosa che mi lascia perplesso è solo una: questo errore si verifica solo con il "dodicesimo thread", tutti gli altri vanno a buon fine! Da cosa potrebbe essere determinato?
Specifico che i thread sono dichiarati come joinable e faccio un ciclo su di essi alla ricezione di un segnale, che mi indica la terminazione del server.