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

ivmai / bdwgc / 1300 / 28
69%
master: 77%

Build:
Build:
LAST BUILD BRANCH: draft-travis
DEFAULT BRANCH: master
Ran 25 Apr 2022 06:46AM UTC
Files 57
Run time 4s
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

25 Apr 2022 06:32AM UTC coverage: 68.967% (-0.2%) from 69.199%
CONF_OPTIONS="--enable-gcov --enable-handle-fork --enable-munmap --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions" CFLAGS_EXTRA="-D NO_INCREMENTAL -D USE_CUSTOM_SPECIFIC" REPORT_COVERAGE=true

push

travis-ci-com

ivmai
Fix hang on sem_wait in GC_suspend_thread if thread was resumed recently
(a cherry-pick of commit 0ab51e458 from 'release-8_0')

If GC_resume_thread(t) is followed by GC_suspend_thread(t) immediately,
then there is a risk of the loop (which had been entered before
GC_resume_thread(t) is called) in GC_suspend_self_inner() continue
iterating, thus the suspend signal handler stays pending, and thus
the relevant sem_post() will not be called.

The solution is to replace a boolean flag (suspended_ext) with
a counter (thread_stop_info.ext_suspend_cnt) with the lowest bit
indicating whether the thread is suspended manually.

* include/private/pthread_stop_world.h [!GC_OPENBSD_UTHREADS && !NACL
&& GC_ENABLE_SUSPEND_THREAD] (thread_stop_info.ext_suspend_cnt): Add
field; add comment.
* include/private/pthread_support.h [GC_ENABLE_SUSPEND_THREAD
&& !GC_DARWIN_THREADS && !GC_OPENBSD_UTHREADS && !NACL]
(GC_thread.suspended_ext): Remove field.
* include/private/pthread_support.h [GC_ENABLE_SUSPEND_THREAD
&& !GC_DARWIN_THREADS && !GC_OPENBSD_UTHREADS && !NACL]
(GC_suspend_self_inner): Add suspend_cnt argument.
* pthread_stop_world.c [!GC_OPENBSD_UTHREADS && !NACL
&& GC_ENABLE_SUSPEND_THREAD] (GC_suspend_self_inner): Likewise.
* pthread_stop_world.c [!GC_OPENBSD_UTHREADS && !NACL
&& GC_ENABLE_SUSPEND_THREAD] (GC_suspend_handler_inner): Declare
suspend_cnt local variable, set it from me->stop_info.ext_suspend_cnt,
pass it GC_suspend_self_inner().
* pthread_support.c [GC_ENABLE_SUSPEND_THREAD && !GC_DARWIN_THREADS
&& !GC_OPENBSD_UTHREADS && !NACL] (GC_do_blocking_inner,
GC_suspend_self_blocked, GC_call_with_gc_active): Likewise.
* pthread_stop_world.c [!GC_OPENBSD_UTHREADS && !NACL
&& GC_ENABLE_SUSPEND_THREAD] (GC_suspend_handler_inner): Replace
me->suspended_ext with suspend_cnt&1.
* pthread_stop_world.c [!GC_OPENBSD_UTHREADS && !NACL
&& GC_ENABLE_SUSPEND_THREAD] (GC_suspend_self_inner): Add assertion
that suspend_cnt is odd; replace me->suspended_ext loop condition t... (continued)

6107 of 8855 relevant lines covered (68.97%)

1334767.09 hits per line

Source Files on job 1300.28 (CONF_OPTIONS="--enable-gcov --enable-handle-fork --enable-munmap --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions" CFLAGS_EXTRA="-D NO_INCREMENTAL -D USE_CUSTOM_SPECIFIC" REPORT_COVERAGE=true)
  • Tree
  • List 0
  • Changed 35
  • Source Changed 2
  • Coverage Changed 35
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 845
  • Travis Job 1300.28
  • 37aa4a9f on github
  • Prev Job for CONF_OPTIONS="--enable-gcov --enable-handle-fork --enable-munmap --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions" CFLAGS_EXTRA="-D NO_INCREMENTAL -D USE_CUSTOM_SPECIFIC" REPORT_COVERAGE=true on release-7_6 (#1296.28)
  • Next Job for CONF_OPTIONS="--enable-gcov --enable-handle-fork --enable-munmap --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions" CFLAGS_EXTRA="-D NO_INCREMENTAL -D USE_CUSTOM_SPECIFIC" REPORT_COVERAGE=true on release-7_6 (#1332.28)
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