• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

krakjoe / parallel / 27740382292
95%

Build:
DEFAULT BRANCH: develop
Ran 18 Jun 2026 06:10AM UTC
Jobs 18
Files 29
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Jun 2026 11:41AM UTC coverage: 95.095%. Remained the same
27740382292

push

github

web-flow
Narrow the Windows VEH to undefined-function calls only (#379)

* Fix use-after-free race on future->monitor in error paths

When a task threw (normal exception) or crashed (IllegalInstruction), the
worker signalled the future twice: first PHP_PARALLEL_ERROR (or READY|ERROR),
then an unconditional trailing PHP_PARALLEL_READY at the end of
php_parallel_scheduler_run().

Future::value() waits on READY|FAILURE|ERROR, so the first signal already
releases the consumer. The consumer can then tear the future down (freeing
future->monitor) before the worker runs the trailing
php_parallel_monitor_set(future->monitor, PHP_PARALLEL_READY), which then
dereferences a dangling monitor inside pthread_cond_signal -> access
violation / use-after-free.

This was observed as a hard crash on Windows (0xC0000005) in
tests/functional/007.phpt, masked until now by the catch-all VEH; on Linux
the freed memory happened to stay readable.

Fix: the error paths now signal READY|ERROR exactly once and skip the
trailing READY (via a 'ready' flag). The success and kill paths are
unchanged - they have no early wake and still rely on the trailing READY.
Setting READY in the error path also ensures the future destructor (which
waits for READY) never blocks when value() is not called.

* Narrow the Windows VEH to undefined-function calls only

Apply the same policy the POSIX SIGSEGV handler already has (#378) to the
Windows vectored exception handler: only convert an access violation into a
catchable IllegalInstruction error when a parallel worker faulted on a call
to a function missing from its function table. Every other access violation
is forwarded to the previously installed handler via EXCEPTION_CONTINUE_SEARCH
(and crashes cleanly if nothing handles it) instead of being masked by an
unconditional zend_bailout().

The missing-function detection is shared between both handlers via
php_parallel_scheduler_recover_missing_function().

0 of 2 new or added lines in 1 file covered. (0.0%)

2908 of 3058 relevant lines covered (95.09%)

5532.32 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
85.75
0.0% src/scheduler.c
Jobs
ID Job ID Ran Files Coverage
1 jit-8.5 - 27740382292.1 18 Jun 2026 06:11AM UTC 54
90.32
GitHub Action Run
2 opcache-8.5 - 27740382292.2 18 Jun 2026 06:11AM UTC 54
90.35
GitHub Action Run
3 opcache-8.3 - 27740382292.3 18 Jun 2026 06:11AM UTC 53
90.25
GitHub Action Run
4 vanilla-8.2 - 27740382292.4 18 Jun 2026 06:11AM UTC 53
94.38
GitHub Action Run
5 jit-8.3 - 27740382292.5 18 Jun 2026 06:11AM UTC 53
90.29
GitHub Action Run
6 vanilla-8.4 - 27740382292.6 18 Jun 2026 06:11AM UTC 54
94.47
GitHub Action Run
7 vanilla-8.5 - 27740382292.7 18 Jun 2026 06:11AM UTC 54
94.47
GitHub Action Run
8 opcache-8.4 - 27740382292.8 18 Jun 2026 06:12AM UTC 54
90.38
GitHub Action Run
9 jit-8.2 - 27740382292.9 18 Jun 2026 06:10AM UTC 53
90.28
GitHub Action Run
10 opcache-8.0 - 27740382292.10 18 Jun 2026 06:11AM UTC 54
91.0
GitHub Action Run
11 opcache-8.1 - 27740382292.11 18 Jun 2026 06:12AM UTC 53
90.16
GitHub Action Run
12 vanilla-8.0 - 27740382292.12 18 Jun 2026 06:11AM UTC 54
94.78
GitHub Action Run
13 jit-8.1 - 27740382292.13 18 Jun 2026 06:10AM UTC 53
90.12
GitHub Action Run
14 vanilla-8.1 - 27740382292.14 18 Jun 2026 06:10AM UTC 53
94.26
GitHub Action Run
15 opcache-8.2 - 27740382292.15 18 Jun 2026 06:11AM UTC 53
90.28
GitHub Action Run
16 vanilla-8.3 - 27740382292.16 18 Jun 2026 06:11AM UTC 53
94.38
GitHub Action Run
17 jit-8.4 - 27740382292.17 18 Jun 2026 06:10AM UTC 54
90.35
GitHub Action Run
18 jit-8.0 - 27740382292.18 18 Jun 2026 06:11AM UTC 54
91.04
GitHub Action Run
Source Files on build 27740382292
  • Tree
  • List 29
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • b654483f on github
  • Prev Build on develop (#27614957808)
  • Next Build on develop (#27760896344)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc