# [apache] Bus error et seg fault, problème majeur

## yohann

Bonjour, j'ai un gros probléme avec apache en ce moment, et je ne sais pas comment le résoudre, ni comment trouver d'où il vient.

apache plante au bout d'environ une semaine, (CPU à 100%, et obligé de killer le processus (/etc/init.d apache2 stop ne le ferme pas completement).

j'ai regarder le error.log, et là surprise:

entre le 8/04 16h00 et le 14/04 3h

3 492 835 lignes contenant segfault ou bus error.

je vous met un extrait:

```

    282 [Thu Apr 08 16:04:06 2010] [notice] child pid 18821 exit signal Segmentation fault (11)

    283 [Thu Apr 08 16:04:07 2010] [notice] child pid 18244 exit signal Segmentation fault (11)

    284 [Thu Apr 08 16:04:12 2010] [notice] child pid 18820 exit signal Segmentation fault (11)

    285 [Thu Apr 08 16:05:14 2010] [notice] child pid 18832 exit signal Segmentation fault (11)

......

3492832 [Wed Apr 14 03:10:05 2010] [notice] child pid 31592 exit signal Bus error (7)

3492833 [Wed Apr 14 03:10:05 2010] [notice] child pid 31593 exit signal Bus error (7)

3492834 [Wed Apr 14 03:10:05 2010] [notice] child pid 31594 exit signal Bus error (7)

3492835 [Wed Apr 14 03:10:05 2010] [notice] child pid 31595 exit signal Bus error (7)

```

(oui 3 millions et demi...)

J'ai cherché un peu sur google avec les mots clé apache segmentation fault et apache bus error, 

et je tombe principalement sur des rapport de bug concernat apache et php dans des version que je n'ai pas.

eix -I php

```
[I] dev-lang/php

     Available versions:  (5) 5.2.9-r2 5.2.10 ~5.2.10-r1 ~5.2.10-r2 5.2.11 5.2.11-r1 5.2.12 5.2.13

   {adabas apache2 bcmath berkdb birdstep bzip2 calendar cdb cgi cjk cli concurrentmodphp crypt ctype curl curlwrappers db2 dbase dbmaker debug discard-path doc empress empress-bcs esoob exif fastbuild fdftk filter firebird flatfile force-cgi-redirect frontbase ftp gd gd-external gdbm gmp hash iconv imap inifile interbase iodbc ipv6 java-external json kerberos kolab ldap ldap-sasl libedit mcve mhash msql mssql mysql mysqli ncurses nls oci8 oci8-instant-client odbc pcntl pcre pdo pic posix postgres qdbm readline recode reflection sapdb session sharedext sharedmem simplexml snmp soap sockets solid spell spl sqlite ssl suhosin sybase sybase-ct sysvipc threads tidy tokenizer truetype unicode wddx xml xmlreader xmlrpc xmlwriter xpm xsl yaz zip zlib}

     Installed versions:  5.2.13(5)(08:04:17 31/03/2010)(apache2 berkdb bzip2 cli crypt ctype curl exif gd gdbm iconv ipv6 json ldap mysql ncurses nls pcre readline reflection session spell spl sqlite ssl tokenizer truetype unicode xml xpm zlib -adabas -bcmath -birdstep -calendar -cdb -cgi -cjk -concurrentmodphp -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob -fastbuild -fdftk -filter -firebird -flatfile -force-cgi-redirect -frontbase -ftp -gd-external -gmp -hash -imap -inifile -interbase -iodbc -java-external -kerberos -kolab -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysqli -oci8 -oci8-instant-client -odbc -pcntl -pdo -pic -posix -postgres -qdbm -recode -sapdb -sharedext -sharedmem -simplexml -snmp -soap -sockets -solid -suhosin -sybase -sybase-ct -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xsl -yaz -zip)

     Homepage:            http://www.php.net/

     Description:         The PHP language runtime engine: CLI, CGI and Apache2 SAPIs.

```

eix -I apache 

