I recently watched the talk
Testing Distributed Systems w/ Deterministic Simulation. They implemented a language (or pre-processor) on top of C++ to add concurrency primitives with some similarity to what go offers. They developed a distributed system (database) and tested it by deterministic simulation by mocking all their non-deterministic dependencies (network, disk, time, etc) and by doing deterministic scheduling of threads with a PRNG. This seems like a powerful way of testing that may require language support.
This seems similar to the approach outlined by Robert Griesemer (et al) in the
Paxos Made Live paper. However, in that paper it says they reached a point where they where they had to sacrifice repeat-ability when multiple subsystems had to be made more concurrent.
I'm curious about what challenges there would be in implementing a "deterministic execution mode" in go. The idea is that there'd be some way to provide a seed to the runtime and have a repeatable (single-threaded) execution of a concurrent program. Then there'd be a panic if anything non-deterministic is done.
I think it's likely someone here has thought of this problem before but I haven't found anything when searching.