Detecting Exception Handling Bugs in C++ Programs.

Saved in:
Bibliographic Details
Title: Detecting Exception Handling Bugs in C++ Programs.
Authors: Zhang, Hao1 zhanghao19@ios.ac.cn, Luo, Ji2 luoji20@otcaix.iscas.ac.cn, Hu, Mengze3 humz@ios.ac.cn, Yan, Jun4 yanjun@ios.ac.cn, Zhang, Jian4 zj@ios.ac.cn, Qiu, Zongyan5 qzy@math.pku.edu.cn
Source: ICSE: International Conference on Software Engineering. 2023, p1084-1096. 13p.
Subjects: Error-correcting codes, C (Computer program language), Debugging, Facebook (Web resource), Github Inc.
Abstract: Exception handling is a mechanism in modern programming languages. Studies have shown that the exception handling code is error-prone. However, there is still limited research on detecting exception handling bugs, especially for C++ programs. To tackle the issue, we try to precisely represent the exception control flow in C++ programs and propose an analysis method that makes use of the control flow to detect such bugs. More specifically, we first extend control flow graph by introducing the concepts of five different kinds of basic blocks, and then modify the classic symbolic execution framework by extending the program state to a quadruple and properly processing try, throw and catch statements. Based on the above techniques, we develop a static analysis tool on the top of Clang Static Analyzer to detect exception handling bugs. We run our tool on projects with high stars from GitHub and find 36 exception handling bugs in 8 projects, with a precision of 84%. We compare our tool with four state-of-the-art static analysis tools (Cppcheck, Clang Static Analyzer, Facebook Infer and IKOS) on projects from GitHub and handmade benchmarks. On the GitHub projects, other tools are not able to detect any exception handling bugs found by our tool. On the handmade benchmarks, our tool has a significant higher recall. [ABSTRACT FROM AUTHOR]
Copyright of ICSE: International Conference on Software Engineering is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract. (Copyright applies to all Abstracts.)
Database: Engineering Source
Full text is not displayed to guests.
FullText Links:
  – Type: pdflink
Text:
  Availability: 1
Header DbId: egs
DbLabel: Engineering Source
An: 185196068
AccessLevel: 6
PubType: Conference
PubTypeId: conference
PreciseRelevancyScore: 0
IllustrationInfo
Items – Name: Title
  Label: Title
  Group: Ti
  Data: Detecting Exception Handling Bugs in C++ Programs.
– Name: Author
  Label: Authors
  Group: Au
  Data: <searchLink fieldCode="AR" term="%22Zhang%2C+Hao%22">Zhang, Hao</searchLink><relatesTo>1</relatesTo><i> zhanghao19@ios.ac.cn</i><br /><searchLink fieldCode="AR" term="%22Luo%2C+Ji%22">Luo, Ji</searchLink><relatesTo>2</relatesTo><i> luoji20@otcaix.iscas.ac.cn</i><br /><searchLink fieldCode="AR" term="%22Hu%2C+Mengze%22">Hu, Mengze</searchLink><relatesTo>3</relatesTo><i> humz@ios.ac.cn</i><br /><searchLink fieldCode="AR" term="%22Yan%2C+Jun%22">Yan, Jun</searchLink><relatesTo>4</relatesTo><i> yanjun@ios.ac.cn</i><br /><searchLink fieldCode="AR" term="%22Zhang%2C+Jian%22">Zhang, Jian</searchLink><relatesTo>4</relatesTo><i> zj@ios.ac.cn</i><br /><searchLink fieldCode="AR" term="%22Qiu%2C+Zongyan%22">Qiu, Zongyan</searchLink><relatesTo>5</relatesTo><i> qzy@math.pku.edu.cn</i>
– Name: TitleSource
  Label: Source
  Group: Src
  Data: <searchLink fieldCode="JN" term="%22ICSE%3A+International+Conference+on+Software+Engineering%22">ICSE: International Conference on Software Engineering</searchLink>. 2023, p1084-1096. 13p.
– Name: Subject
  Label: Subjects
  Group: Su
  Data: <searchLink fieldCode="DE" term="%22Error-correcting+codes%22">Error-correcting codes</searchLink><br /><searchLink fieldCode="DE" term="%22C+%28Computer+program+language%29%22">C (Computer program language)</searchLink><br /><searchLink fieldCode="DE" term="%22Debugging%22">Debugging</searchLink><br /><searchLink fieldCode="DE" term="%22Facebook+%28Web+resource%29%22">Facebook (Web resource)</searchLink><br /><searchLink fieldCode="DE" term="%22Github+Inc%2E%22">Github Inc.</searchLink>
– Name: Abstract
  Label: Abstract
  Group: Ab
  Data: Exception handling is a mechanism in modern programming languages. Studies have shown that the exception handling code is error-prone. However, there is still limited research on detecting exception handling bugs, especially for C++ programs. To tackle the issue, we try to precisely represent the exception control flow in C++ programs and propose an analysis method that makes use of the control flow to detect such bugs. More specifically, we first extend control flow graph by introducing the concepts of five different kinds of basic blocks, and then modify the classic symbolic execution framework by extending the program state to a quadruple and properly processing try, throw and catch statements. Based on the above techniques, we develop a static analysis tool on the top of Clang Static Analyzer to detect exception handling bugs. We run our tool on projects with high stars from GitHub and find 36 exception handling bugs in 8 projects, with a precision of 84%. We compare our tool with four state-of-the-art static analysis tools (Cppcheck, Clang Static Analyzer, Facebook Infer and IKOS) on projects from GitHub and handmade benchmarks. On the GitHub projects, other tools are not able to detect any exception handling bugs found by our tool. On the handmade benchmarks, our tool has a significant higher recall. [ABSTRACT FROM AUTHOR]
– Name: AbstractSuppliedCopyright
  Label:
  Group: Ab
  Data: <i>Copyright of ICSE: International Conference on Software Engineering is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract.</i> (Copyright applies to all Abstracts.)
PLink https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=egs&AN=185196068
RecordInfo BibRecord:
  BibEntity:
    Identifiers:
      – Type: doi
        Value: 10.1109/ICSE48619.2023.00098
    Languages:
      – Code: eng
        Text: English
    PhysicalDescription:
      Pagination:
        PageCount: 13
        StartPage: 1084
    Subjects:
      – SubjectFull: Error-correcting codes
        Type: general
      – SubjectFull: C (Computer program language)
        Type: general
      – SubjectFull: Debugging
        Type: general
      – SubjectFull: Facebook (Web resource)
        Type: general
      – SubjectFull: Github Inc.
        Type: general
    Titles:
      – TitleFull: Detecting Exception Handling Bugs in C++ Programs.
        Type: main
  BibRelationships:
    HasContributorRelationships:
      – PersonEntity:
          Name:
            NameFull: Zhang, Hao
      – PersonEntity:
          Name:
            NameFull: Luo, Ji
      – PersonEntity:
          Name:
            NameFull: Hu, Mengze
      – PersonEntity:
          Name:
            NameFull: Yan, Jun
      – PersonEntity:
          Name:
            NameFull: Zhang, Jian
      – PersonEntity:
          Name:
            NameFull: Qiu, Zongyan
    IsPartOfRelationships:
      – BibEntity:
          Dates:
            – D: 01
              M: 05
              Text: 2023
              Type: published
              Y: 2023
          Titles:
            – TitleFull: ICSE: International Conference on Software Engineering
              Type: main
ResultId 1