Accéder au contenu.
Menu Sympa

fr - Re: [sympa-fr] wwsympa et Perl 5.14.2 : « segmentation fault »

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: Emmanuel Bouthenot <adresse@cachée>
  • To: adresse@cachée
  • Subject: Re: [sympa-fr] wwsympa et Perl 5.14.2 : « segmentation fault »
  • Date: Fri, 4 May 2012 01:11:48 +0200

Bonsoir,

On Thu, May 03, 2012 at 04:46:35PM +0200, Eric Duval wrote:
[...]

> Quelques pistes que je testerai si j'étais dans
> ta situation :
>
> 1/ Désactivation de FastCGI et tests
> 2/ Si 1 concluant remplacer FastCGI par FCGID et tests
> 3/ Si 1 non concluant augmenter le niveau
> de traces de FastCGI et/ou wwsympa-wrapper.cgi ou
> trouver un moyen de récupérer le coredump pour
> analyse ...
>
> Éventuellement scruter les traces de ton serveur pour voir
> si le plantage ne viendrait pas d'un dysfonctionnement ailleurs
> sur ton serveur (RAM, disques, ...)

J'ai investigué quelques heures sur le problème et c'est loin d'être
simple :

Mes tests se sont fait sur la page de 'mot de passe oublié' : /renewpasswd/

Quelques faits:

- ça ne plante pas si on invoque le script CGI en ligne de commande en
l'invoquant avec les variables d'environnement qui vont bien pour
simuler le : /renewpasswd/

- le pb se produit aussi bien avec FastCGI que FCGID

- le pb ne se produit pas avec modperl2 + apache-mpm-itk/sympa (mais c'est
pas une solution très satisfaisante sachant que apache-mpm-itk va
disparaître avec apache 2.4)

- En installant ou compilant les symboles de debug des paquets
concernés (perl, fastcgi, etc) et en attrapant le process dans gdb,
impossible d'avoir une backtrace concluante qui reste coincée dans le
OS_accept() de FastCGI

- la stack trace du plantage ressemble à:
- /usr/share/sympa/lib/mail.pm: reformat_message(),
$parser->parse_data($message) (MIME::Parser)
- /usr/share/perl5/MIME/Parser.pm parse_data(),
$io = IO::File->new(\$data, '<:');
- ...
- /usr/share/perl/5.14/PerlIO.pm
le code de ce module fait quelques lignes mais en ajoutant un 'use
strict' bien placé dans ce fichier, ça ne plante plus ...


En attendant, j'ai fait des essais divers et j'ai trouvé un
contournement *très* *très* moche mais qui à l'air de fonctionner et qui
consiste à ajouter ces lignes dans wwsympa.cgi


--8<----------------------------------------------
use Mail::Header;
use Mail::Address;

+## ugly workaround to fix crash while sending emails ##
+use MIME::Parser;
+my $weird_bugfix_parser = new MIME::Parser;
+$weird_bugfix_parser->output_to_core(1);
+$weird_bugfix_parser->parse_data("");
+####

my $crypt_openssl_x509_ok;
---------------------------------------------->8--


J'ai l'impression après toutes ces investigations que la stack de perl
est corrompue pour je ne sais quelle raison et ce hack remet un peu les
choses en place temporairement mais les internals de perl c'est vraiment
imbuvable :)

Voilà où j'en suis mais suis étonné qu'il n'y ai pas plus de personnes
qui soient touchés par ce bug qui semble lié à perl 5.14 ? David ?

Si certains d'entres vous font tourner sympa >= 6.1.7 avec perl 5.14
sans aucun crash de wwsympa de ce type, je serais très intéressé du
résultat de la commande : perl -V


Merci de vos réponses.

M.

--
Emmanuel Bouthenot
mail: kolter@{openics,debian}.org gpg: 4096R/0x929D42C3
xmpp: adresse@cachée irc: kolter@{freenode,oftc}




Archives gérées par MHonArc 2.6.19+.

Haut de le page