Trying to figure out apache/php/glibc issue?

Hello,

I’m the system admin not the php programmer. So I’m trying to figure out why the following is happening, any advice is welcome.

apache 2.4.24, php 7.1.21 ( same issues with 7.1.20 ) on SLES 12SP3

In the apache error logs are

[Thu Aug 30 15:54:10.382970 2018] [core:notice] [pid 23584:tid 140287659091712] AH00052: child pid 23673 exit signal Segmentation fault (11)
[Thu Aug 30 15:56:40.538330 2018] [core:notice] [pid 23584:tid 140287659091712] AH00052: child pid 25857 exit signal Segmentation fault (11)

Got a gdb trace back after one of dumps, I’m trying to figure out if it is tracing an issue back to glibc or the fault is more likely in php? I haven’t used gdb much.
And no we haven’t been able to track this back to a specific page or reproduce it so far, seems fairly random. Had to start trying to get some advice somewhere and
decided to do it here…

Thread 2.11 “httpd” received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fa8587f8700 (LWP 24508)]
0x00007fa86c05b2b3 in __strchr_sse2 () from /lib64/libc.so.6
(gdb) backtrace full
#0 0x00007fa86c05b2b3 in __strchr_sse2 () from /lib64/libc.so.6
No symbol table info available.
#1 0x00007fa86c0110c8 in putenv () from /lib64/libc.so.6
No symbol table info available.
#2 0x00007fa8662d7832 in php_putenv_destructor (zv=)
at /usr/local/src/php-7.1.20/ext/standard/basic_functions.c:3435
pe = 0x7fa81fad6ce0
#3 0x00007fa8663f9c62 in zend_hash_destroy (ht=0x7fa83c06cff8)
at /usr/local/src/php-7.1.20/Zend/zend_hash.c:1246
p = 0x7fa81fac5120
end = 0x7fa81fac5200
#4 0x00007fa8662d799c in zm_deactivate_basic (type=1, module_number=33)
at /usr/local/src/php-7.1.20/ext/standard/basic_functions.c:3811
No locals.
#5 0x00007fa8663ef5fc in zend_deactivate_modules ()
at /usr/local/src/php-7.1.20/Zend/zend_API.c:2576
module =
p = 0x1b39c78
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {140361256496980, -1307032077999214733,
140361256496980, 140361074988808, 140361074987992,
140361074988640, -1306969958583832717, -1306948530893426829},
__mask_was_saved = 0, __saved_mask = {__val = {1, 1,
—Type to continue, or q to quit—
140360061812800, 1, 140361074987992, 140361252383656,
140361242412498, 352120, 140361246690724, 140361256490324,
140361246542378, 0, 0, 0, 0, 140361074988808}}}}
#6 0x00007fa866377fb2 in php_request_shutdown (dummy=dummy@entry=0x0)
at /usr/local/src/php-7.1.20/main/main.c:1876
report_memleaks = 1 ‘\001’
#7 0x00007fa86649188f in php_apache_request_dtor (r=)
at /usr/local/src/php-7.1.20/sapi/apache2handler/sapi_apache2.c:552
No locals.
#8 php_handler (r=)
at /usr/local/src/php-7.1.20/sapi/apache2handler/sapi_apache2.c:724
ctx = 0x7fa838013bf8
conf =
brigade = 0x7fa83808d448
bucket =
rv =
parent_req = 0x0
#9 0x0000000000455850 in ap_run_handler (r=r@entry=0x7fa838007a60)
at config.c:170
pHook =
n = 5
rv = -1
#10 0x0000000000455d99 in ap_invoke_handler (r=r@entry=0x7fa838007a60)
—Type to continue, or q to quit—
at config.c:444
handler =
p =
result =
old_handler = 0x0
ignore =
#11 0x000000000046aa4c in ap_internal_redirect (new_uri=,
r=) at http_request.c:791
access_status =
new = 0x7fa838007a60
#12 0x00007fa866f6225c in handler_redirect (r=0x7fa838015ab0)
at mod_rewrite.c:5256
No locals.
#13 0x0000000000455850 in ap_run_handler (r=r@entry=0x7fa838015ab0)
at config.c:170
pHook =
n = 4
rv = -1
#14 0x0000000000455d99 in ap_invoke_handler (r=r@entry=0x7fa838015ab0)
at config.c:444
handler =
p =
result =
—Type to continue, or q to quit—
old_handler = 0x7fa866f6ae14 “redirect-handler”
ignore =
#15 0x000000000046b6da in ap_process_async_request (r=0x7fa838015ab0)
at http_request.c:453
access_status = 0
#16 0x0000000000467c51 in ap_process_http_async_connection (c=0x7fa85c03d708)
at http_core.c:154
r = 0x7fa838015ab0
cs = 0x7fa85c03d6d0
#17 ap_process_http_connection (c=0x7fa85c03d708) at http_core.c:248
No locals.
#18 0x000000000045f380 in ap_run_process_connection (c=c@entry=0x7fa85c03d708)
at connection.c:42
pHook =
n = 2
rv = -1
#19 0x0000000000472dca in process_socket (thd=,
p=, sock=, cs=0x7fa85c03d660,
my_child_num=, my_thread_num=)
at event.c:1048
c = 0x7fa85c03d708
conn_id =
clogging =
—Type to continue, or q to quit—
rv =
rc = 0
#20 0x0000000000474348 in worker_thread (thd=0x1983218, dummy=)
at event.c:2122
csd = 0x7fa85c03d460
cs = 0x0
te = 0x0
ptrans = 0x7fa85c03d3d8
ti =
process_slot = 0
thread_slot = 8
rv =
is_idle = 0
#21 0x00007fa86c58b724 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#22 0x00007fa86c0c6e8d in clone () from /lib64/libc.so.6
No symbol table info available.

Thanks for any help or pointers,
Matt

Hi Matt,

Had to start trying to get some advice somewhere and decided to do it here…

judging from the stack trace and bug reports from PHP, it may be a problem using putenv, either wrongly (i. e. with an empty variable) or at all. As you seem to be running PHP in a multi-process environment, using putenv() may not be the best choice anyhow, so I’d start looking at replacing that.Which would be a job for the PHP programmer.

Regards,
J