1. 15
  1.  

  2. 5

    The review of concurrency bugs is good reading. The “unrelated miscellania” was a dejecting reminder of day-to-day life at large companies.

    1. 4

      If you’re in Erlang, and have a license, one can use PULSE to help find concurrency problems. As I understand it, this messes with the schedulers in Erlang to give random orderings. From what I’ve heard, the visualizations are quit nice.

      http://publications.lib.chalmers.se/records/fulltext/125252/local_125252.pdf

      For my own interests, I liked the bit of confirmation that the bugs in distributed systems were caused by basic messaging reordering.

      1. 1

        PULSE is indeed nice. It forces your program to become single threaded so it can provide repeatable interleavings (for quickcheck style shrinking).

        A non trivial example: https://github.com/basho/bitcask/blob/develop/test/bitcask_pulse.erl