Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Segmentation fault avec Code::blocks  (Lu 12045 fois)

0 Membres et 1 Invité sur ce sujet

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #15 le: Août 16, 2012, 05:13:32 pm »
Je compile bien en mode débug
j'ai oublier de l'annoncé   ;D
j'ai revérifier donc pas d'erreur  8)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Segmentation fault avec Code::blocks
« Réponse #16 le: Août 16, 2012, 06:27:08 pm »
Tu as des paramètres pour le mode Debug, des paramètres pour le mode Release (jusque là tout va bien), mais aussi des paramètres pour les deux, qui du coup s'ajoutent à ce que tu as déjà défini pour chaque mode. Il faut virer ces paramètres communs.
Laurent Gomila - SFML developer

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #17 le: Août 16, 2012, 07:05:43 pm »
J'ai pas trop bien compris ce qu'il fallait faire je dois enlever les paramètre comme cela :



J'ai enlever ici :

-lsfml-graphics
-lsfml-window
-lsfml-system

ainsi que SFML_DYNAMIC

mais sans resultat :'(

Merci

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Segmentation fault avec Code::blocks
« Réponse #18 le: Août 16, 2012, 07:18:16 pm »
Je dirais que c'est ça oui. Par contre je m'attendrais à voir un "Debug" et un "Release" sous "TowerDefence" dans la colonne de gauche. Bref, je ne suis pas un utilisateur de Code::Blocks donc je m'arrête là dans les supositions :)

Après ces changements, toujours pas de pile d'appels en Debug ?

Vérifie aussi que tu n'as pas mélangé les deux versions de SFML, que tu n'as pas des vieux trucs qui traînent, etc. Et ce serait bien de voir la toute dernière version de ton code.

Sinon, rien à voir mais :
- pense à utiliser rect.contains et window.convertCoords (je te laisse le soin de trouver où et comment)
- tu devrais dessiner en dehors de ta boucle d'évènements
Laurent Gomila - SFML developer

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #19 le: Août 16, 2012, 08:08:02 pm »
Re,
J'ai fait ce que tu m'as dit mais sans grand résultat mais j'ai decouvert que c'est la partie texte qui fait planter mon programme, en faite j'ai supprimer tout ce qui est en rapport avec mon texte et mon programme fonctionne mais lorsque que j'ouvre seulement le texte de cette maniere :

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

using namespace sf;

 int const LONGUEUR(1008);
 int const LARGEUR(567);

