J'ai une application qui provoque une erreur de segmentation et un core dump, plusieurs fois par jour. Après diverses recherches, le problème est ici:
CODE
<?php
echo 'Je teste les cas de core dump.<br />' . "\n";
// Lire la source
if ( $fd = _AT_fopen ('/path_to_file/html1-jl.html', 'rt') ) {
$io_content = '';
for ($i=0; !feof ($fd); $i++) {
$io_content .= rtrim(fgets($fd, 4096));
}
fclose ($fd);
}
// Enlever les commentaires
$io_content = preg_replace ('/\<\!\-\-([^-]|\-[^-]|\-\-[^>])*\-\-\>/', '', $io_content);
// Ecrire la source sans commentaires
if ( $fd3 = _AT_fopen ('/path_to_file/html2-jl.html', 'wt') ) {
fwrite ($fd3, $io_content);
fclose ($fd3);
}
echo 'Fin du test.<br />' . "\n";
?>
echo 'Je teste les cas de core dump.<br />' . "\n";
// Lire la source
if ( $fd = _AT_fopen ('/path_to_file/html1-jl.html', 'rt') ) {
$io_content = '';
for ($i=0; !feof ($fd); $i++) {
$io_content .= rtrim(fgets($fd, 4096));
}
fclose ($fd);
}
// Enlever les commentaires
$io_content = preg_replace ('/\<\!\-\-([^-]|\-[^-]|\-\-[^>])*\-\-\>/', '', $io_content);
// Ecrire la source sans commentaires
if ( $fd3 = _AT_fopen ('/path_to_file/html2-jl.html', 'wt') ) {
fwrite ($fd3, $io_content);
fclose ($fd3);
}
echo 'Fin du test.<br />' . "\n";
?>
Pour la plupart des fichiers sources, aucun problème. Par contre, pour certains fichiers sources qui contiennent plusieurs commentaires multilignes, "Fin du test." n'est jamais affiché à cause d'une erreur de segmentation. Le problème est parfaitement reproductible. Serait-ce un bug php ou voyez-vous une erreur dans mon code ? Avez-vous des suggestions pour contourner le problème ?
Jean-Luc