Loading…

A Practical Approach for Model Checking C/C++11 Code

Writing low-level concurrent software has traditionally required intimate knowledge of the entire toolchain and often has involved coding in assembly. New language standards have extended C and C++ with support for low-level atomic operations and a weak memory model, enabling developers to write por...

Full description

Saved in:
Bibliographic Details
Published in:ACM transactions on programming languages and systems 2016-05, Vol.38 (3), p.1-51, Article 10
Main Authors: Norris, Brian, Demsky, Brian
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by cdi_FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423
cites cdi_FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423
container_end_page 51
container_issue 3
container_start_page 1
container_title ACM transactions on programming languages and systems
container_volume 38
creator Norris, Brian
Demsky, Brian
description Writing low-level concurrent software has traditionally required intimate knowledge of the entire toolchain and often has involved coding in assembly. New language standards have extended C and C++ with support for low-level atomic operations and a weak memory model, enabling developers to write portable and efficient multithreaded code. In this article, we present CDSChecker, a tool for exhaustively exploring the behaviors of concurrent code under the C/C++ memory model. We have used CDSChecker to exhaustively unit test concurrent data structure implementations and have discovered errors in a published implementation of a work-stealing queue and a single producer, single consumer queue.
doi_str_mv 10.1145/2806886
format article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_1816091278</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>1816091278</sourcerecordid><originalsourceid>FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423</originalsourceid><addsrcrecordid>eNo90MtLw0AQBvBFFKxVvHvam0KJ3Un2MXssoT6gogc9h2EfNpo2dbc9-N8bafU0MPPjY_gYuwRxCyDVtEShEfURG4FSWEhlq2M2EqBlIWypTtlZzh9CCECFIyZn_CWR27aOOj7bbFJPbsljn_hT70PH62Vwn-36ndfTejIB4PWwPmcnkbocLg5zzN7u5q_1Q7F4vn-sZ4uCSmO2RbRI4GWlFWIkL4yyaGIwTnlLSMY7Ib1EU1XeChNBB2ckODJORx9lWY3ZzT53eOtrF_K2WbXZha6jdeh3uQEELSyUBgd6vacu9TmnEJtNaleUvhsQzW8vzaGXQV7tJbnVP_o7_gDjVVmL</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>1816091278</pqid></control><display><type>article</type><title>A Practical Approach for Model Checking C/C++11 Code</title><source>Business Source Ultimate</source><source>Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)</source><creator>Norris, Brian ; Demsky, Brian</creator><creatorcontrib>Norris, Brian ; Demsky, Brian</creatorcontrib><description>Writing low-level concurrent software has traditionally required intimate knowledge of the entire toolchain and often has involved coding in assembly. New language standards have extended C and C++ with support for low-level atomic operations and a weak memory model, enabling developers to write portable and efficient multithreaded code. In this article, we present CDSChecker, a tool for exhaustively exploring the behaviors of concurrent code under the C/C++ memory model. We have used CDSChecker to exhaustively unit test concurrent data structure implementations and have discovered errors in a published implementation of a work-stealing queue and a single producer, single consumer queue.</description><identifier>ISSN: 0164-0925</identifier><identifier>EISSN: 1558-4593</identifier><identifier>DOI: 10.1145/2806886</identifier><language>eng</language><publisher>New York, NY, USA: ACM</publisher><subject>Assembly ; C++ (programming language) ; Computer programs ; Consumption ; Queues ; Software ; Software and its engineering ; Software creation and management ; Software defect analysis ; Software testing and debugging ; Software verification and validation</subject><ispartof>ACM transactions on programming languages and systems, 2016-05, Vol.38 (3), p.1-51, Article 10</ispartof><rights>ACM</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423</citedby><cites>FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,780,784,27924,27925</link.rule.ids></links><search><creatorcontrib>Norris, Brian</creatorcontrib><creatorcontrib>Demsky, Brian</creatorcontrib><title>A Practical Approach for Model Checking C/C++11 Code</title><title>ACM transactions on programming languages and systems</title><addtitle>ACM TOPLAS</addtitle><description>Writing low-level concurrent software has traditionally required intimate knowledge of the entire toolchain and often has involved coding in assembly. New language standards have extended C and C++ with support for low-level atomic operations and a weak memory model, enabling developers to write portable and efficient multithreaded code. In this article, we present CDSChecker, a tool for exhaustively exploring the behaviors of concurrent code under the C/C++ memory model. We have used CDSChecker to exhaustively unit test concurrent data structure implementations and have discovered errors in a published implementation of a work-stealing queue and a single producer, single consumer queue.</description><subject>Assembly</subject><subject>C++ (programming language)</subject><subject>Computer programs</subject><subject>Consumption</subject><subject>Queues</subject><subject>Software</subject><subject>Software and its engineering</subject><subject>Software creation and management</subject><subject>Software defect analysis</subject><subject>Software testing and debugging</subject><subject>Software verification and validation</subject><issn>0164-0925</issn><issn>1558-4593</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2016</creationdate><recordtype>article</recordtype><recordid>eNo90MtLw0AQBvBFFKxVvHvam0KJ3Un2MXssoT6gogc9h2EfNpo2dbc9-N8bafU0MPPjY_gYuwRxCyDVtEShEfURG4FSWEhlq2M2EqBlIWypTtlZzh9CCECFIyZn_CWR27aOOj7bbFJPbsljn_hT70PH62Vwn-36ndfTejIB4PWwPmcnkbocLg5zzN7u5q_1Q7F4vn-sZ4uCSmO2RbRI4GWlFWIkL4yyaGIwTnlLSMY7Ib1EU1XeChNBB2ckODJORx9lWY3ZzT53eOtrF_K2WbXZha6jdeh3uQEELSyUBgd6vacu9TmnEJtNaleUvhsQzW8vzaGXQV7tJbnVP_o7_gDjVVmL</recordid><startdate>20160501</startdate><enddate>20160501</enddate><creator>Norris, Brian</creator><creator>Demsky, Brian</creator><general>ACM</general><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>20160501</creationdate><title>A Practical Approach for Model Checking C/C++11 Code</title><author>Norris, Brian ; Demsky, Brian</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2016</creationdate><topic>Assembly</topic><topic>C++ (programming language)</topic><topic>Computer programs</topic><topic>Consumption</topic><topic>Queues</topic><topic>Software</topic><topic>Software and its engineering</topic><topic>Software creation and management</topic><topic>Software defect analysis</topic><topic>Software testing and debugging</topic><topic>Software verification and validation</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Norris, Brian</creatorcontrib><creatorcontrib>Demsky, Brian</creatorcontrib><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><jtitle>ACM transactions on programming languages and systems</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Norris, Brian</au><au>Demsky, Brian</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>A Practical Approach for Model Checking C/C++11 Code</atitle><jtitle>ACM transactions on programming languages and systems</jtitle><stitle>ACM TOPLAS</stitle><date>2016-05-01</date><risdate>2016</risdate><volume>38</volume><issue>3</issue><spage>1</spage><epage>51</epage><pages>1-51</pages><artnum>10</artnum><issn>0164-0925</issn><eissn>1558-4593</eissn><abstract>Writing low-level concurrent software has traditionally required intimate knowledge of the entire toolchain and often has involved coding in assembly. New language standards have extended C and C++ with support for low-level atomic operations and a weak memory model, enabling developers to write portable and efficient multithreaded code. In this article, we present CDSChecker, a tool for exhaustively exploring the behaviors of concurrent code under the C/C++ memory model. We have used CDSChecker to exhaustively unit test concurrent data structure implementations and have discovered errors in a published implementation of a work-stealing queue and a single producer, single consumer queue.</abstract><cop>New York, NY, USA</cop><pub>ACM</pub><doi>10.1145/2806886</doi><tpages>51</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0164-0925
ispartof ACM transactions on programming languages and systems, 2016-05, Vol.38 (3), p.1-51, Article 10
issn 0164-0925
1558-4593
language eng
recordid cdi_proquest_miscellaneous_1816091278
source Business Source Ultimate; Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)
subjects Assembly
C++ (programming language)
Computer programs
Consumption
Queues
Software
Software and its engineering
Software creation and management
Software defect analysis
Software testing and debugging
Software verification and validation
title A Practical Approach for Model Checking C/C++11 Code
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-04T20%3A28%3A10IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=A%20Practical%20Approach%20for%20Model%20Checking%20C/C++11%20Code&rft.jtitle=ACM%20transactions%20on%20programming%20languages%20and%20systems&rft.au=Norris,%20Brian&rft.date=2016-05-01&rft.volume=38&rft.issue=3&rft.spage=1&rft.epage=51&rft.pages=1-51&rft.artnum=10&rft.issn=0164-0925&rft.eissn=1558-4593&rft_id=info:doi/10.1145/2806886&rft_dat=%3Cproquest_cross%3E1816091278%3C/proquest_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-a277t-f98a1d436588fad075987fe7c5d9a8a7dc04d48733d907f16ec741ca7c6fdf423%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=1816091278&rft_id=info:pmid/&rfr_iscdi=true