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

dimitarvp / xqlite / 61cf771f2f3ec81d6d9f61f236e606ee4ed7a69c
71%

Build:
DEFAULT BRANCH: main
Ran 17 Jul 2026 06:22PM UTC
Jobs 1
Files 32
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

17 Jul 2026 06:17PM UTC coverage: 70.48%. Remained the same
61cf771f2f3ec81d6d9f61f236e606ee4ed7a69c

push

github

dimitarvp
fix wave-2 run-1 S0 memory-safety holes

the Mutex<Connection> serialization guarantee had holes at the
blob/session/log seam — the resources that erased their connection
lifetime and never adopted the raw-handle locking rule.

- M1/M5: blob and session ops went through the resource's OWN mutex,
  never the connection Mutex, so sqlite3_blob_*/sqlite3session_* raced
  a concurrent sqlite3_step on the same NOMUTEX connection. route every
  op through with_blob/with_session, which now hold the connection
  Mutex for the raw call and prove the connection open. this also
  restores the progress handler's "fires only under the conn Mutex"
  invariant, closing the session-changeset progress-list use-after-free.

- M2: a session registers no internal Vdbe, so an explicit close/1 lets
  sqlite3_close free the db out from under a live session, and the later
  sqlite3session_delete dangled. blob/session Drop and the explicit
  close/delete NIFs now funnel through a shared close() that runs the
  teardown under the connection Mutex and, when the connection is
  already closed, leaks the small session object rather than touch freed
  memory. blobs keep the db alive via SQLITE_BUSY, so their close stays
  safe (closing a connection with a live blob leaks that connection — a
  documented misuse, not a crash).

- M3: the process-global log hook fired with no connection Mutex while
  register/unregister freed the subscriber Vec under MASTER_LOCK. the
  callback now takes MASTER_LOCK too, so the lock-free read cannot race
  the free.

regression tests: blob and session ops on a connection closed after the
handle was opened fail cleanly, and teardown does not crash the VM.

573 of 813 relevant lines covered (70.48%)

36.55 hits per line

Jobs
ID Job ID Ran Files Coverage
1 61cf771f2f3ec81d6d9f61f236e606ee4ed7a69c.1 17 Jul 2026 06:22PM UTC 32
70.48
GitHub Action Run
Source Files on build 61cf771f2f3ec81d6d9f61f236e606ee4ed7a69c
  • Tree
  • List 32
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 61cf771f on github
  • Prev Build on main (#2D100BFE...)
  • Next Build on main (#DCA9232A...)
  • Delete
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