-
C++, Apache, CGi, X11
Bonjour à tous
J’expérimente les programmes C++ comme module CGI Apache. Pas de problème en mode texte (à coup de std::cout) et pour les communications dans les 2 sens (génération HTML/JS en C++ et envoi de données au programme C++ par Get/Post/Ajax)
Maintenant, j'essaie de manipuler des images dans le programme C++. Malheureusement, ça plante (le error.log dit simplement que le programme cgi a quitté brusquement). Je pense que cela vient du fait que les fonctions que j'utilise nécessite X11 (me demander pas pourquoi...) et que le serveur apache (et donc les modules cgi) sont configuré pour tourner sans X11 (ce qui ne serait pas étonnant). Du coup, plusieurs questions :
* comment avoir plus d'informations d'erreurs que apache/error.log ? (pour vérifier que mon programme ne lance pas une erreur "impossible de lancer telle lib")
* est-il possible de lancer quand même X11 dans apache (pour tests ; la version finale devra être plus propre)
* peut on lancer des commandes OpenGL dans un module cgi apache sans X11 ?
Merci
-
Hello,
D'expérience, un CGI qui « quitte brusquement » sans message dans le log est en général caractéristique d'une segfault affectant ledit programme.
Quand Apache se plaint que le programme a quitté prématurément, c'est parce qu'il l'a fait sans envoyer les headers HTTP de rigueur et que l'on est en droit d'attendre même si le document est vide. Seulement, c'est quelque chose qui peut arriver même si le programme ne plante pas. Parallèlement, la mort du processus fils n'affecte en rien Apache, qui la traite normalement dans tous les cas.
Il me semble que les versions relativement récentes d'Apache font maintenant un usage avisé du code d'état renvoyé par wait() mais je confirme, pour avoir pas mal travaillé avec, que ça n'a pas toujours été le cas et que ça demandait parfois une bonne dose d'intuition.
-
J'ai pas précisé : j'ai un code fonctionnel (qui fait bien mes headers et qui m'affiche une belle page html). Quand j'ajoute une ligne pour initialiser la lib pour lire les images (juste donc construire un objet, je fais rien d'autre et je touche pas au code générant le html), ça plante. D'où l'idée que cela vient de l'initialisation des fonctions X11. Par contre, sans message d'erreurs (manifestement le programme doit planter directement lors de son appel) c'est difficile de faire un diagnostique
Je vais m'orienter vers du non-X11, mais cette histoire de débugage d'un CGI m'embête un peu :)