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 - GuiTeK

Pages: [1]
1
Système / [Résolu] Segmentation Fault initialisation sf::Mutex
« le: Décembre 25, 2013, 09:31:30 pm »
Bonjour,

J'ai une segfault dans la liste d'initialisation du constructeur d'une classe sur un sf::Mutex.

Mon header :
#ifndef GAMEWINDOW_H
#define GAMEWINDOW_H

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

#include <memory>

class GameWindow
{
public:
    GameWindow(sf::RenderWindow &renderWindow, TcpClient &tcpClient);

    bool show();

    void setGameMap(const std::shared_ptr<const GameMap> &gameMap);


private:
    sf::RenderWindow &m_renderWindow;
    TcpClient &m_tcpClient;
    GameClient m_gameClient;

    std::shared_ptr<const GameMap> m_gameMap;
        sf::Mutex m_gameMapMutex;
};

#endif // GAMEWINDOW_H
 

Fichier source :
GameWindow::GameWindow(sf::RenderWindow &renderWindow, TcpClient &tcpClient) :
    m_renderWindow(renderWindow),
    m_tcpClient(tcpClient),
    m_gameClient(tcpClient, this),
    m_gameMap(NULL),
    m_gameMapMutex()
{
}

La segfault arrive après avoir exécuté la ligne m_gameMapMutex().
  • Il n'y a pas de segfault lorsque je remplace le sf::Mutex par un std::mutex
  • La segfault disparaît lorsque je place le sf::Mutex avant les 4 autres variables membre

Informations supplémentaires :
Je compile avec MinGW 4.8.0 rev 2, système de gestion d'exceptions DWARF-2. Option -std=c++11 activée.

Call stack :
0       __gnu_cxx::__exchange_and_add   atomicity.h     47      0x401653       
1       __gnu_cxx::__exchange_and_add_dispatch  atomicity.h     80      0x4016a3       
2       std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release   shared_ptr_base.h       141     0x43307f       
3       std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=      shared_ptr_base.h       572     0x432120       
4       std::__shared_ptr<GameMap const, (__gnu_cxx::_Lock_policy)2>::operator= shared_ptr_base.h       757     0x4305f9       
5       std::shared_ptr<GameMap const>::operator=       shared_ptr.h    93      0x42d461       
6       GameWindow::setGameMap  GameWindow.cpp  65      0x407a0a       
7       GameClient::GameClient  GameClient.cpp  17      0x401c30       
8       GameWindow::GameWindow  GameWindow.cpp  10      0x4076a7       
9       main    main.cpp        46      0x401916       
 

Qu'en pensez-vous ? C'est un bug de SFML ou bien une horreur de ma part  :P ?

Pages: [1]
anything