Package: libapache2-mod
Version: 5.2.4-2+b1
Severity: important
When I migrated to Apache 2.2.6-3 + PHP 5.2.4-2+b1 (mpm-prefork) from testing
at about January 29, I started experiencing Apache Segmentation faults very
frequently.
Using strace I narrowed down the problem's cause which was .htaccess file
containing:
php_value error_log somelogfile.log
This (relative path) was working on this very same server before the update, by
that time the server was running PHP 5.2.3-1+lenny1.
I suspect this is related to the Suhosin patch, though this is just a feeling.
It seems that the updated PHP and the usage of the (previously working)
relative path+safe mode+not www-data uid generally only creates a
PHP Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid
is 5163 is not allowed to access / owned by uid 0 in Unknown on line 0
in the log file [note root /], however, under heavy stress, UID mixups occur,
and eventually some of this ends up in segfaulting the apache child - [which
then might
stuck in the memory and taking up heavy CPU resources].
Please note that UID (bold/red) gets screwed up too, under heavy stress [5163
is the legal user id for that virtual host and 5152 is a totally different
and unrelated one].
[Fri Feb 01 23:10:28 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0
[Fri Feb 01 23:10:29 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0, [Fri Feb 01 23:10:29 2008]
[error] [client 91.83.33.155] PHP Warning: Unknown: SAFE MODE Restriction in
effect. The script whose uid is 5163 is not allowed to access / owned by uid 0
in Unknown on line 0,
[Fri Feb 01 23:10:29 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0,
[Fri Feb 01 23:10:30 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5152 is not allowed
to access / owned by uid 0 in Unknown on line 0,
[Fri Feb 01 23:10:30 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0,
[Fri Feb 01 23:10:30 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0,
[Fri Feb 01 23:10:30 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5152 is not allowed
to access / owned by uid 0 in Unknown on line 0,
[Fri Feb 01 23:11:39 2008] [error] [client 91.83.33.155] PHP Warning: Unknown:
SAFE MODE Restriction in effect. The script whose uid is 5163 is not allowed
to access / owned by uid 0 in Unknown on line 0,
Since this is a production server with heavy load, I didn't have too much
resource to do thorough testing, but I was able to get some strace when
segfault occurred:
[Wed Jan 30 11:38:23 2008] [notice] child pid 13940 exit signal Segmentation
fault (11)
Strace excerpt from pid 13940:
accept(3, {sa_family=AF_INET, sin_port=htons(30925),
sin_addr=inet_addr(212.72.104.203)}, [16]) = 980
semop(1703943, 0xb7cd1cfa, 1) = 0
gettimeofday({1201689547, 25972}, NULL) = 0
fcntl64(980, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(980, F_SETFL, O_RDWR|O_NONBLOCK) = 0
gettimeofday({1201689547, 28806}, NULL) = 0
read(980, GET
/components/com_virtuemart/show_image_in_imgtag.php?filename=e5017277e9d2f8df84e0c89fffe67834.jpgnewxsize=100newys...,
8000) = 603
gettimeofday({1201689547, 172482}, NULL) = 0
gettimeofday({1201689547, 174219}, NULL)
= 0
gettimeofday({1201689547, 176043}, NULL)
= 0
stat64(/var/www/somedomain.hu/components/com_virtuemart/show_image_in_imgtag.php,
{st_mode=S_IFREG|0640, st_size=3477, ...}) = 0
lstat64(/var, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64(/var/www, {st_mode=S_IFDIR|0755, st_size=20480, ...})
= 0
open(/var/www/.htaccess, O_RDONLY|O_LARGEFILE)
= -1 ENOENT (No such file or directory)
open(/var/www/somedomain.hu/.htaccess, O_RDONLY|O_LARGEFILE)
= 981
fstat64(981, {st_mode=S_IFREG|0640, st_size=5014, ...})
= 0
read(981, #agocsp\nphp_value register_globals OFF\n\nphp_flag display_errors
on\n\nphp_value log_errors 1\nphp_value