Hello Bernhard,
Yes, I'm running testing, but I updated the php packages before reporting the
bug to avoid posting an issue that might be already solved. The following
packages are installed from unstable:
libapache2-mod-php7.3-dbgsym/unstable-debug,now 7.3.0~rc5-2 amd64
libapache2-mod-php7.3/unstable,now 7.3.0~rc5-2 amd64
php-common/unstable,now 2:68 all
php7.3-bz2/unstable,now 7.3.0~rc5-2 amd64
php7.3-cli/unstable,now 7.3.0~rc5-2 amd64
php7.3-common/unstable,now 7.3.0~rc5-2 amd64
php7.3-curl/unstable,now 7.3.0~rc5-2 amd64
php7.3-gd/unstable,now 7.3.0~rc5-2 amd64
php7.3-gmp/unstable,now 7.3.0~rc5-2 amd64
php7.3-imap/unstable,now 7.3.0~rc5-2 amd64
php7.3-intl-dbgsym/unstable-debug,now 7.3.0~rc5-2 amd64
php7.3-json/unstable,now 7.3.0~rc5-2 amd64
php7.3-ldap/unstable,now 7.3.0~rc5-2 amd64
php7.3-mbstring/unstable,now 7.3.0~rc5-2 amd64
php7.3-mysql/unstable,now 7.3.0~rc5-2 amd64
php7.3-opcache/unstable,now 7.3.0~rc5-2 amd64
php7.3-phpdbg/unstable,now 7.3.0~rc5-2 amd64
php7.3-readline/unstable,now 7.3.0~rc5-2 amd64
php7.3-xml/unstable,now 7.3.0~rc5-2 amd64
php7.3-zip/unstable,now 7.3.0~rc5-2 amd64
The reload happening every night was configured by default, but I couldn't
figure out yet which mechanism is used to trigger it.
I can reproduce the crash at any time. When apache is running and I execute
"systemctl reload apache2.service" the segfaults occur immediately. In
contrast, after "systemctl restart apache2.service"
the server still works fine.
I now removed my self-built php7.3-intl package and installed the version from
unstable and the debug symbols again. Surprisingly, gdb was able to resolve the
function name and line now:
(gdb) c
Continuing.
[New process 3583]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Thread 2.1 "apache2" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f1c91cb3440 (LWP 3583)]
0x00007f1c9089331a in zend_parse_va_args (num_args=0, type_spec=0x7f1c8a4158df
"l",
va=0x7fffc56e8640, flags=0) at ./Zend/zend_API.c:941
941 ./Zend/zend_API.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0 0x00007f1c9089331a in zend_parse_va_args (num_args=0,
type_spec=0x7f1c8a4158df "l",
va=0x7fffc56e8640, flags=0) at ./Zend/zend_API.c:941
#1 0x00007f1c90a49cc6 in zend_parse_parameters (num_args=<optimized out>,
type_spec=type_spec@entry=0x7f1c8a4158df "l") at ./Zend/zend_API.c:1026
#2 0x00007f1c8a4116bc in _breakiter_int32_ret_int32 (
func_name=0x7f1c91cb3720 " 7ˑ\034\177", func=<optimized out>,
execute_data=0x7f1c91f22330 <__stack_user>, return_value=<optimized out>,
return_value=<optimized out>)
at ./ext/intl/breakiterator/breakiterator_methods.cpp:215
#3 0x00007f1c91e0a70e in __libc_fork () at ../sysdeps/nptl/fork.c:204
#4 0x00007f1c91c095c5 in make_child (s=0x7f1c91c9d4a0, slot=0, bucket=0) at
prefork.c:665
#5 0x00007f1c91c0a3f5 in perform_idle_server_maintenance (p=<optimized out>)
at prefork.c:824
#6 prefork_run (_pconf=<optimized out>, plog=<optimized out>, s=<optimized
out>)
at prefork.c:1019
#7 0x0000557197e4660e in ap_run_mpm (pconf=0x7f1c92011028,
plog=0x7f1c91c96028,
s=0x7f1c91c9d4a0) at mpm_common.c:94
#8 0x0000557197e3ef47 in main (argc=<optimized out>, argv=<optimized out>) at
main.c:819
The surrounding disassemble is attached. Here is the output of the other
commands:
(gdb) print *__fork_handlers
$1 = {next = 0x7f1c91eff9c8 <fork_handler_pool+104>, prepare_handler = 0x0,
parent_handler = 0x0, child_handler = 0x7f1c8a43b660, dso_handle =
0x7f1c91f1e2a0,
refcntr = 2, need_signal = 0}
(gdb) print *__fork_handlers->next
$2 = {next = 0x7f1c91eff998 <fork_handler_pool+56>, prepare_handler = 0x0,
parent_handler = 0x0, child_handler = 0x7f1c8f67b0a0, dso_handle =
0x7f1c8f780000,
refcntr = 2, need_signal = 0}
pstree -p | grep apache
|-apache2(3000)-+-apache2(3583)
| `-apache2(9938)
Kind regards,
Dino
(gdb) disassemble $pc-0x40,$pc+40
Dump of assembler code from 0x7f1c908932da to 0x7f1c90893342:
0x00007f1c908932da <zend_activate_modules+14>: sub %al,(%rax)
0x00007f1c908932dc <zend_activate_modules+16>: xor %eax,%eax
0x00007f1c908932de <zend_activate_modules+18>: callq 0x7f1c9087a200
<zend_error@plt>
0x00007f1c908932e3 <zend_activate_modules+23>: mov $0x1,%edi
0x00007f1c908932e8 <zend_activate_modules+28>: callq 0x7f1c90878780
<exit@plt>
0x00007f1c908932ed <zend_is_callable_ex+0>: mov %r8,%rcx
0x00007f1c908932f0 <zend_is_callable_ex+3>: lea 0x28b5f1(%rip),%rsi
# 0x7f1c90b1e8e8
0x00007f1c908932f7 <zend_is_callable_ex+10>: xor %edi,%edi
0x00007f1c908932f9 <zend_is_callable_ex+12>: xor %eax,%eax
0x00007f1c908932fb <zend_is_callable_ex+14>: callq 0x7f1c9087ad80
<zend_throw_error@plt>
0x00007f1c90893300 <zend_is_callable_ex+19>: xor %r9d,%r9d
0x00007f1c90893303 <zend_is_callable_ex+22>: mov -0x78(%rbp),%r11
0x00007f1c90893307 <zend_is_callable_ex+26>: jmpq 0x7f1c90a47b3e
<zend_is_callable_ex+1422>
0x00007f1c9089330c <zend_parse_va_args+0>: mov 0x380735(%rip),%rax
# 0x7f1c90c13a48
0x00007f1c90893313 <zend_parse_va_args+7>: mov 0x1e8(%rax),%rax
=> 0x00007f1c9089331a <zend_parse_va_args+14>: mov 0x18(%rax),%rsi
0x00007f1c9089331e <zend_parse_va_args+18>: mov 0x10(%rsi),%rdx
0x00007f1c90893322 <zend_parse_va_args+22>: test %rdx,%rdx
0x00007f1c90893325 <zend_parse_va_args+25>: je 0x7f1c908933e1
<zend_parse_va_args+213>
0x00007f1c9089332b <zend_parse_va_args+31>: mov 0x8(%rdx),%rcx
0x00007f1c9089332f <zend_parse_va_args+35>: lea 0x18(%rcx),%rdx
0x00007f1c90893333 <zend_parse_va_args+39>: movzbl 0x18(%rcx),%ecx
0x00007f1c90893337 <zend_parse_va_args+43>: mov 0x30(%rax),%rax
0x00007f1c9089333b <zend_parse_va_args+47>: test %rax,%rax
0x00007f1c9089333e <zend_parse_va_args+50>: je 0x7f1c90893355
<zend_parse_va_args+73>
0x00007f1c90893340 <zend_parse_va_args+52>: mov 0x18(%rax),%rax
End of assembler dump.