Sonntag, 26. Oktober 2008

Segmentation Fault bei leerer Cacti-Tabelle

Wie bereits getwittert habe ich gestern zum ersten Mal eine PHP-Web-Applikation (cacti, eine Tool, mit welchem per SNMP Zähler von netzwerkfähigen Geräten aufgezeichnet und ausgegeben werden können) erlebt, die Apache mit einem …

[Sat Oct 25 15:55:52 2008] [notice] child pid 13452 exit signal Segmentation fault (11)

… bei jedem Aufruf zum Absturz gebracht hat (Apache-Threads sei dank, dass nicht gleich der ganze Web-Server zum erliegen kam).

Google wusste selbstverständlich die simple Lösung auf das Problem – für einmal musste ich aber die Suchanfrage mehrere Male abändern und auch auf die zweite Seite der Suchresultate blättern:

After throwing strace at it I could see before it died all it was doing was running the SQL query „select value from settings where name=’log_verbosity'“ over and over (around 6000 times before it died).

After squirting the cacti.sql file into MySQL all was well and the install completed OK.

Quelle: Seven Of Nine – Borg – Cacti – exit signal Segmentation fault (11)

Unglaublich, aber wahr: Wenn die Applikation die gesuchte Tabelle nicht findet, gelangt sie mit der Error Logging-Funktion in eine Endlosschleife. Auch bei mir löste sich das Problem, indem ich die im Cacti-Basisverzeichnis liegende cacti.sql manuell in MySQL importierte:

$ mysql -u cacti -p cacti < ./cacti.sql

Kostenloser Tipp an die Entwickler (Pseudo-Code):

if(!table_exists($tbl)) {
 mysql_import('./cacti.sql');
 
 if(!table_exists($tbl)) {
  die('Import of cacti.sql failed. Error #' . mysql_errno() . ' - ' . mysql_error());
 }
}

Liked this post? Follow this blog to get more. 

Tags: ,
Labels: Web

Kommentar erfassen