1
0
mirror of https://github.com/php/php-src.git synced 2026-04-20 14:31:06 +02:00
Commit Graph

79 Commits

Author SHA1 Message Date
Fabien Villepinte
0c6d06ecfa Replace EXPECTF when possible
Closes GH-5779
2020-06-29 21:31:44 +02:00
Alex Dowad
555489dd83 Honor script time limit when calling shutdown functions
A time limit can be set on PHP script execution via `set_time_limit` (or .ini file).
When the time limit is reached, the OS will notify PHP and `timed_out` and `vm_interrupt`
flags are set. While these flags are regularly checked when executing PHP code, once the
end of the script is reached, they are not checked while invoking shutdown functions
(registered via `register_shutdown_function`).

Of course, if the shutdown functions are implemented *in* PHP, then the interrupt flag
will be checked while the VM is running PHP bytecode and the timeout will take effect.
But if the shutdown functions are built-in (implemented in C), it will not.

Since the shutdown functions are invoked through `zend_call_function`, add a check of the
`vm_interrupt` flag there. Then, the script time limit will be respected when *entering*
each shutdown function. The fact still remains that if a shutdown function is built-in and
runs for a long time, script execution will not time out until it finishes and the
interpreter tries to invoke the next one.

Still, the behavior of scripts with execution time limits will be more consistent after
this patch. To make the execution time-out feature work even more precisely, it would
be necessary to scrutinize all the built-in functions and add checks of the `vm_interrupt`
flag in any which can run for a long time. That might not be worth the effort, though.

It should be mentioned that this patch does not solely affect shutdown functions, neither
does it solely allow for interruption of running code due to script execution timeout.
Anything else which causes `vm_interrupt` to be set, such as the PHP interpreter receiving
a signal, will take effect when exiting from an internal function. And not just internal
functions which are called because they were registered to run at shutdown; there are
other cases where a series of internal functions might run in the midst of a script. In
all such cases, it will be possible to interrupt the interpreter now.

Closes GH-5543.
2020-05-13 12:47:12 +02:00
Nikita Popov
f8d795820e Reindent phpt files 2020-02-03 22:52:20 +01:00
Máté Kocsis
0b4778c377 Fix #78880: Another bunch of spelling errors 2020-01-16 09:46:47 +01:00
Nikita Popov
d011f60eb1 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #78402: pcntl_signal() misleading error message
2019-12-20 11:03:15 +01:00
Nikita Popov
5155097431 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #78402: pcntl_signal() misleading error message
2019-12-20 11:02:57 +01:00
SATO Kentaro
cbb0efaeeb Fix #78402: pcntl_signal() misleading error message
An error message can be misleading when a handler
passed to pcntl_signal() is not callable.
2019-12-20 11:02:20 +01:00
Nikita Popov
45deb01cc2 Merge branch 'PHP-7.4'
* PHP-7.4:
  Skip large ftruncate test if large files not supported
  Don't test "blocks" in lstat_stat_variation7.phpt
  Increase FD used in php://fd test
  Use posix_getuid() to check for root in pcntl_setpriority() test
2019-10-24 14:47:15 +02:00
Nikita Popov
a3469146d4 Use posix_getuid() to check for root in pcntl_setpriority() test
Using SUDO_USER doesn't seem to work on Travis ARM CI -- I guess
that sudo might be in use without the target being root.
2019-10-24 14:46:25 +02:00
Nikita Popov
93f41d2aec Merge branch 'PHP-7.4' 2019-07-03 11:03:41 +02:00
Nikita Popov
aff0b77d15 Skip pcntl_sigwaitinfo() test under asan/msan
This test often fails under asan/msan with a timeout for unknown
reasons.
2019-07-03 11:03:27 +02:00
Nikita Popov
b98c148f78 Merge branch 'PHP-7.4' 2019-06-28 15:05:00 +02:00
Nikita Popov
54dd762f59 Set up asan+ubsan scheduled build on azure
Also adds an --asan flag to run-tests.php to setup all the necessary
environment variables. Some tests are marked as skipped because they
are incompatible with asan or too slow.

I'm basing this on the DEBUG_ZTS build, which seems to give us the
most mileage.
2019-06-28 15:00:54 +02:00
Joe Watkins
d7f3ef3396 Merge branch 'PHP-7.4'
* PHP-7.4:
  disable this test temporarily
2019-06-14 14:22:41 +02:00
Joe Watkins
8f4e24eeef disable this test temporarily 2019-06-14 14:22:25 +02:00
Joe Watkins
956db0cdc2 Merge branch 'PHP-7.4'
* PHP-7.4:
  fix mac tests on azure
