Open dbaelde opened 10 years ago
En relisant le diff du commit mentionné plus haut, je crains que tu n'exploites pas assez systématiquement ton mutex. En particulier les push ne sont pas en section critique.
Effectivement, je viens de corriger le lock()/unlock() qui manquait côté serveur. J'espère que ça résoudra le problème. Je vais essayer de voir si j'arrive à reproduire le bug encore... Sinon vu que pour le moment ça fonctionne en local, il ne devrait pas y avoir trop de messages perdus. Chez moi on arrive pas trop mal à controler le joueur (du moment qu'on ne frôle pas trop les murs)
Bonjour @mheinric. La modif 9255e89c est bien vue, mais ne corrige pas les segfault que j'observe. J'espérais aussi avoir moins de problème de synchro client/server (messages perdus) mais le joueur reste assez incontrolable. Je me concentre ici sur la segfault: receive_messages continue de se retrouver avec des string& à des adresses étranges.
J'ai annoté mon code avec un test quand une string est pushée, je vérifie que son adresse n'est pas inférieure à 0x7ffff0000000. Aucun problème ici. Ensuite dans receive_message, quand l'adresse est inférieure à 0xfff je ne fais rien, je log juste l'adresse (je m'arrête à la valeur assez basse 0xfff pour avoir ensuite une segfault au lieu d'un log énorme). On voit ainsi NULL, puis une suite bizarrement croissante d'adresses invalides:
Ceci se produit en général en moins de 30s de jeu, en bougeant le joueur un peu n'importe comment. Est-ce que tu arrives à reproduire?