Author:
Padhiyar Sumit,Sivaramakrishnan K. C.
Abstract
AbstractBug-free concurrent programs are hard to write due to non-determinism arising out of concurrency and program inputs. Since concurrency bugs typically manifest under specific inputs and thread schedules, conventional testing methodologies for concurrent programs like stress testing and random testing, which explore random schedules, have a strong chance of missing buggy schedules.In this paper, we introduce a novel technique that combines property-based testing with mutation-based, grey box fuzzer, applied to event-driven OCaml programs. We have implemented this technique in , a directed concurrency bug-finding tool for event-driven OCaml programs. Using , programmers specify high-level program properties as assertions in the concurrent program. uses the popular greybox fuzzer AFL to generate inputs as well as concurrent schedules to maximise the likelihood of finding new schedules and paths in the program so as to make the assertion fail. does not require any modification to the concurrent program, which is free to perform arbitrary I/O operations. Our experimental results show that is easy-to-use, effective, detects concurrency bugs faster than Node.Fz - a random fuzzer for event-driven JavaScript programs, and is able to reproduce known concurrency bugs in widely used OCaml libraries.
Publisher
Springer International Publishing
Reference39 articles.
1. American fuzzy lop (2020). https://lcamtuf.coredump.cx/afl
2. Async: Typeful concurrent programming (2020). https://opensource.janestreet.com/async/
3. Asynchronous Javascript (2020). https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous
4. Bielik, P., Raychev, V., Vechev, M.: Scalable race detection for android applications. SIGPLAN Not. 50(10), 332–348 (2015). https://doi.org/10.1145/2858965.2814303
5. Chang, X., Dou, W., Gao, Y., Wang, J., Wei, J., Huang, T.: Detecting atomicity violations for event-driven node.js applications. In: Proceedings of the 41st International Conference on Software Engineering, ICSE 2019, pp. 631–642. IEEE Press (2019). https://doi.org/10.1109/ICSE.2019.00073
Cited by
3 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Property-Based Fuzzing for Finding Data Manipulation Errors in Android Apps;Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2023-11-30
2. Automated verification of concurrent go programs via bounded model checking;Automated Software Engineering;2023-08-26
3. Schema-guided Testing of Message-oriented Systems;Proceedings of the 17th International Conference on Evaluation of Novel Approaches to Software Engineering;2022