int main(int argc,char** argv)
{
     /**
     * page de titre
    */


      RenderWindow app(VideoMode(LONGUEUR,LARGEUR),"Tower Defence : Ecran Titre", Style::None);
        Font font;

if(!font.loadFromFile("Decibel_2.ttf"))
    {
        return EXIT_FAILURE;
    }

    Text text("Lancer le jeu !",font);
    text.setCharacterSize(36);
   text.setPosition(672,472);

    FloatRect rect = text.getGlobalBounds();
    float  largeurTexte = rect.width;
    float  hauteurTexte = rect.height;

    while(app.isOpen())
   {
       Event event;

       while(app.pollEvent(event))
       {
           if((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
           {
               if ((event.mouseButton.x >= LONGUEUR/1.5) && (event.mouseButton.x <= (LONGUEUR/1.5 + 1000)))
                {
                    if ((event.mouseButton.y >= LARGEUR/1.2) && (event.mouseButton.y <= (LARGEUR/1.2 + largeurTexte)))
                    {
                        app.close();

                    }
                }
           }

            if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
            {
                 app.close();
            }

        }
       app.draw(text);
       app.display();
   }

    return EXIT_SUCCESS;
}
 

alors le programme plante au moment de app.close();

est-ce que j'ai loupé quelque chose avec sf::Text ainsi que sf::Font ?

Merci

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #20 le: Août 16, 2012, 08:26:52 pm »
J'ai remarquer aussi que lorsque je remplace app.close(); par autre chose comme un message sur console alors le programme ne plante pas comme cela :
#include <SFML/Graphics.hpp>
#include <iostream>

using namespace sf;

 int const LONGUEUR(1008);
 int const LARGEUR(567);

int main(int argc,char** argv)
{
     /**
     * page de titre
    */


      RenderWindow app(VideoMode(LONGUEUR,LARGEUR),"Tower Defence : Ecran Titre", Style::None);
        Font font;

if(!font.loadFromFile("Decibel_2.ttf"))
    {
        return EXIT_FAILURE;
    }

    Text text("Lancer le jeu !",font);
    text.setCharacterSize(36);
   text.setPosition(672,472);

    FloatRect rect = text.getGlobalBounds();
    float  largeurTexte = rect.width;
    float  hauteurTexte = rect.height;

    while(app.isOpen())
   {
       Event event;

       while(app.pollEvent(event))
       {
           if((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
           {
               if ((event.mouseButton.x >= LONGUEUR/1.5) && (event.mouseButton.x <= (LONGUEUR/1.5 + hauteurTexte)))
                {
                    if ((event.mouseButton.y >= LARGEUR/1.2) && (event.mouseButton.y <= (LARGEUR/1.2 + largeurTexte)))
                    {
                        std::cout << "message" << std::endl;

                    }
                }
           }

            if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
            {
                 app.close();
            }

        }
       app.draw(text);
       app.display();
   }

    return EXIT_SUCCESS;
}
 

et même étrangement il fonctionne très bien
alors est-ce un problème avec app.close(); et l'affichage d'un texte ?

de plus bizarrement ce programme fonctionne aussi parfaitement :
        /**
         *
         * @author Majurian
         */


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

using namespace sf;

 int const LONGUEUR(1008);
 int const LARGEUR(567);

int main(int argc,char** argv)
{
     /**
     * page de titre
    */

    RenderWindow app(VideoMode(LONGUEUR,LARGEUR),"Tower Defence : Ecran Titre", Style::None);

    /**
    * ouverture de la page de titre ainsi que de la police
    *
    */


    Texture imageTitre;
    Font font;


    // test ouverture de la page de titre et de la police

    if(!imageTitre.loadFromFile("titre.png"))
        return EXIT_FAILURE;

     Sprite titre(imageTitre);

    if(!font.loadFromFile("Decibel_2.ttf"))
    {
        return EXIT_FAILURE;
    }


    // parametre du text et de l'arrier plan
    Text text("Lancer le jeu !",font);
    text.setCharacterSize(36);
    text.setPosition(LONGUEUR/1.5,LARGEUR/1.2);
    titre.setPosition(0,0);


    // taille du texte

    FloatRect rect = text.getGlobalBounds();
    float  largeurTexte = rect.width;
    float  hauteurTexte = rect.height;

   /**
    * boucle principal de l'écran de Titre
    */


   while(app.isOpen())
   {
       Event event;

       while(app.pollEvent(event))
       {
           if((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
           {
               if ((event.mouseButton.x >= LONGUEUR/1.5) && (event.mouseButton.x <= (LONGUEUR/1.5 + largeurTexte)))
                {
                    if ((event.mouseButton.y >= LARGEUR/1.2) && (event.mouseButton.y <= (LARGEUR/1.2 + hauteurTexte)))
                    {
                       std::cout << "run" << std::endl;

                    }
                }
           }

            if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
            {
                std::cout << "fermer" << std::endl;

            }

       app.draw(titre);
       app.draw(text);
       app.display();
       }

    }
    return EXIT_SUCCESS;
}
 


j'ai enlever app.close(); et modifier par un texte afficher...

Merci

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Segmentation fault avec Code::blocks
« Réponse #21 le: Août 16, 2012, 08:39:22 pm »
Ca n'a rien de bizarre, le bug survient lorsque ton application se termine (rien à voir avec app.close(), ça plante après). Donc quand tu affiches quelque chose au lieu de fermer la fenêtre, ton programme ne quitte plus, donc plus de bug.

Bon, mes souvenirs doivent être un peu embrouillés (il y a eu plusieurs variantes de ce bug sur plusieurs versions de SFML). Peut-être qu'il faut aussi lier SFML statiquement pour que ça ne crash plus.

Sinon, choppe les dernières sources de SFML et recompile la.
Laurent Gomila - SFML developer

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #22 le: Août 16, 2012, 09:29:01 pm »
Re,

Oui tu a raison en faite lorsque on sort de la boucle principale alors le programme plante  :'(
J'ai télécharger la dernière version de SFML 2.0, je n'ais pas encore compiler SFML 2.0 je vais le faire et je te dit si cela fonctionne  ;)

j'ai essayer de lier SFML statiquement mais pas de changement...

Merci

maju93160

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #23 le: Août 17, 2012, 02:43:15 pm »
Re bonjours,
Pardon pour le retard de ma réponse.
J'ai compiler les derniere sources comme tu me l'as dit et surprise :
J'ai réussi à faire fonctionner le programme  :D
mais il y a encore un problème, il plante lorsque j'utilise le debugger  :o mais lorsque je compile en mode normale  il ne plante pas  ???
Est-ce que je dois négliger le problème ?

Merci  en tous cas ;D
 

Inglebard

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #24 le: Août 30, 2012, 01:43:45 pm »
Bonjour,
je tiens à signaler un problème similaire sous Codelite. Le SIGSEGV se lance au moment du "return 0".

voici le code utilisé :
#include <SFML/Window.hpp>

int main()
{
    sf::Window window(sf::VideoMode(800, 600), "My window");

    // run the program as long as the window is open
    while (window.isOpen())
    {
        // check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }
    }

    return 0;
       
}



voici la pile d'appel :
0  0x76e6a334  lstrlenA    
1  0x28af45f6  ??    
2  0x00000100  ??    
3  0x3508060f  ??    
4  0x74f679df  wvsprintfW    
5  0x0028f8d8  ??    
6  0x74f67a36  wvsprintfW    
7  0x3508060f  ??    
8  0x286981d0  ??    
9  0x0028fd64  ??    
10  0x1000d676  HydraDMH!HookMessages    
11  0x000104cc  ??    
12  0x00000000  ??    
 

Logiciels et OS :

Windows 7 x64
Codelite 4.1.5770
GDB 7.4
MinGW,gcc,g++ 4.7

En espérant que ceci puisse vous aidez à identifier le problème.

Cordialement.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Segmentation fault avec Code::blocks
« Réponse #25 le: Août 30, 2012, 01:45:55 pm »
Ca n'a rien à voir, puisque le problème précédent est lié à sf::Text.

As-tu recompilé SFML ?
Laurent Gomila - SFML developer

Inglebard

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #26 le: Août 30, 2012, 02:42:53 pm »
Je croyais que ça venait de app.close(), je n'avais pas vu le lien avec sf::Text, autant pour moi.

Citer
Re bonjours,
Pardon pour le retard de ma réponse.
J'ai compiler les derniere sources comme tu me l'as dit et surprise :
J'ai réussi à faire fonctionner le programme  :D
mais il y a encore un problème, il plante lorsque j'utilise le debugger :o mais lorsque je compile en mode normale  il ne plante pas  ???
Est-ce que je dois négliger le problème ?

Merci  en tous cas ;D

Cependant, un problème semble toujours exister au niveau du debug.

Citer
As-tu recompilé SFML ?
Oui, avec les sources du GIT.

Je tiens également à préciser que j'utilise Codelite de la même façon que ce soit sous windows 7 ou Ubuntu 12.04 mais que le problème survient uniquement sous windaube.

Cordialement.

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Re : Segmentation fault avec Code::blocks
« Réponse #27 le: Août 31, 2012, 02:36:35 am »
Bon, ça n'a peut-être plus trop rapport, mais je tiens à préciser qu'on doit effectivement avoir un dossier Debug et Release sous « TowerDefence ».

J'ignore pourquoi ces dossiers n'apparaissent pas chez lui. Selon moi, ça doit être lié à son projet en tant que tel ou une mauvaise installation/corruption des fichiers SFML.

ps. Je travaille en permanence avec Code::Blocks