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

stlehmann / pyads / 27101466777
94%

Build:
DEFAULT BRANCH: master
Ran 07 Jun 2026 06:46PM UTC
Jobs 0
Files 0
Run time –
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

pending completion
27101466777

push

github

web-flow
CI: Fix segmentation faults (#527)

* ci: add fail-fast: false to test matrix

Prevents a single flaky segfault on one Python version from cancelling
all other matrix jobs, making CI results accurate even during transient
failures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: clear callback_store at interpreter shutdown to prevent segfaults

Registers an atexit handler to clear the ctypes function-pointer dict
before Python tears down the C library. Without this, adslib.so can
invoke a GC'd callback during shutdown, causing a SIGSEGV (exit 139)
after tests complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: enable faulthandler in conftest for segfault tracebacks

Enables Python's faulthandler so that any remaining C-level crash
prints a traceback to stderr instead of exiting silently with code 139.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: use pop() to remove callback_store entry to avoid KeyError on shutdown

AdsSymbol.__del__ calls adsSyncDelDeviceNotificationReqEx during GC,
which may run after the atexit handler has already cleared callback_store.
Using pop(..., None) instead of del makes the removal idempotent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: revert atexit callback_store.clear — keep function pointers alive

Clearing callback_store at shutdown frees the ctypes function pointer
objects while adslib.so may still hold raw C pointers to them, which
is itself a source of SIGSEGV. Keep the dict alive so the C library
can safely call back into Python until connections are properly closed.

The KeyError fix (pop instead of del) is retained: __del__ racing with
an already-emptied store is handled gracefully regardless.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Source Files on build 27101466777
Detailed source file information is not available for this build.
  • Back to Repo
  • 85664597 on github
  • Prev Build on master (#26710511804)
  • Next Build on master (#27101685772)
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