1
我想實現一個SIGSEGV上的處理程序,它將收集一些信息,如進程ID,線程ID和回溯,並將這些信息寫入文件/管道/套接字。pthread_spin_trylock在多線程應用程序的sigsegv處理程序內是否安全?
問題在於如果一個線程遇到了SIGSEGV,其他人很快就會出現(可能相當高)的可能性。如果兩個線程碰巧把它們寫到他們正在寫出他們的報告的代碼位上,那麼他們將把他們的寫入交叉(到同一個文件)。
我知道,我應該只使用異步信號安全功能作爲signal(7)
詳細的我也看到至少在兩種情況here和視頻在他人已經使用pthread_spin_trylock
來解決這個問題,最多的回答here鏈接。
這是防止上述問題的安全方法嗎?
我認爲如果您刪除了'C++'或'c'標記,並且您添加了'race-condition'標記,那會更好。這樣人們可能會更好地知道他們可以給你哪種語言的例子。瞭解種族情況的人可能會對這個問題感興趣。 –
謝謝。我已經按照你的建議去做了,希望吸引合適的人回答我的問題。 – TWMouton
你要寫出哪些信息,核心轉儲不會告訴你? –