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

lunarmodules / copas / 30206523120 / 5
86%
master: 86%

Build:
DEFAULT BRANCH: master
Ran 26 Jul 2026 02:41PM UTC
Files 7
Run time 0s
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

26 Jul 2026 02:39PM UTC coverage: 84.336% (+0.3%) from 84.017%
30206523120.5

push

github

Tieske
fix(semaphore): stop leaking resources to canceled queue waiters

Same root cause as the copas.lock deadlock (#199): semaphore:give()
deducted a queued waiter's requested resources from the pool and then
called copas.wakeup() without checking whether it actually resumed
the coroutine. If that waiter had been canceled externally (eg. via
copas.removethread()/future:cancel()) while queued, the resources
were permanently subtracted from the pool even though the canceled
coroutine never runs to consume or return them - silently shrinking
the semaphore's effective capacity forever, and starving any real
waiter still queued behind it.

give() now only deducts the resources once copas.wakeup() confirms
the waiter actually resumed; a stale/canceled entry is dropped without
touching the count, and the loop continues to the next waiter in line.

1416 of 1679 relevant lines covered (84.34%)

5845.84 hits per line

Source Files on job 30206523120.5
  • Tree
  • List 7
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 30206523120
  • d30906e9 on github
  • Prev Job for on master (#30196085089.2)
  • Next Job for on master (#30207113842.6)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc