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

bdwgc / bdwgc / 2166
80%

Build:
DEFAULT BRANCH: master
Ran 29 Jun 2026 09:11PM UTC
Jobs 1
Files 37
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

29 Jun 2026 08:51PM UTC coverage: 79.969% (-0.9%) from 80.916%
2166

push

travis-ci

ivmai
Support UFFD-based VDB on Linux/aarch64 and Linux/x86_64

Issue #430 (bdwgc).

`UFFDWP_VDB`: Use Linux `userfaultfd` (UFFD) subsystem to detect page
writes without the overhead of signal handling (unlike `MPROTECT_VDB`).
This provides a more efficient, less client-visible, modern approach
to tracking dirty pages for the incremental garbage collection.
Pages are marked as write-protected and `userfaultfd` events are used
to detect writes.  Requires Linux 5.7+.  `MPROTECT_VDB` may be defined
as a fallback strategy.

`UFFDWP_VDB` is preferred over `SOFT_VDB` at compile time.

* .cspell.json: Add `UFFD`, `uffdio`, `uffdwp`, `userfaultfd`,
`writeprotect` words.
* allchblk.c [UFFDWP_VDB && DONT_PROTECT_PTRFREE]
(is_hblks_mix_in_page): Define function.
* os_dep.c [MPROTECT_VDB && UFFDWP_VDB] (is_mprotect_vdb_preferred):
Likewise.
* os_dep.c [UFFDWP_VDB] (create_detached_thread): Likewise.
* os_dep.c [UFFDWP_VDB && THREADS & !HAVE_LOCKFREE_AO_OR
&& NEED_FAULT_HANDLER_LOCK] (async_set_pht_entry_from_index): Likewise.
* os_dep.c [UFFDWP_VDB] (GC_protect_heap): Likewise.
* pthread_support.c [UFFDWP_VDB] (GC_real_pthread_create): Likewise.
* pthread_support.c [UFFDWP_VDB && !NO_MARKER_SPECIAL_SIGMASK]
(GC_real_pthread_sigmask): Likewise.
* allchblk.c [DONT_PROTECT_PTRFREE && UFFDWP_VDB] (GC_allochblk_nth):
Check `!GC_manual_vdb`; do not call `GC_is_mprotect_vdb()`; add
comment.
* docs/environment.md (GC_USE_GETWRITEWATCH): Update documentation.
* docs/macros.md (GC_PREFER_MPROTECT_VDB, DONT_PROTECT_PTRFREE):
Likewise.
* docs/gcdescr.md (Generational Collection and Dirty Bits): Document
`UFFDWP_VDB`.
* docs/porting.md (Adding platforms to gcconfig.h): Likewise.
* include/gc/gc.h (GC_VDB_UFFDWP): New public macro.
* include/private/gc_priv.h [!HBLKSIZE] (CPP_LOG_HBLKSIZE): Update
comment.
* include/private/gcconfig.h [MPROTECT_VDB && GC_PREFER_MPROTECT_VDB]:
Likewise.
* include/private/gc_priv.h [UFFDWP_VDB]
(GC_arrays._uffdwp_registered_sects): New field.
* includ... (continued)

112 of 143 new or added lines in 1 file covered. (78.32%)

206 existing lines in 6 files now uncovered.

7122 of 8906 relevant lines covered (79.97%)

17446855.83 hits per line

Uncovered Changes

Lines Coverage ∆ File
31
53.01
-4.25% os_dep.c

Coverage Regressions

Lines Coverage ∆ File
120
76.71
0.13% pthread_support.c
42
70.91
-6.14% finalize.c
25
83.54
-4.02% mark.c
10
82.47
-2.87% pthread_stop_world.c
8
53.01
-4.25% os_dep.c
1
93.63
-0.21% allchblk.c
Jobs
ID Job ID Ran Files Coverage
1 2166.1 29 Jun 2026 09:11PM UTC 37
79.97
Travis Job
Source Files on build 2166
  • Tree
  • List 37
  • Changed 8
  • Source Changed 6
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Travis Build #2166
  • e8e5a4eb on github
  • Prev Build on master (#2164)
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