Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - lefreut

Pages: [1]
1
J'ai essayer de mettre des mutex.lock et unlock dans cette fonction mais ça ne résoud pas le problème.

Tu as un problème d'accès sur une zone mémoire invalide (à priori accès en dehors des bornes d'un tableau). Cela n'a rien à voir avec du multithreading, rajouter des mutex ne va rien changer.

Bon j'ai rajouté ça pour être sur que j ne sois pas plus petit que 0 non plus mais ça ne résous pas le crash, maintenant ça crash tout le temps que ça soit avec le débugueur ou pas. :o

while (j < children.size() && children[j]->isTraveled())
            j++;
        j--;
        j = (j < 0) ? 0 : j;
 

Si j est un unsigned int, il ne sera jamais négatif (0 - 1 en unsigned int va donner UINT_MAX). Utilise un int.

Au passage si children contient aucun élément, même avec j = 0 ce code est incorrect:
int distMin = children[j]->getCenter().computeDist(finalPos);

2
PS : j'ai le même soucis avec les thread du c++11 donc le bug ne vient pas de la SFML mais de je ne sais pas trop ou, une librairie de plus bas niveau sans doute.

Plutôt que de rejeter la faute sur la SFML puis sur la bibliothèque standard C++, ça ne te parait pas plus plausible que le bug soit dans ton code  ;)

Faire du multithreading est très complexe, à moins de vraiment en avoir besoin et de savoir ce que tu fais, je te conseille de t'en passer.

Au passage, les variables globales et les fonctions statiques (dont ton exemple est rempli) ne font pas bon ménage avec les threads.

Pages: [1]
anything