Bug #70360 [Fbk->NoF]: Segmentation fault for every request
| From: | php-bugs at lists dot php dot net | Date: | Sun, 05 Nov 2017 04:22:41 +0000 |
| Subject: | Bug #70360 [Fbk->NoF]: Segmentation fault for every request | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-212449@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70360&edit=1
ID: 70360
Updated by: php-bugs@lists.php.net
Reported by: atippett at gmail dot com
Summary: Segmentation fault for every request
-Status: Feedback
+Status: No Feedback
Type: Bug
Package: opcache
Operating System: Linux fenrir 3.16.0-4-amd64 #1
PHP Version: 5.6.12
Assigned To: cmb
Private report: N
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2017-09-20 12:00:59] cmb@php.net
Could you check if 5.6.31 resolves this issue?
------------------------------------------------------------------------
[2015-10-26 21:14:03] nikic@php.net
As this issue is caused by pass 1_5 and happens in gc_remove_from_buffer() this may be the same
issue as https://bugs.php.net/bug.php?id=70601.
Could you check if 5.6.15RC1 (or 5.6-dev) resolves this issue?
------------------------------------------------------------------------
[2015-09-30 15:59:06] aliis dot jh at gmail dot com
Thanks nikic, we've now tested incrementally in the range:
opcache.optimization_level = [0xfffffff0 - 0xffffffff]
All, but the last bit flag work without segfaulting, i.e.,
opcache.optimization_level = [0xfffffff0 - 0xfffffffe] (OK - No Segfaults)
This is equiv:
[0b0000 0000 1111 1111 1111 1111 1111 1111 1111 0000]
to
[0b0000 0000 1111 1111 1111 1111 1111 1111 1111 1110]
Likewise, incrementing from other direction:
0x00000001 - FAIL (segfaults)
0x00000002 - PASS (segfaults)
0x00000003 - FAIL (segfaults)
...
for all bitmasks containing / including the first bit 0x0...1
So only the pass for bit flag: 0x00000001 is causing segfaults.
Any thoughts or solutions for fixing this issue would be greatly appreciated.
------------------------------------------------------------------------
[2015-09-04 10:01:16] nikic@php.net
@aliis: 0xf == 0b1111, so this will enable the first four passes (which is pass 1_5, pass 2 and pass
3 in practice). To further narrow this down you can try 0x1, 0x2 and 0x4.
------------------------------------------------------------------------
[2015-09-04 08:37:09] aliis dot jh at gmail dot com
After further testing on fenrir, we have that all bitmask settings for:
opcache.optimization_level do NOT produce segfaults EXCEPT the first bit.
Working: 0xXXXXXXXX0 // where 'X'=f|0
Segfault: 0xXXXXXXXXf // where 'X'=f|0
So only combinations of bit flags with the first bit enabled result in segfaults, all other
combinations work fine.
From reference, I believe this is the flag for pass 1, operations:
* - substitute persistent constants (true, false, null, etc)
* - perform compile-time evaluation of constant binary and unary operations
* - optimize series of ADD_STRING and/or ADD_CHAR
* - convert CAST(IS_BOOL,x) into BOOL(x)
* - convert INTI_FCALL_BY_NAME + DO_FCALL_BY_NAME into DO_FCALL
Reference:
http://stackoverflow.com/questions/21181045/php-opcache-optimization-levels-what-are-they
https://github.com/zendtech/ZendOptimizerPlus/blob/master/Optimizer/zend_optimizer.c
------------------------------------------------------------------------
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=70360
--
Edit this bug report at https://bugs.php.net/bug.php?id=70360&edit=1