2019-06-14 12:58:13 +02:00
Joe Watkins
f16b012116 fix mac tests on azure 2019-06-14 12:55:00 +02:00
Nikita Popov
852485d8ec Adjust tests for zpp TypeError change 2019-03-11 11:32:20 +01:00
Pedro Magalhães
bc54e59a3a Implement pcntl_unshare 2019-02-18 19:20:18 +00:00
Nikita Popov
120137ca14 Merge branch 'PHP-7.3' into PHP-7.4 2019-02-12 10:10:30 +01:00
Nikita Popov
97dd1591af Merge branch 'PHP-7.2' into PHP-7.3 2019-02-12 10:10:22 +01:00
hsldymq
b5cb3ac8ec Make pid & uid available while handling realtime signals 2019-02-12 10:09:33 +01:00
Er Galvão Abbott
eadfdb9617 Add test case for pcntl_setpriority basic behaviour 2019-02-10 20:03:08 +01:00
Er Galvão Abbott
d22dd5f93a Add test for pcntl_getpriority() basic behaviour 2019-02-09 02:39:46 +01:00
Peter Kokot
d7a3edd45d Trim trailing whitespace in *.phpt 2018-10-14 19:46:15 +02:00
Peter Kokot
782352c54a Trim trailing whitespace in *.phpt 2018-10-14 19:45:12 +02:00
Peter Kokot
17ccbeec32 Trim trailing whitespace in *.phpt 2018-10-14 19:44:14 +02:00
Gabriel Caruso
9c144e0d82 Trim trailing whitespace in tests 2018-10-14 12:07:20 -03:00
Gabriel Caruso
ded3d984c6 Use EXPECT instead of EXPECTF when possible
EXPECTF logic in run-tests.php is considerable, so let's avoid it.
2018-02-20 21:53:48 +01:00
Nikita Popov
270f1ffd19 Merge branch 'PHP-7.1' 2016-12-29 21:18:58 +01:00
David Walker
b09c2f899e Fixed bug #73783
Bug #73783 raises an issue with signal handling when using SIG_IGN.
With PHP7.1 ZEND_SIGNALS is defaulted to on, which will for all
signals set the handler as zend_signal_handler_defer.  This is
problematic for syscalls like sleep(), which will only return when the
requisite number of seconds have elapsed, or, a non-ignored signal is
raised.  In this case we want to SIG_IGN SIGCHLD, however, SIG_IGN is
only stored in the SIGG(handlers) array, and the actual system level
handler is defined.  This prevents proper signal ignoring when requeted.
2016-12-29 21:18:22 +01:00
Pedro Magalhães
617dcf1b37 Remove the binary cast from unrelated tests 2016-11-20 21:11:53 +01:00
Pedro Magalhães
9c5af4e4cb Remove the b prefix from literals on unrelated tests 2016-11-20 21:11:53 +01:00
Davey Shafik
57092c5a68 Merge RFC Additional Context in pcntl_signal Handler 2016-07-20 14:17:04 -07:00
Aaron Piotrowski
1ba20e311e Fix pcntl_signal_get_handler() test
Test was failing on Fedora.
2016-07-11 17:01:03 -05:00
David Walker
f64388e8c1 pnctl_signal(): add siginfo to handler args
Feature will utilize already available siginfo parsing
and extend the handler for signals to provide an array
of the siginfo_t data.
RFC:https://wiki.php.net/rfc/additional-context-in-pcntl-signal-handler
2016-07-07 09:43:18 -06:00
David Walker
ed9bff5352 oops, name test right 2016-07-06 13:57:37 -05:00
David Walker
217dcbcd91 Fix #72409 - return previous handler
This patch addresses https://bugs.php.net/bug.php?id=72409

This patch is applied to master compared to PR#1952 which was
patching 5.6.x branch of PHP

This patch takes into account discussions on PR #1978
Addressing that rather than have pcntl_signal() return a value
to create a new function that can be used to get the current
value of the signal handler.
2016-07-06 13:57:37 -05:00
Dmitry Stogov
c03ccfe78d Asynchronous signal handling without TICKs.
Squashed commit of the following:

commit eda931df18
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 6 10:53:30 2016 +0300

    Replace pcntl.async_signals INI direcrive with pcntl_async_signals() function.

commit bfbf7dd7c2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jun 24 12:25:31 2016 +0300

    Asynchronous signal handling without TICKs.
2016-07-06 13:11:47 +03:00
Xinchen Hui
c15b6134f6 Fixed bug #72154 (pcntl_wait/pcntl_waitpid array internal structure overwrite) 2016-05-05 15:18:17 +08:00
Antony Dovgal
2fa4e79e8a fix tests 2015-05-13 15:34:17 +02:00
Antony Dovgal
7e0e88820a add rusage support to wait() and waitpid()
patch by Anton Stepanenko
2015-05-13 15:34:17 +02:00
Rasmus Lerdorf
a03f0943ca We shouldn't load any local ini files for these tests 2013-08-02 16:23:18 -04:00
Xinchen Hui
e081c55fb5 Merge branch 'PHP-5.3' into PHP-5.4 2012-10-10 10:31:31 +08:00
Xinchen Hui
610c7fbe7b Remove executable permission on phpt 2012-10-10 10:27:49 +08:00
Marc Easen
896ac689c9 Fixed the common misspelling of the word occurred (occured -> occurred) 2012-06-30 16:54:03 -07:00
Felipe Pena
10c20ceaf4 - Added SKIPIF 2011-06-24 19:18:06 +00:00
Felipe Pena
b632c3ac06 - Added SKIPIF 2011-06-24 19:18:06 +00:00
Ilia Alshanetsky
34d93f0c06 Zend Signal Handling 2011-06-22 14:23:21 +00:00
Pierrick Charron
1368364469 Fix common typos in the source code (Reported in Bug #54065)
# External libraries were excluded
# Thanks eitan at eitanadler dot com for the first patch :)
2011-04-03 21:46:52 +00:00