今年的ASPLOS '09上zhou yuanyuan也有一篇關于如何concurrent program中發現隱藏的atomicity violation bugs的paper,里面提到了這篇paper
2008-11-30
OSDI '08上MSR發的paper,針對并發編程中難以發現的bug問題。
paper的內容主要分兩大塊。
一是如何在發現bug的時候記錄下線程的運行先后(thread
interleaving),途徑是在線程API和用戶程序多寫一層wrapper
functions,這里還有一些其他的問題,比如只記錄下了thread interleaving的話出現data race怎么解決等。
另外一塊內容是如何遍歷出給定程序運行后所能產生的結果的集合,加入這個能實現的話那就能把所有隱藏的bug都找出來了。但是這個搜索空間很大,是
指數級的,的一個結論就是:給定一個程序有n個的線程,所有線程共完成k條指令,那么c次占先調度后線程的排列情況數的復雜度是
的,所以在實現遍歷代碼的時候必須有效的降低k和c的值。