```
[I] www-servers/apache

     Available versions:  (2) 2.2.14-r1 2.2.15

   {apache2_modules_actions apache2_modules_alias apache2_modules_asis apache2_modules_auth_basic apache2_modules_auth_digest apache2_modules_authn_alias apache2_modules_authn_anon apache2_modules_authn_dbd apache2_modules_authn_dbm apache2_modules_authn_default apache2_modules_authn_file apache2_modules_authz_dbm apache2_modules_authz_default apache2_modules_authz_groupfile apache2_modules_authz_host apache2_modules_authz_owner apache2_modules_authz_user apache2_modules_autoindex apache2_modules_cache apache2_modules_cern_meta apache2_modules_charset_lite apache2_modules_dav apache2_modules_dav_fs apache2_modules_dav_lock apache2_modules_dbd apache2_modules_deflate apache2_modules_dir apache2_modules_disk_cache apache2_modules_dumpio apache2_modules_env apache2_modules_expires apache2_modules_ext_filter apache2_modules_file_cache apache2_modules_filter apache2_modules_headers apache2_modules_ident apache2_modules_imagemap apache2_modules_include apache2_modules_info apache2_modules_log_config apache2_modules_log_forensic apache2_modules_logio apache2_modules_mem_cache apache2_modules_mime apache2_modules_mime_magic apache2_modules_negotiation apache2_modules_proxy apache2_modules_proxy_ajp apache2_modules_proxy_balancer apache2_modules_proxy_connect apache2_modules_proxy_ftp apache2_modules_proxy_http apache2_modules_rewrite apache2_modules_setenvif apache2_modules_speling apache2_modules_status apache2_modules_substitute apache2_modules_unique_id apache2_modules_userdir apache2_modules_usertrack apache2_modules_version apache2_modules_vhost_alias apache2_mpms_event apache2_mpms_itk apache2_mpms_peruser apache2_mpms_prefork apache2_mpms_worker debug doc ldap selinux ssl static suexec threads}

     Installed versions:  2.2.15(2)(07:43:26 30/03/2010)(apache2_modules_actions apache2_modules_alias apache2_modules_auth_basic apache2_modules_authn_alias apache2_modules_authn_anon apache2_modules_authn_dbm apache2_modules_authn_default apache2_modules_authn_file apache2_modules_authz_dbm apache2_modules_authz_default apache2_modules_authz_groupfile apache2_modules_authz_host apache2_modules_authz_owner apache2_modules_authz_user apache2_modules_autoindex apache2_modules_cache apache2_modules_dav apache2_modules_dav_fs apache2_modules_dav_lock apache2_modules_deflate apache2_modules_dir apache2_modules_disk_cache apache2_modules_env apache2_modules_expires apache2_modules_ext_filter apache2_modules_file_cache apache2_modules_filter apache2_modules_headers apache2_modules_include apache2_modules_info apache2_modules_log_config apache2_modules_logio apache2_modules_mem_cache apache2_modules_mime apache2_modules_mime_magic apache2_modules_negotiation apache2_modules_rewrite apache2_modules_setenvif apache2_modules_speling apache2_modules_status apache2_modules_unique_id apache2_modules_userdir apache2_modules_usertrack apache2_modules_vhost_alias ldap ssl -apache2_modules_asis -apache2_modules_auth_digest -apache2_modules_authn_dbd -apache2_modules_cern_meta -apache2_modules_charset_lite -apache2_modules_dbd -apache2_modules_dumpio -apache2_modules_ident -apache2_modules_imagemap -apache2_modules_log_forensic -apache2_modules_proxy -apache2_modules_proxy_ajp -apache2_modules_proxy_balancer -apache2_modules_proxy_connect -apache2_modules_proxy_ftp -apache2_modules_proxy_http -apache2_modules_substitute -apache2_modules_version -apache2_mpms_event -apache2_mpms_itk -apache2_mpms_peruser -apache2_mpms_prefork -apache2_mpms_worker -debug -doc -selinux -static -suexec -threads)

     Homepage:            http://httpd.apache.org/

     Description:         The Apache Web Server.

```

n'hésitez pas si vous avez besoin de plus d'info.

Merci pour votre aide

----------

## boozo

'alute

je ne sais pas si je te serai d'une grande utilité mais il me semble d'après ces erreurs bus qu'un premier test à faire est de vérifier si les barrettes de ram sont bien fixées.

Sinon un problème de MPM peut-être ? rien n'est renseigné de ton côté d'après ta conf et le use thread n'est pas actif donc t'as pas celui par defaut (prefork non ? ou worker... à vérifier dans la doc je ne sais plus trop)

nb. Dans b.g.o on trouve des choses similaires cependant (cf. [1] i.e.) mais c'est vrai que ces logs ne sont pas très explicites pour trouver la cause exacte du premier coup   :Sad: 

