- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
缺乏线程安全会导致哪些类型的崩溃? (有点像 Under what circumstances are atomic properties useful? 的后续)。
任何人都可以用测试用例重现崩溃示例(即使是零星的)吗?
我试图从大量崩溃日志中找出其中有多少百分比与从多个线程访问的特定整数变量相关。 (是的,我已经确认这种访问可以发生在我的iOS应用程序中,问题只是它发生的频率。)
显然,不正确的变量访问可能会导致意外的影响和更多的下游崩溃,但我只对那些与变量的访问/突变直接相关的感兴趣(因为从一个应用程序到另一个应用程序的下游影响通常不会相同)其他)。另外,只对整数(或其他完全不可变)变量感兴趣。
我正在寻找任何示例错误代码/异常/崩溃日志,我可以从中提取关键字和正则表达式。更好的是测试应用程序或单元测试用例可以高概率地重现崩溃。我在单元测试中尝试了一个简单的示例,但似乎无法导致崩溃。
最佳答案
虽然这种方法听起来很合乎逻辑,但竞争条件以多种方式表现出来,并且无法在崩溃日志中进行简单的表征。数据争用引起的问题特别令人烦恼,因为它们通常会导致 heisenbugs 。有时它甚至不会崩溃,而只是产生不正确的结果(这可能会或可能不会导致其他问题)。
我知道这不是您正在寻找的答案,但是虽然我可以看到您的计划的吸引力,但这不太可能是一个富有成效的练习。
如果这是优先考虑线程安全修复与其他问题的问题,则没有简单的答案。在解决此数据竞争问题之前,该应用程序很容易发生崩溃和其他不可预测的行为。但我们无法可靠地预测当前崩溃日志中有多少百分比将得到解决。恕我直言,考虑到崩溃是失去用户群的最快方式,我觉得这个线程安全修复是一个非常高的优先级。
<小时/>在识别不同步访问方面,thread sanitizer ,如 this WWDC video 中所述,是一个优秀的工具。
关于objective-c - 多个线程上的非原子变量访问的崩溃日志示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48234224/
我是一名优秀的程序员,十分优秀!