Bug #61415 [Opn->Fbk]: zend_alter_ini_entry failuers
| From: | cmb@php.net | Date: | Thu, 20 May 2021 15:24:53 +0000 |
| Subject: | Bug #61415 [Opn->Fbk]: zend_alter_ini_entry failuers | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-233920@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=61415&edit=1
ID: 61415
Updated by: cmb@php.net
Reported by: info at simonecaruso dot com
Summary: zend_alter_ini_entry failuers
-Status: Open
+Status: Feedback
Type: Bug
Package: Safe Mode/open_basedir
Operating System: Linux
PHP Version: 5.3.10
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Is this still an issue with any of the actively supported PHP
versions[1]?
[1] <https://www.php.net/supported-versions.php>
Previous Comments:
------------------------------------------------------------------------
[2012-03-19 11:18:56] info at simonecaruso dot com
I really would like debug php and find what's wrong.
For now i moved from PHP_INI_STAGE_RUNTIME to PHP_INI_STAGE_ACTIVATE and the
problem disappeared.
But now i get this in logs when apache stops:
[]/Zend/zend_ini.c(278) : Freeing 0x7F63E5BB4908 (72 bytes), script=/home/www-
data/mesogeamag.it/html/index.php
[]/Zend/zend_ini.c(279) : Freeing 0x7F63E5BB49A8 (64 bytes), script=/home/www-
data/mesogeamag.it/html/index.php
[]/Zend/zend_alloc.c(2454) : Actual location (location was relayed)
[]/Zend/zend_hash.c(250) : Freeing 0x7F63E5BB4A40 (84 bytes), script=/home/www-
data/mesogeamag.it/html/index.php
[]/Zend/zend_ini.c(289) : Freeing 0x7F63E5BB4AE8 (64 bytes), script=/home/www-
data/mesogeamag.it/html/index.php
Thank you for help
------------------------------------------------------------------------
[2012-03-17 18:43:13] cataphract@php.net
The fact it worked in 5.2 doesn't imply your code had no bug. It may mean that a bug has always
existed, but by luck it wasn't triggered by 5.2. Of course, if you could identify the specific
commit that triggers the problem, it could shed light on this problem. If you can automate the
tests, you can easily run something a bisection procedure to find such commit.
------------------------------------------------------------------------
[2012-03-16 23:27:31] info at simonecaruso dot com
I don't think it's a my module problem because with 5.2 i dont have this problem
(i did the sames tests for 5.3, same apache, same config), i moved to 5.3 from less
than one month. I don't think it's a concurrency related issue too, the failure are
too much rare i think.
I did a diff between 5.2 and 5.3 and saw there are major changes to
fopen_wrapper.c, and i have this problem only for open_basedir, that's why i opened
the bug.
I'll try with other stages in the hope this can help.
------------------------------------------------------------------------
[2012-03-16 21:41:22] cataphract@php.net
I assume you're using the prefork SAPI, as the stack trace shows you're not using ZTS. In
that case, I find strange your claim this is a concurrency issue. More likely, the problem would be
in your module and I don't know anything about Apache modules lifecycle to even guess where the
problem could be.
You could try passing another value for stage as the ini update handler for open_basedir can never
fail for stages PHP_INI_STAGE_STARTUP, PHP_INI_STAGE_SHUTDOWN,
PHP_INI_STAGE_ACTIVATE,PHP_INI_STAGE_DEACTIVATE, but this would most likely just mask the underlying
problem. You can also try running Apache under valgrind with --trace-children and see if you get
something.
------------------------------------------------------------------------
[2012-03-16 18:07:23] info at simonecaruso dot com
It breaks always at zend_ini.c:300
The data i pass is always correct, but sometimes i get a FAILURE.
Breakpoint 3, zend_alter_ini_entry_ex (name=0x7f2de6128199 "open_basedir",
name_length=13,
new_value=0x7f2debd02e48 "/tmp/:/usr/share/php/:.:/home/www-
data/musitalia.com/html/", new_value_length=58, modify_type=4,
stage=16,
force_change=0)
at /root/php-5.3.10/Zend/zend_ini.c:300
300 return FAILURE;
(gdb) bt full
#0 zend_alter_ini_entry_ex (name=0x7f2de6128199 "open_basedir", name_length=13,
new_value=0x7f2debd02e48 "/tmp/:/usr/share/php/:.:/home/www-
data/musitalia.com/html/", new_value_length=58, modify_type=4,
stage=16,
force_change=0)
at /root/php-5.3.10/Zend/zend_ini.c:300
ini_entry = 0x7f2debb35d30
duplicate = 0x7f2debaf3140 'Z' <repeats 59 times>, "N\230D\300ZQ\twe-
\177"
modifiable = 7 '\a'
modified = 1 '\001'
#1 0x00007f2de77f00d0 in zend_alter_ini_entry (name=0x7f2de6128199
"open_basedir", name_length=13,
new_value=0x7f2debd02e48 "/tmp/:/usr/share/php/:.:/home/www-
data/musitalia.com/html/", new_value_length=58, modify_type=4,
stage=16)
at /root/php-5.3.10/Zend/zend_ini.c:249
No locals.
#2 0x00007f2de6126c1d in mod_vhost_ldap_translate_name (r=0x7f2debd01570) at
mod_vhost_ldap_ng.c:862
reqc = 0x7f2deb4b0510
conf = 0x7f2deba31038
core = 0x7f2deb9695e8
ld = 0x0
realfile = 0x0
alias = 0x0
i = 0
ret = 0
str = {0x0, 0x0, 0x0}
ldapmsg = 0x0
vhostentry = 0x0
openbasedir = 0x7f2debd02e48 "/tmp/:/usr/share/php/:.:/home/www-
data/musitalia.com/html/"
include = 0x7f2debd02e08 "/tmp/:/usr/share/php/:.:/home/www-
data/musitalia.com/html/"
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=61415
--
Edit this bug report at https://bugs.php.net/bug.php?id=61415&edit=1