Checking Compatability of Programs on Shared Data
MetadataShow full item record
A large software system is built by composing multiple programs, possibly developed independently. The component programs communicate by sharing data. Data sharing involves creation of instances of the shared data by one program, called the producer, and its interpretation by another program, called the consumer. Valid instances of shared data and their correct interpretation is usually specified by a protocol or a standard that governs the communication. If a consumer misinterprets or does not handle some instances of data produced by a producer, it is called as a data compatibility bug. Such bugs manifest as various forms of runtime errors that are difficult to find and fix. In this work, we define various compatibility relations, between both producer-consumer programs and version-related programs, that characterize various subtle requirements for correct sharing of data. We design and implement a static analysis to infer types and guards over elements of shared data and the results are used for automatic compatibility checking. As case studies, we consider two widely used shared data-the TIFF structure, used to store TIFF directory attributes in memory, and IEEE 802. 11 MAC frame header which forms the layer 2 header in Wireless LAN communication. We analyze and check compatibility of 6 pairs of producer-consumer programs drawn from the transmit-receive code of Linux WLAN drivers of 3 different vendors. In the setting of version-related programs, we analyze a total of 48 library and utility routines of 2 pairs of TIFF image library (libtiff) versions. We successfully identify 5 known bugs and 1 new bug. For two of known bugs, bug fixes are available and we verify that they resolve the compatibility issues.
Showing items related by title, author, creator and subject.
Design Of Incentive Compatible Broadcast Protocols For Ad hoc Wireless Networks : A Game Theoretic Approach Narayanam, Ramasuri (2008-01-16)An ad hoc wireless network is an infrastructure-less, autonomous system of nodes connected through wireless links. In many current applications of ad hoc wireless networks, individual wireless nodes are autonomous, rational, ...
A Mechanism Design Approach To Resource Procurement In Computational Grids With Rational Resource Providers Prakash, Hastagiri (2009-07-08)A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities. In the presence of grid users who are autonomous, ...
Patel, Shivshanker Singh (2018-06-18)The economic growth and the increase in population has led to an increased demand for water for various purposes such as domestic consumption, irrigation, industrial use, power generation, navigation, recreation, and ...