Tag Archives: parallel

Verification Challenges

You would like to do some formal verification of C code? Or you would like a challenge for your formal-verification tool? Either way, here you go!       Stupid RCU Tricks: rcutorture Catches an RCU Bug, also known as … Continue reading

Posted in Uncategorized | Tagged , , | Comments Off on Verification Challenges

A Linux-kernel memory model!

A big “thank you” to all my partners in LKMM crime, most especially to Jade, Luc, Andrea, and Alan! Jade presented our paper (slides, supplementary material) at ASPLOS, which was well-received. A number of people asked how they could learn … Continue reading

Posted in Uncategorized | Tagged , , , , , , , | Comments Off on A Linux-kernel memory model!

Stupid RCU Tricks: rcutorture Accidentally Catches an RCU Bug

With the Linux-kernel v4.13 merge window coming up, it is time to do at least a little heavy-duty testing of the patches destined for v4.14, which had been but lightly tested on my laptop. An overnight run on a larger … Continue reading

Posted in Uncategorized | Tagged , , , , , , | Comments Off on Stupid RCU Tricks: rcutorture Accidentally Catches an RCU Bug

Verification Challenge 6: Linux-Kernel Tree RCU

It has been more than two years since I posted my last verification challenge, so it is only natural to ask what, if anything, has happened in the meantime. The answer is “Quite a bit!” I had the privilege of … Continue reading

Posted in Uncategorized | Tagged , , , , | Comments Off on Verification Challenge 6: Linux-Kernel Tree RCU

Stupid RCU Tricks: An Early-1970s Example

Up to now, I have been calling out Kung’s and Lehman’s classic 1980 “Concurrent Manipulation of Binary Search Trees” as the oldest mention of something vaguely resembling RCU. However, while looking into the history of reference counting, I found Weizenbaum’s … Continue reading

Posted in Uncategorized | Tagged , , | Comments Off on Stupid RCU Tricks: An Early-1970s Example

Stupid RCU Tricks: Ordering of RCU Callback Invocation

Suppose a Linux-kernel task registers a pair of RCU callbacks, as follows: call_rcu(&p->rcu, myfunc); smp_mb(); call_rcu(&q->rcu, myfunc); Given that these two callbacks are guaranteed to be registered in order, are they also guaranteed to be invoked in order?

Posted in Uncategorized | Tagged , , , | Comments Off on Stupid RCU Tricks: Ordering of RCU Callback Invocation

Stupid RCU Tricks: Hand-over-hand traversal of linked list using SRCU

Suppose that a very long linked list was to be protected with SRCU. Let’s also make the presumably unreasonable assumption that this list is so long that we don’t want to stay in a single SRCU read-side critical section for … Continue reading

Posted in Uncategorized | Tagged , | Comments Off on Stupid RCU Tricks: Hand-over-hand traversal of linked list using SRCU

Dagstuhl Seminar: Compositional Verification Methods for Next-Generation Concurrency

Some time ago, I figured out that there are more than a billion instances of the Linux kernel in use, and this in turn led to the realization that a million-year RCU bug is happening about three times a day … Continue reading

Posted in Uncategorized | Tagged , , , , , | Comments Off on Dagstuhl Seminar: Compositional Verification Methods for Next-Generation Concurrency

Verification Challenge 5: Uses of RCU

This is another self-directed verification challenge, this time to validate uses of RCU instead of validating the RCU implementations as in earlier posts. As you can see from Verification Challenge 4, the logic expression corresponding even to the simplest Linux-kernel … Continue reading

Posted in Uncategorized | Tagged , , , , | Comments Off on Verification Challenge 5: Uses of RCU

Verification Challenge 4: Tiny RCU

The first and second verification challenges were directed to people working on verification tools, and the third challenge was directed at developers. Perhaps you are thinking that it is high time that I stop picking on others and instead direct … Continue reading

Posted in Uncategorized | Tagged , , , , | Comments Off on Verification Challenge 4: Tiny RCU