IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Erreur X server (XIO)


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Erreur X server (XIO)
    Bonjour à tous,

    Je développe actuellement un jeu en C et j'utilise pour l'interface graphique et la gestion d'évènements la librairie SDL.

    Malheureusement, le jeu plante de manière aléatoire, après un temps de jeu variable, avec un message obscur que je n'arrive pas à déchiffrer:

    XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 2096 requests (2096 known processed) with 0 events remaining.
    Quelqu'un pourrait-il m'aider? Je sais que ma description du problème est vague, mais je dois avouer que je ne comprends pas du tout d'où ce bug peut bien venir.

    Merci d'avance,

    sibork

    PS: si vous voulez tester vous-même, rendez-vous sur cette page et téléchargez la dernière version (0.9-beta). Il vous faut la librairie SDL, ainsi que SDL-image, SDL-mixer et SDL-ttf. Il faut un peu jouer (2-3 minutes) pour faire apparaitre le bug.
    PPS: j'ai déjà fait quelques recherches sur Google, sans résultat...

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 393
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 393
    Points : 20 496
    Points
    20 496
    Par défaut
    Apparemment tu est sous Linux ( ce serait bien de le préciser) le message indique que c'est un problème IO soit tu sollicites trop le clavier soit il y a un problème dans l'affichage vidéo

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Oui je suis sous linux (désolé d'avoir oublié de le préciser). Debian sid pour être plus précis.

    Mon jeu est un tetris. Je dois taper entre 2 et 5 touches par seconde (environ...), j'imagine que ce n'est pas trop pour un ordinateur...

    Deuxièmement, je me suis rendu compte que toutes les versions de mon jeu (la première datant de plus d'un an) provoquent le même bug. Il s'agirait donc d'un bug qui serait apparu avec les mises à jour de SDL? (il n'apparaissait pas il y a un an sur la première version de mon jeu et maintenant oui)

    Quelqu'un aurait-il une idée du problème? D'où pourrait-il bien venir? Trop de choses affichées trop vite (je rafraichis une surface de 12 x 21 carrés à chaque pression d'une touche, ça ne me semble pas énorme)?

    Merci d'avance

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2006
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Je rencontre actuellement le même problème dans un contexte très similaire la seule différence est que je ne développe pas un tetris mais un bejewels (jeu ou on échange des gemmes pour créer des combinaisons de 3). Je n'ai pas d'entrée clavier car la sélection se fait à la souris mais j'en ai tout de même moins que d'appui touche dans un tetris. Pourtant j'ai la même erreur au bout d'un temps aléatoire de jeu qui varie d'une dizaine de seconde à plusieurs minutes. En fait si je laisse tourné le programme sans jouer il ne semble pas planter le problème viendrait donc bien d'un trop grand nombre d'entrée/sorties.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
          after 218 requests (218 known processed) with 0 events remaining.

    Si quelqu'un peut m'éclairer sur une solution je lui en serait reconnaissant. Merci.

    PS: je sais que ce topic commence a dater inutile de poster uniquement pour hurler au déterrage de topic
    Le fait est qu'il correspond exactement à mon problème donc inutile d'en créer un nouveau.

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je voterai pour une corruption de mémoire. Prend un bon debugger et cherche, ca sera compliqué mais ca doit être de ton côté.

    Jc

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Je rencontre le même problème avec un simple démineur sous GNU/Linux ubuntu 10.10.

    Je viens de lire ceci : http://forums.libsdl.org/viewtopic.p...5fb4493b6e7c92, mais je n'utilise absloument pas de threads dans mon code, donc je me demande d'où cela peut-il bien venir ?

    Mon code ne semble pas buggé, la seule chose que j'utilise en plus qu'a l'habitude sont les timers SDL...

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 633
    Points
    219 633
    Billets dans le blog
    125
    Par défaut
    Si quelqu'un a un code simple (assez court) qui reproduit le probleme, ce serai gentil de le poster ...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    J'ai minimisé le code au maximum. Il semble que le problème soit du à l'appel à la fonction SDL_WM_SetCaption() depuis le callback du timer (ou non).

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #include <stdlib.h>
    #include <SDL/SDL.h>
     
     
    #define SCR_W   250
    #define SCR_H   100
     
     
    Uint32 timer_callback (Uint32 intervalle, void *param)
    {
        unsigned* elapsed = param;
        char title[256] = "";
        sprintf(title, "%.2u:%.2u:%.2u", *elapsed / 3600, (*elapsed % 3600) / 60, (*elapsed % 60));
        SDL_WM_SetCaption(title, NULL);
        (*elapsed)++;
        return intervalle;
    }
     
    int main ( int argc, char** argv )
    {
        unsigned done = 0, elapsed = 0;
        SDL_Event event;
        SDL_TimerID timer;
     
        if ( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER ) == -1 )
        {
            fprintf( stderr, "Unable to init SDL: %s\n", SDL_GetError() );
            return 1;
        }
     
        atexit( SDL_Quit );
     
        if ( SDL_SetVideoMode(SCR_W, SCR_H, 32, SDL_HWSURFACE) == NULL)
        {
            fprintf( stderr, "Error on setting VideoMode: %s\n", SDL_GetError() );
            return 1;
        }
     
        timer = SDL_AddTimer(1000, timer_callback, &elapsed);
     
        while (!done)
        {
            SDL_WaitEvent(&event);
     
            switch (event.type)
            {
            case SDL_QUIT:
                done = 1;
                break;
     
            default:
                break;
            }
        }
     
        return 0;
    }

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 633
    Points
    219 633
    Billets dans le blog
    125
    Par défaut
    Je pense que le problème est de mettre le SDL_WM_SetCaption() dans un timer.

    Pourquoi ?

    Car le timer est un autre thread et que le context de la fenêtre ne touche pas ce second thread ... du coup cela cause des bugs.
    Enfin là ... ce n'est que mon hypothèse, mais je ne serai pas trop surpris. Comme SDL ne gère qu'une fenêtre et que celle-ci est crée dans le thread principal ... elle doit être surement lié à ce thread.

    Mon test était:

    - Commenter le SDL_WM_SetCaption
    et un autre:
    - Le mettre dans la boucle d'evenement (dans le cas défault) afin de savoir si cela était juste du à un trop grand nombre d'appels

    Je suis sous GNU/Linux - Ubuntu 10.04 - 64bits ...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Oui, je suis bien d'accord, il semble que bien que ce soit effectivement dû à cela. Mais je trouve qu'il s'agit bien d'un bug de SDL, car cela devrait être possible (ou bien il faudrait mentionner explicitement).

    Au passage, je signale que le problème ne se reproduit pas sous Windows.

    Il serait intéressant de voir les autres codes qui posent problème...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 6
    Points
    6

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 633
    Points
    219 633
    Billets dans le blog
    125
    Par défaut
    NIF -> No Intention to Fix ... (ou NAB Not a Bug) ...
    De toute façon, je ne pense pas que la SDL bouge vraiment donc ... la résolution de bug

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    De toute façon, je ne pense pas que la SDL bouge vraiment donc ... la résolution de bug
    Ben non, il travaillent actuellement sur la 1.3, donc ils se bougent au moins un peu j'imagine...

Discussions similaires

  1. Erreur apache : server reached MaxClients setting
    Par Joe Le Mort dans le forum Apache
    Réponses: 1
    Dernier message: 12/07/2007, 12h03
  2. [Débutant] Erreur dans server.xml
    Par Mathieu.J dans le forum JDeveloper
    Réponses: 6
    Dernier message: 11/06/2007, 11h46
  3. Erreur: Internal Server Error !
    Par insane_80 dans le forum ASP
    Réponses: 6
    Dernier message: 30/05/2007, 12h51
  4. [VS.NET] Erreur de server - creation d'un projet impossible
    Par Pepito dans le forum Framework .NET
    Réponses: 2
    Dernier message: 08/12/2005, 13h15
  5. Erreurs SQL Server
    Par ZuZu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2003, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo