PHP - Segmentation fault unter Lenny

casper99

New Member
Hi Leute,

ich habe nun mal den Umstieg von Sarge auf Lenny gewagt,
und ein frisches System aufgesetzt. (kein upgrade!!)

Das System läuft in einer VM (VMware Server).
Code:
Linux mein-server 2.6.26-2-amd64 #1 SMP Thu Nov 5 02:23:12 UTC 2009 x86_64 GNU/Linux

PHP läuft als Fast-CGI Version.
Problem: Ab und zu treten Speicherzugriffsfehler auf.
Dies ist nicht reproduzierbar. Es liegt definitiv nicht an einem PHP Skript, da selbst die Konsolenausgabe von
Code:
php-cgi -v
bei einigen Aufrufen diesen Fehler bringt.

Aufruf:
Code:
server01:/tmp# php-cgi -v
PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cgi-fcgi) (built: Apr 26 2009 20:03:49)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
[COLOR="Red"][B]Speicherzugriffsfehler[/B][/COLOR]

In "/var/log/messages" findet sich immer mindestens eine dieser Meldungen:
Code:
Dec  1 23:02:04 mein-server kernel: [1004626.185376] php-cgi[27515]: segfault at 7fea7a0b7ed0 ip 7fea7a0b7ed0 sp 4114c128 error 14 in libXdmcp.so.6.0.0[7fea7b2eb000+5000]

Dec  1 23:02:11 mein-server kernel: [1004634.721628] php-cgi[27521]: segfault at 7f105b913ed0 ip 7f105b913ed0 sp 424f9128 error 14 in librt-2.7.so[7f105f4b5000+8000]

Dec  1 23:02:21 mein-server kernel: [1004645.194648] php-cgi[27546]: segfault at 7f37a0a52ed0 ip 7f37a0a52ed0 sp 42112128 error 14 in libtasn1.so.3.0.15[7f37a3bae000+f000]

Der Fehler tritt sehr unregelmäßig, aber doch häufig auf.
Das ist sehr ärgerlich, da dies ein Produktivsystem für viele Kunden ist.

Ich bitte dringend um Eure Hilfe!
 
Ich persönlich habe diesen oder ähnliche Fehler bei defektem RAM, Motherboards, defekten Software-Libs und Speicherzugriffsfehler bei PHP in Verbindung mit MySQL gesehen.

Speicherzugriffsfehler können aus den verschiedensten Gründen auftreten, z. B. wenn versucht wird, in Read-only Segmente zu schreiben.
 
Also das ist n nagelneuer Server. Allerdings läuft das wie gesagt in ner VM. Alle installierten Pakete sind Standard-Debian Pakete. Die sollten doch vernünftig kopiliert worden sein.

Aber was kann ich da tun?
 
Du kannst ja mal testen, ob es sich um den folgenden Bug handelt: http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1459265.html

Den Backtrace, den du mit dem ersten Kommentar vergleichen sollst, kannst du dir anzeigen lassen, indem du gdb installierst und "gdb /usr/bin/php core.xxxxx" ausführst und bt eingibst. xxxxx steht für die PID, die zu dem gecrashten Prozess gehört. Wie der coredump erzeugt wird, steht auf der verlinkten Seite.

Den Backtrace solltest du dann natürlich zusätzlich hier posten.
 
OK. Ich hab das mal gemacht:

Code:
server01:/tmp/test# gdb php-cgi core.4092
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(no debugging symbols found)

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /usr/lib/libz.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /usr/lib/libssl.so.0.9.8...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libssl.so.0.9.8
Reading symbols from /usr/lib/libdb-4.6.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libdb-4.6.so
Reading symbols from /lib/libbz2.so.1.0...
(no debugging symbols found)...done.
Loaded symbols for /lib/libbz2.so.1.0
Reading symbols from /usr/lib/libpcre.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpcre.so.3
Reading symbols from /lib/libresolv.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /lib/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libdl.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/libnsl.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /usr/lib/libgssapi_krb5.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgssapi_krb5.so.2
Reading symbols from /usr/lib/libkrb5.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libkrb5.so.3
Reading symbols from /usr/lib/libk5crypto.so.3...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libk5crypto.so.3
Reading symbols from /lib/libcom_err.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libcom_err.so.2
Reading symbols from /usr/lib/libxml2.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libxml2.so.2
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /usr/lib/libcrypto.so.0.9.8...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libcrypto.so.0.9.8
Reading symbols from /lib/libpthread.so.0...(no debugging symbols found)...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /usr/lib/libkrb5support.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libkrb5support.so.0
Reading symbols from /lib/libkeyutils.so.1...
(no debugging symbols found)...done.
Loaded symbols for /lib/libkeyutils.so.1
Reading symbols from /usr/lib/php5/20060613/curl.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/php5/20060613/curl.so
Reading symbols from /usr/lib/libcurl.so.4...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libcurl.so.4
Reading symbols from /usr/lib/libidn.so.11...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libidn.so.11
Reading symbols from /usr/lib/libssh2.so.1...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libssh2.so.1
Reading symbols from /usr/lib/liblber-2.4.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/liblber-2.4.so.2
Reading symbols from /usr/lib/libldap_r-2.4.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libldap_r-2.4.so.2
Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /usr/lib/libgcrypt.so.11...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgcrypt.so.11
Reading symbols from /usr/lib/libgpg-error.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgpg-error.so.0
Reading symbols from /usr/lib/libsasl2.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libsasl2.so.2
Reading symbols from /usr/lib/libgnutls.so.26...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgnutls.so.26
Reading symbols from /usr/lib/libtasn1.so.3...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libtasn1.so.3
Reading symbols from /usr/lib/php5/20060613/gd.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/php5/20060613/gd.so
Reading symbols from /usr/lib/libgd.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libgd.so.2
Reading symbols from /usr/lib/libt1.so.5...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libt1.so.5
Reading symbols from /usr/lib/libfreetype.so.6...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libfreetype.so.6
Reading symbols from /usr/lib/libX11.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /usr/lib/libXpm.so.4...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXpm.so.4
Reading symbols from /usr/lib/libpng12.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpng12.so.0
Reading symbols from /usr/lib/libjpeg.so.62...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libjpeg.so.62
Reading symbols from /usr/lib/libfontconfig.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libfontconfig.so.1
Reading symbols from /usr/lib/libxcb-xlib.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libxcb-xlib.so.0
Reading symbols from /usr/lib/libxcb.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libxcb.so.1
Reading symbols from /usr/lib/libexpat.so.1...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libexpat.so.1
Reading symbols from /usr/lib/libXau.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /usr/lib/php5/20060613/imap.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/php5/20060613/imap.so
Reading symbols from /usr/lib/libc-client.so.2007b...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libc-client.so.2007b
Reading symbols from /lib/libpam.so.0...(no debugging symbols found)...done.
Loaded symbols for /lib/libpam.so.0
Reading symbols from /lib/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libnss_files.so.2
(no debugging symbols found)
Core was generated by `php-cgi -v'.
Program terminated with signal 11, Segmentation fault.
[New process 4093]
[New process 4092]
#0  0x00007f42853c6ed0 in ?? ()

Nach eingabe von "bt"
Code:
(gdb) bt
#0  0x00007f42853c6ed0 in ?? ()
#1  0x00007f428a284fc7 in start_thread () from /lib/libpthread.so.0
#2  0x00007f428a9045ad in clone () from /lib/libc.so.6
#3  0x0000000000000000 in ?? ()
(gdb)

Hilft Dir das?
 
Bei meinem System tritt der besagte Bug auf. Bisher ging ich davon aus, dass der Backtrace immer der gleiche ist, also eben der aus dem ersten Kommentar der verlinkten Seite. Gerade habe ich aber festgestellt, dass der von dir gepostetete Backtrace bei meinem System auch ein mal vorkam. Demnach müsstest du den anderen Backtrace ebenfalls sehen, falls du es noch ein paar mal probierst. Also am besten versuchst du es noch zwei bis drei weitere Male und schreibst uns, ob sich der Backtrace geändert hat.
 
Hi,

der Backtrace hat sich nicht geändert!
Allerdings finden sich in /var/log/messages bei unterschiedlichen Aufrufen auch unterschiedliche Dateiangaben.

In folgendem, steht jede Zeile für einen anderen Aufruf:
Code:
Dec  2 12:43:48 server01 kernel: [1056912.894949] php-cgi[4093]: segfault at 7f42853c6ed0 ip 7f42853c6ed0 sp 41942128 error 14 in libpam.so.0.81.12[7f4285ebc000+b000]


Dec  2 15:22:55 server01 kernel: [1066998.060833] php-cgi[6259]: segfault at 7f9fad86eed0 ip 7f9fad86eed0 sp 40ebb128 error 14 in libtasn1.so.3.0.15[7f9fb09ca000+f000]


Dec  2 15:25:09 server01 kernel: [1067155.593214] php-cgi[6286]: segfault at 7f786cb47ed0 ip 7f786cb47ed0 sp 41517128 error 14 in librt-2.7.so[7f78706e9000+8000]


Dec  2 15:27:27 server01 kernel: [1067313.049949] php-cgi[6350]: segfault at 7f76a4c84edb ip 7f769fdf91af sp 41245c90 error 4 in libgcc_s.so.1[7f769fde9000+16000]
 
Bisher sieht es so aus, als ob der Bug bei mir durch ein Update behoben werden konnte. Das Update bekommt man aber nur, wenn man die proposed-updates installiert. Dazu musst du "deb http://ftp.de.debian.org/debian lenny-proposed-updates main" der sources.list hinzufügen und dann ein apt-get update && apt-get dist-upgrade machen.

Bisher sieht es zwar so aus, als ob dein Problem nicht durch diesen Bug verursacht wird, aber es schadet sicher nichts, dass dadurch vollends auszuschließen. Es kann ja genauso gut sein, dass der Bug sich bei dir wegen VMware nur anders äußert.
 
Ich werde sonst mal probieren, PHP aus den aktuellsten sourcen selbst zu kompilieren. Mal schauen ob es was hilft.

Da es ein Produktivsystem ist, scheue ich etwas den von Dir vorgeschlagenen Weg zu gehen. Aber wenn es letztendlich nicht anders geht, muss es wohl sein.

Danke für Deinen Einsatz
 
Back
Top