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

ivmai / bdwgc / 1300
69%
master: 77%

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

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)

32 of 32 new or added lines in 2 files covered. (100.0%)

6107 of 8855 relevant lines covered (68.97%)

1334767.09 hits per line

Jobs
ID Job ID Ran Files Coverage
28 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) 25 Apr 2022 06:46AM UTC 0
68.97
Travis Job 1300.28
Source Files on build 1300
Detailed source file information is not available for this build.
  • Back to Repo
  • Build #1300
  • 37aa4a9f on github
  • Prev Build on release-7_6 (#1296)
  • Next Build on release-7_6 (#1332)
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