~/talk

Lincheck: Testing Concurrent Algorithms on JVM

Talkat droidcon Berlin 2023 · 2023-07-05..07-07· [concurrency]
links:none on file
slides:none on file

Lincheck is a JVM/Kotlin testing framework that finds concurrency bugs by inserting bytecode transformation hooks (before-read/before-write) and exhaustively exploring interleavings in a model checking mode (plus a faster stress mode). It reproduces failures with a reproducible trace that shows the exact thread switches, proved able to catch a ChatGPT-made bounded-queue bug where three enqueues succeed on capacity two, uncovered real bugs in coroutines’ channels and mutexes and in ConcurrentLinkedDeque, and drives fixing by running the concurrent implementation sequentially to check linearizability.

AI-written summary · about

  1. 0:00Introduction to concurrency
  2. 1:30Why test concurrent code
  3. 3:18ChatGPT bounded queue example
  4. 5:29Problems with manual testing
  5. 7:14Ideal concurrent testing
  6. 8:15Introducing Lincheck
  7. 11:25Understanding linearizability
  8. 12:50Linearizability examples
  9. 18:02Bug reproduction with Lincheck
  10. 19:14How Lincheck works
  11. 21:24Verifying correctness automatically
  12. 23:08Bytecode transformation magic
  13. 24:52Counter test case
  14. 26:59Lincheck in Kotlin coroutines
  15. 27:42Bug found in Java library
  16. 28:46Large-scale algorithm testing
  17. 30:08Final recommendations
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.