查找竞争条件错误

Finding race condition bugs

我正在调试一个复杂的多线程程序,它可能仍然存在竞争条件错误。我目前正在通过 运行 对非确定性代码重复进行相同的单元测试直到它失败来调试它。

我知道没有简单的解决方案,但是有没有一种启发式工具可以让系统的调度程序 (Linux) 在每个 运行 更改抢占点,从而增加发现错误的可能性?

我知道一个名为 Jinx Debugger 的工具可以执行此操作,但它不再可用。

通常的解决办法是仔细分析代码,"prove"锁定正确性。这是一门艺术。

对于实验方法,您可以使用执行随机睡眠的函数调用来检测代码,并且 运行 长时间。您的函数只能休眠一小部分时间,随机几毫秒。