有一种软件bug是开发复杂软件项目开发者的噩梦,那就是代码中的竞态(Race Condition,也被译作竞争条件)引发的软件bug,近日Facebook开源了开发工具RacerD,来帮助开发者检查并预防Race Condition bug。
Race Condition是程序在多线程多任务处理时,对有些共享资源进行操作(例如两个进程同时修改同一个数据时),导致整个处理过程变得混乱甚至锁死,引发BUG。
Race Condition查找起来非常困难,开发者很难彻查一个app中所有的潜在问题,因为Race Condition引发的bug并不持续,因此难以诊断。
Facebook科学家Peter O‘Hearn在接受采访时指出,RacerD能查出大多数race condition导致的bug,虽然不能保证全部。
据悉,Facebook的Android应用开发团队在迭代新闻源并发功能(可将app性能提升5%)时使用RacerD找到来超过1000个race condition bug。
目前RacerD兼容Java,下一步Facebook将进一步开发使RacerD能够兼容C++。