{"id":903954,"date":"2022-12-02T13:54:58","date_gmt":"2022-12-02T21:54:58","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/"},"modified":"2022-12-12T14:03:56","modified_gmt":"2022-12-12T22:03:56","slug":"waffle-exposing-memory-ordering-bugs-efficiently-with-active-delay-injection","status":"publish","type":"msr-research-item","link":"https:\/\/www.microsoft.com\/en-us\/research\/publication\/waffle-exposing-memory-ordering-bugs-efficiently-with-active-delay-injection\/","title":{"rendered":"WAFFLE: Exposing Memory Ordering Bugs Efficiently with Active Delay Injection"},"content":{"rendered":"<p><span dir=\"ltr\" role=\"presentation\">Concurrency bugs are difficult to detect, reproduce, and diag<\/span><span dir=\"ltr\" role=\"presentation\">nose, as they manifest under rare timing conditions. Recently, <\/span><span dir=\"ltr\" role=\"presentation\">active delay injection has proven efficient for exposing one <\/span><span dir=\"ltr\" role=\"presentation\">such type of bug \u2014 thread-safety violations \u2014 with low over-<\/span><br role=\"presentation\" \/><span dir=\"ltr\" role=\"presentation\">head, high coverage, and minimal code analysis. However, <\/span><span dir=\"ltr\" role=\"presentation\">how to efficiently apply active delay injection to broader <\/span><span dir=\"ltr\" role=\"presentation\">classes of concurrency bugs is still an open question.<\/span><\/p>\n<p><span dir=\"ltr\" role=\"presentation\">We aim to answer this question by focusing on<\/span> <span dir=\"ltr\" role=\"presentation\">MemO<\/span><span dir=\"ltr\" role=\"presentation\">rder<\/span> <span dir=\"ltr\" role=\"presentation\">bugs \u2014 a type of concurrency bug caused by incorrect <\/span><span dir=\"ltr\" role=\"presentation\">timing between a memory access to a particular object and <\/span><span dir=\"ltr\" role=\"presentation\">the object\u2019s initialization or deallocation. We first show ex<\/span><span dir=\"ltr\" role=\"presentation\">perimentally that the current state-of-the-art delay injection <\/span><span dir=\"ltr\" role=\"presentation\">technique leads to high overhead and low detection cover<\/span><span dir=\"ltr\" role=\"presentation\">age since<\/span> <span dir=\"ltr\" role=\"presentation\">MemOrder<\/span> <span dir=\"ltr\" role=\"presentation\">bugs exhibit particular characteristics <\/span><span dir=\"ltr\" role=\"presentation\">that cause high delay density and interference. Based on <\/span><span dir=\"ltr\" role=\"presentation\">these insights, we propose<\/span> <span dir=\"ltr\" role=\"presentation\">Waffle<\/span> <span dir=\"ltr\" role=\"presentation\">\u2014 a delay injection tool <\/span><span dir=\"ltr\" role=\"presentation\">that tailors key design points to better match the nature of <\/span><span dir=\"ltr\" role=\"presentation\">MemOrder<\/span> <span dir=\"ltr\" role=\"presentation\">bugs. Evaluating our tool on<\/span> <span dir=\"ltr\" role=\"presentation\">11<\/span> <span dir=\"ltr\" role=\"presentation\">popular open-<\/span><span dir=\"ltr\" role=\"presentation\">source multi-threaded C# applications shows that<\/span> <span dir=\"ltr\" role=\"presentation\">Waffle <\/span><span dir=\"ltr\" role=\"presentation\">can expose more bugs with less overhead than state-of-the-<\/span><span dir=\"ltr\" role=\"presentation\">art techniques.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concurrency bugs are difficult to detect, reproduce, and diagnose, as they manifest under rare timing conditions. Recently, active delay injection has proven efficient for exposing one such type of bug \u2014 thread-safety violations \u2014 with low over-head, high coverage, and minimal code analysis. However, how to efficiently apply active delay injection to broader classes of [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr-author-ordering":null,"msr_publishername":"","msr_publisher_other":"","msr_booktitle":"","msr_chapter":"","msr_edition":"","msr_editors":"","msr_how_published":"","msr_isbn":"","msr_issue":"","msr_journal":"","msr_number":"","msr_organization":"","msr_pages_string":"","msr_page_range_start":"","msr_page_range_end":"","msr_series":"","msr_volume":"","msr_copyright":"","msr_conference_name":"EuroSys'23","msr_doi":"","msr_arxiv_id":"","msr_s2_paper_id":"","msr_mag_id":"","msr_pubmed_id":"","msr_other_authors":"","msr_other_contributors":"","msr_speaker":"","msr_award":"","msr_affiliation":"","msr_institution":"","msr_host":"","msr_version":"","msr_duration":"","msr_original_fields_of_study":"","msr_release_tracker_id":"","msr_s2_match_type":"","msr_citation_count_updated":"","msr_published_date":"2023-5-1","msr_highlight_text":"","msr_notes":"","msr_longbiography":"","msr_publicationurl":"","msr_external_url":"","msr_secondary_video_url":"","msr_conference_url":"","msr_journal_url":"","msr_s2_pdf_url":"","msr_year":0,"msr_citation_count":0,"msr_influential_citations":0,"msr_reference_count":0,"msr_s2_match_confidence":0,"msr_microsoftintellectualproperty":true,"msr_s2_open_access":false,"msr_s2_author_ids":[],"msr_pub_ids":[],"msr_hide_image_in_river":0,"footnotes":""},"msr-research-highlight":[],"research-area":[13547],"msr-publication-type":[193716],"msr-publisher":[],"msr-focus-area":[],"msr-locale":[268875],"msr-post-option":[],"msr-field-of-study":[],"msr-conference":[],"msr-journal":[],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-903954","msr-research-item","type-msr-research-item","status-publish","hentry","msr-research-area-systems-and-networking","msr-locale-en_us"],"msr_publishername":"","msr_edition":"","msr_affiliation":"","msr_published_date":"2023-5-1","msr_host":"","msr_duration":"","msr_version":"","msr_speaker":"","msr_other_contributors":"","msr_booktitle":"","msr_pages_string":"","msr_chapter":"","msr_isbn":"","msr_journal":"","msr_volume":"","msr_number":"","msr_editors":"","msr_series":"","msr_issue":"","msr_organization":"","msr_how_published":"","msr_notes":"","msr_highlight_text":"","msr_release_tracker_id":"","msr_original_fields_of_study":"","msr_download_urls":"","msr_external_url":"","msr_secondary_video_url":"","msr_longbiography":"","msr_microsoftintellectualproperty":1,"msr_main_download":"","msr_publicationurl":"","msr_doi":"","msr_publication_uploader":[{"type":"file","viewUrl":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2022\/12\/EuroSys23_camera_ready__WAFFLE_Exposing_Memory_Ordering_Bugs_Efficiently_with_Active_Delay_Injection.pdf","id":"903960","title":"_eurosys23_camera_ready__waffle_exposing_memory_ordering_bugs_efficiently_with_active_delay_injection","label_id":"243109","label":0}],"msr_related_uploader":"","msr_citation_count":0,"msr_citation_count_updated":"","msr_s2_paper_id":"","msr_influential_citations":0,"msr_reference_count":0,"msr_arxiv_id":"","msr_s2_author_ids":[],"msr_s2_open_access":false,"msr_s2_pdf_url":null,"msr_attachments":[{"id":903960,"url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2022\/12\/EuroSys23_camera_ready__WAFFLE_Exposing_Memory_Ordering_Bugs_Efficiently_with_Active_Delay_Injection.pdf"}],"msr-author-ordering":[{"type":"text","value":"Bogdan Alexandru Stoica","user_id":0,"rest_url":false},{"type":"guest","value":"shan-lu","user_id":554061,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=shan-lu"},{"type":"user_nicename","value":"Madan Musuvathi","user_id":32766,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Madan Musuvathi"},{"type":"user_nicename","value":"Suman Nath","user_id":33753,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Suman Nath"}],"msr_impact_theme":[],"msr_research_lab":[199565],"msr_event":[],"msr_group":[],"msr_project":[554055],"publication":[],"video":[],"msr-tool":[],"msr_publication_type":"inproceedings","related_content":{"projects":[{"ID":554055,"post_title":"Torch","post_name":"torch","post_type":"msr-project","post_date":"2018-11-28 15:34:02","post_modified":"2022-12-02 14:18:51","post_status":"publish","permalink":"https:\/\/www.microsoft.com\/en-us\/research\/project\/torch\/","post_excerpt":"We aim to develop practical tools and techniques that can help cloud developers adequately debug, test, configure, and monitor their systems. The research spans all aspects of improving reliability and availability of large-scale cloud systems, including understanding various runtime failures in real cloud systems, developing practical static and dynamic analysis techniques to uncover hard-to-find bugs before production, root-causing failures, designing lightweight but effective runtime monitoring and failure prevention, etc. Tools and techniques developed in the&hellip;","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/554055"}]}}]},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/903954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-research-item"}],"version-history":[{"count":2,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/903954\/revisions"}],"predecessor-version":[{"id":903963,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/903954\/revisions\/903963"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=903954"}],"wp:term":[{"taxonomy":"msr-research-highlight","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-highlight?post=903954"},{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=903954"},{"taxonomy":"msr-publication-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publication-type?post=903954"},{"taxonomy":"msr-publisher","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publisher?post=903954"},{"taxonomy":"msr-focus-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-focus-area?post=903954"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=903954"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=903954"},{"taxonomy":"msr-field-of-study","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-field-of-study?post=903954"},{"taxonomy":"msr-conference","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-conference?post=903954"},{"taxonomy":"msr-journal","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-journal?post=903954"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=903954"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=903954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}