2011-08-22 2 views
1

Lors de l'exécution Trac sur un serveur où mod_wsgi est configuré en démon route, Trac lance de nombreuses erreurs de forme: « Fin prématurée des en-têtes de script ». J'ai regardé ceci, et il semble qu'il y ait un décalage des versions de la bibliothèque d'expat entre Trac et Apache. Malheureusement, je ne suis pas en mesure de reconstruire Apache, ce qui semble être la seule solution proposée pour ce problème.Trac, mod_wsgi, en-têtes de fin prématurée de script

Je me demande si d'autres solutions sont possibles. Lorsque je cours en mode intégré, ce problème disparaît. Est-il possible de configurer un hôte virtuel pour les requêtes Trac qui s'exécutent en mode intégré, alors que d'autres demandes sont traitées par un hôte configuré pour le mode démon? Nous utilisons le mode démon à cause d'un projet Django, donc nous n'avons pas besoin de redémarrer le serveur quand le code est changé. Mais je ne sais pas si la mise en place de cette façon permettra de résoudre le problème, ou si une telle configuration est même possible.

Répondre

0

L'exécution en mode intégré ne va pas résoudre le problème. Le message peut disparaître mais votre processus enfant Apache est probablement encore en train de planter, mais ce n'est peut-être pas aussi évident que le journal d'erreur principal d'Apache montrerait juste une 'erreur de segmentation' et rien d'autre.

Lorsque vous dites que vous regardé dans cela, vous avez vérifié en fait comme étant le problème expat en exécutant les essais documentés sur le site mod_wsgi?

Je demande que question expat n'est pas la seule raison pour laquelle Trac peut se bloquer. L'utilisation des wrappers Python pour subversion dans un sous-interpréteur peut également causer des problèmes. Alors, avez-vous essayé la solution de contournement documentée de paramètre:

WSGIApplicationGroup %{GLOBAL} 

Avez-vous allé aussi loin que l'analyse avec gdb où le code est à nouveau s'écraser comme il est documenté sur le wiki mod_wsgi. Pour ce qui est de savoir si Trac peut fonctionner en mode embarqué et Django en mode démon, oui, cela peut être fait, mais d'après ce que je peux voir, cela ne résout probablement pas le problème.

+0

Je n'ai pas encore exécuté les programmes de test; Je ne peux pas faire grand-chose pendant la journée, quand les gens utilisent le serveur, alors ça va attendre jusqu'à demain. J'ai confirmé que la version d'expat utilisée par Apache diffère de celle utilisée par Python, de manière significative. Je ne suis pas sur la machine en ce moment, mais Apache utilise quelque chose comme 1.5.x alors que Python utilise 2.0.x. Bizarrement, nous avons lancé Django en mode démon via mod_wsgi pendant plusieurs mois et n'avons jamais vu ce problème. Il est apparu seulement quand nous avons ajouté Trac au système. J'ai couru en mode embarqué toute la matinée sans voir d'erreurs. – SixDegrees

+0

Notez que je n'aurai presque certainement pas le temps d'explorer cela dans un débogueur. Les erreurs, comme nous l'avons déjà dit, se produisent toutes à travers Trac, et elles sont sporadiques; l'actualisation de la page efface normalement le problème. Mais simplement abandonner Trac sera probablement la solution préférée si une solution nécessite beaucoup d'heures de travail. – SixDegrees

+0

J'ai exécuté vos applications de test depuis http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary; Les deux exemples, avec et sans expat, se sont déroulés avec succès, donc, apparemment, l'expatrié n'est plus le coupable. – SixDegrees

Questions connexes