Edit: ah ! ben tient en quittant le b.g.o je viens juste de voir celui-ci.

Semble indiquer que prefork pourrait corriger le pb apparemment vu que lui était en worker au départ

----------

## yohann

Merci beaucoup de te pencher sur mon problème boozo.

je suis désolé, je n'ai pas vraiment compris la totalité de ton post.

 *Quote:*   

> 
> 
> je ne sais pas si je te serai d'une grande utilité mais il me semble d'après ces erreurs bus qu'un premier test à faire est de vérifier si les barrettes de ram sont bien fixées. 

 

Bon ça m'étonnerai que ça vienne de là dans la mesure ou apache à l'air d'être le seul à être touché, et que je n'ai pas de problème avec autre chose (sauf, qd le probleme d'apache devient trop important) mais ça coute pas grand chose à faire, donc je verifirai ce soir.

 *Quote:*   

> Sinon un problème de MPM peut-être ? rien n'est renseigné de ton côté d'après ta conf et le use thread n'est pas actif donc t'as pas celui par defaut (prefork non ? ou worker... à vérifier dans la doc je ne sais plus trop)

 

je ne sais pas ce qu'est un MPM, mais si j'ai bien compris tu me conseille de reemmerge apache avec use threads ?

dois-je aussi le faire pour php (je pense que ce sera inutile , car si j'ai bien compris le threding de php ne fonctionne qu'en mode cli) ?

 *Quote:*   

> 
> 
> nb. Dans b.g.o on trouve des choses similaires cependant (cf. [1] i.e.) mais c'est vrai que ces logs ne sont pas très explicites pour trouver la cause exacte du premier coup 
> 
> 

 

j'avais vu ces page dans ma recherche goggle mais j'avais pas réellement compris ce qu'il convenait de faire

(utilser aussi le use apache2_mpms_prefork ?)

Encore merci.

edit: comme je n'ai pas un accès physique sur la machine avant ce soir, j'ai tenté de reemmerge apache avec threads et apache2_mpms_prefork.

il se trouve que prefork n'est pas un mpms threadé, je le remplace donc par worker on verra ce que ça donne.

PS: je me demande ce qui déclenchai ça car depuis mercredi soir, (reboot du serveur) il n'y a pas un segfault dans les logs.

----------

## boozo

D'après la donc en effet le use thread active l'usage du mpm-worker et pour en selectionner d'autres il faut définir la $APACHE2_MPMS="<name>" dans le make.conf ; donc en toute logique par défaut sans rien on doit être en prefork.

Pour la cause réelle je ne sais pas que te dire surtout si un reboot physique du serveur semble remettre tout d'aplomb (un modules qui déconne, une faille/attaque,...).

M'enfin si çà tourne depuis tant mieux   :Smile: 

Reste à surveiller davantage pendant quelques temps, voir si c'est un cas isolé ou si çà se reproduit à intervalles réguliers.

----------

## yohann

merci encore pour ton aide, 

J'ai du mal m'exprimer, en fait le probleme durait depuis quelque temps en boucle:

apache blinde les log de segfault.

apache prend 100% du proc.

reboot du serveur par ssh.

3 ou 4 jours tranquille

apache blinde les log de segfault.

le truc étonnant si j'ai bien compris ton explication, c'est que par défaut,n'ayant sélectionné aucun MPM, j'aurais du me retrouvé avec prefork, or il n'avait pas l'air installé (cf eix -I apache dans mon premier post).

suite à ton explication j'ai mis le use threads sur apache et php et choisie le MPM worker, j'ai regardé les logs ce matin et aucune trace de segfault ou de bus error, je vais continuer à surveiller, mais ça à l'air d'avoir résolu le probleme.

si c'est le cas, je pense recompilé apache et php sans thread et utiliser préfork, pour voir si cela résoud également le probleme.

et enfin revenir  à ma confuguration de base et vérifier que je n'avais bien aucun MPM d'utiliser ce qui pouvait peut-etre posé le probleme et provoqué tout ces segfault. (et si c'est le cas, je pense qu'il faut que l'ebuild apache force le choix d'un MPM, car cela semble necessaire au fonctionnement de apache).

encore merci, j'espère que j'ai bien compris ce que tu m'expliquais car la notion de MPM etait completement nouvelle pour moi avant que je jette un oeil sur wikipedia

----------

