跳到主要内容
10.1145/1028976.1029011acm会议文章/章节视图摘要出版物页面泼洒会议记录会议集合
第条

发现并防止运行时错误处理错误

出版:2004年10月1日 出版历史
  • 获取引文提醒
  • 摘要

    很难编写在存在运行时错误时行为正确的程序。现有的编程语言功能通常对执行清理代码和在这种异常情况下恢复不变量提供较差的支持。我们提供了一个数据流分析,用于查找特定类型的错误处理错误:那些错误是由于未能释放资源或未能正确清理所有路径而产生的。由于错误处理,许多现实世界的程序违反了此类资源安全策略。我们的流敏感分析跟踪程序路径上的未偿债务,并在出现异常时对控制流进行精确建模。使用它,我们发现了800多个错误处理错误,将近400万行Java代码。该分析是不可靠的,并产生误报,但一些简单的过滤规则足以在实践中消除它们。剩下的错误是手动验证的。这些错误会导致套接字、文件和数据库句柄沿着某些路径泄漏。我们描述了这些错误的最常见原因,并讨论了异常处理、终结器和析构函数在处理这些错误时的局限性。基于这些错误,我们提出了一种编程语言特性,该特性可以在运行时跟踪义务并确保它们被解除。最后,我们通过案例研究证明了这一特征是自然的、高效的,并且可以提高可靠性;例如,用它改造一个34kLOC程序,代码大小减少了0.5%,速度惊人地提高了17%(在出现异常时正确地释放资源),行为更加一致。

    工具书类

    [1]
    顾问。注意:10个常见的web应用程序安全风险。技术报告文档11756,安全顾问门户网站,2003年1月。
    [2]
    G.Alonso、C.Hagen、D.Agrawal、A.E.Abbadi和C.Mohan。增强工作流管理系统的容错能力。IEEE并发,8(3):74--812000年7月。
    [3]
    G.Ammons、R.Bodik和J.R.Larus。采矿规范。在2002年ACM编程语言原理研讨会上,第4-16页。
    [4]
    P.Baldwin、S.Kohli、E.A.Lee、X.Liu和Y.Zhao。托勒密二世的传感器网络建模。《传感器网络信息处理学报》,2004年4月。
    [5]
    H.-J.博姆。析构函数、终结器和同步。在ACM编程语言原理研讨会上。ACM,2003年1月。
    [6]
    A.Borg、W.Blau、W.Graetsch、F.Herrmann和W.Oberle。UNIX下的容错。美国计算机学会计算机系统学报,7(1),1989年2月。
    [7]
    A.Brown和D.Patterson。操作员撤消:构建可撤消的电子邮件存储。在2003年USENIX年度技术会议上。
    [8]
    G.Candea、M.Delgado、M.Chen和A.Fox。自动故障路径推断:一种用于互联网应用程序的通用内省技术。在IEEE互联网应用研讨会上。加利福尼亚州圣何塞,2003年6月。
    [9]
    L.Cardelli和R.Davies。用于web计算的服务组合器。软件工程,25(3):309--3161999。
    [10]
    T.卡吉尔。异常处理:错误的安全感。C++报告,6(9),1994年。
    [11]
    M.Chen、E.Kiciman、E.Fratkin、E.Brewer和A.Fox。精确定位:大型、动态互联网服务中的问题确定。可靠系统和网络国际会议,华盛顿特区,2002年。
    [12]
    F.克里斯蒂安。异常处理。技术报告RJ5724,IBM Research,1987年。
    [13]
    M.Das、S.Lerner和M.Seigle。Esp:多项式时间内的路径敏感程序验证。SIGPLAN不是。,37(5):57--68, 2002.
    [14]
    U.Dayal、M.Hsu和R.Ladin。使用触发器和事务组织长时间运行的活动。ACM SIGMOD会议记录,第204-214页。大西洋城,1990年5月。
    [15]
    R.DeLine和M.Fähndrich。在低级软件中实施高级协议。在2001年ACM编程语言设计与实现会议上,第59-69页。
    [16]
    B.Demsky和M.C.Rinard。自愈系统的自动数据结构修复。在2003年ACM面向对象编程、系统、语言和应用会议上。
    [17]
    C.多尼。一个完全面向对象的异常处理系统。《异常处理技术进展》,《计算机科学讲义》第2022卷,第18-38页,2001年。
    [18]
    D.Engler、B.Chelf、A.Chou和S.Hallem。使用特定于系统的程序员编写的编译器扩展检查系统规则。2000年操作系统设计与实现研讨会。
    [19]
    D.R.Engler、D.Y.Chen和A.Chou。错误作为异常行为:推断系统代码中错误的一般方法。在操作系统原理研讨会上,第57-72页,2001年。
    [20]
    M.Fähndrich和R.DeLine。采用和关注:命令式编程的实用线性类型。在2002年6月举行的ACM编程语言设计与实现会议上。
    [21]
    H.Garcia-Molina和K.Salem。萨加斯。在1987年ACM数据管理会议上,第249-259页。
    [22]
    D.盖伊和A.艾肯。具有显式区域的内存管理。在ACM编程语言设计与实现会议上,第313-3231998页。
    [23]
    J.B.太好了。异常处理:问题和建议的符号。ACM通讯,18(12):683--6961975。
    [24]
    J.Gosling、B.Joy和G.L.Steele。Java语言规范。Java系列。Addison Wesley,美国马萨诸塞州雷丁市,1996年。
    [25]
    J.格雷。交易概念:优点和局限性。在超大数据库国际会议上,第144-154页。法国戛纳,1981年9月。
    [26]
    C.黑根和G.阿隆索。OPERA过程支持系统中的灵活异常处理。在分布式计算系统国际会议上,第526-533页,1998年。
    [27]
    C.黑根和G.阿隆索。工作流管理系统中的异常处理。IEEE软件工程汇刊,26(9):943--9592000年9月。
    [28]
    S.Hangal和M.S.Lam。使用自动异常检测跟踪软件错误。在2002年5月举行的国际软件工程会议上。
    [29]
    G.A.基尔达尔。全局程序优化的统一方法。在第一届ACM SIGACT-SIGPLAN编程语言原理年度研讨会的会议记录中,第194-206页。ACM出版社,1973年。
    [30]
    H.F.Korth、E.Levy和A.Silberschatz。通过补偿交易进行恢复的正式方法。《VLDB杂志》,第95-106页,1990年。
    [31]
    R.莱文。异常情况处理的程序结构。卡内基·梅隆大学博士论文,1977年6月。
    [32]
    B.Liskov和R.Scheifler。守护者和行动:为强大的分布式程序提供语言支持。美国计算机学会程序设计语言与系统汇刊,5(3):381--4041983年7月。
    [33]
    C.Liu、M.E.Orlowska、X.Lin和X.Zhou。改进工作流系统中的向后恢复。在2001年4月举行的高级应用数据库系统会议上。
    [34]
    D.E.Lowell、S.Chandra和P.M.Chen。探索故障透明性和通用恢复的限制。2000年10月,在USENIX操作系统设计与实现研讨会上。
    [35]
    D.E.Lowell和P.M.Chen。折扣检查:用于一般应用程序的透明、低开销恢复。技术报告CSE-TR-410-99,密歇根大学,1998年11月。
    [36]
    R.Miller和A.Tripathi。面向对象系统中异常处理的问题。在面向对象编程,第11届欧洲会议(ECOOP),第85-103页,1997年。
    [37]
    M.Odersky和P.Wadler。披萨到Java:将理论转化为实践。在1997年ACM编程语言原理研讨会上,第146-159页。
    [38]
    M.P.Robillard和G.C.Murphy。重新控制异常处理。技术报告TR-99-14,不列颠哥伦比亚大学计算机科学系,1999年1月。
    [39]
    M.I.Seltzer、Y.Endo、C.Small和K.A.Smith。应对灾难:幸存错误的内核扩展。操作系统设计与实现研讨会,第213-227页,华盛顿州西雅图,1996年。
    [40]
    J.S.Shapiro、J.M.Smith和D.J.Farber。EROS:快速能力系统。在操作系统原理研讨会上,第170-185页,1999年。
    [41]
    SourceForge.net。关于SourceForge.net(文档A1)。http://sourceforge.net。2003年技术报告。
    [42]
    太阳微系统公司。Java宠物商店1.1.2蓝图应用程序。http://java.sun.com/blueprints/code/。2001年技术报告。
    [43]
    M.Tofte和J.-P.Talpin。基于区域的内存管理。信息与计算,1997年。
    [44]
    G.瓦莱托和G.凯撒。软件适应案例研究。2002年11月,《ACM自愈系统研讨会》(WOSS’02),第73-78页。
    [45]
    S.Yemini和D.Berry。模块化可验证异常处理机制。《美国计算机学会编程语言与系统汇刊》,7(2),1985年4月。

    引用人

    查看全部

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM会议
    OOPSLA’04:第19届ACM SIGPLAN面向对象编程、系统、语言和应用年度会议记录
    2004年10月
    462页
    国际标准图书编号:1581138318
    内政部:10.1145/1028976
    • 封面图片ACM SIGPLAN注意事项
      ACM SIGPLAN通知 第39卷第10期
      2004年OOPSLA
      2004年10月
      448页
      ISSN公司:0362-1340
      EISSN公司:1558-1160
      内政部:10.1145/1035292
      期刊目录
    如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

    赞助商

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2004年10月1日

    权限

    请求对此文章的权限。

    检查更新

    作者标记

    1. 数据流
    2. 析构器
    3. 例外
    4. 终结器
    5. 尝试地

    限定符

    • 第条

    会议

    OOPSLA04:ACM SIGPLAN面向对象编程系统和应用会议
    2004年10月24日至28日
    不列颠哥伦比亚省,加拿大温哥华

    接受率

    1244份提交文件中的总体接受率268份,22%

    即将召开的会议

    24年飞溅
    ACM SIGPLAN系统、编程、语言和应用国际会议:人文软件
    2024年10月20日至25日
    帕萨迪纳,加利福尼亚州,美国

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 下载量(最近12个月)50
    • 下载次数(最近6周)7

    其他指标

    引文

    引用人

    查看全部
    • (2024)虚拟现实课堂中基于关注点的注意网络分析方法X2016年10月10日/j.mex.2024.102662(102662)在线发布日期:2024年3月
    • (2023)ErrHunter:通过系统静态分析检测Linux内核中的错误处理错误IEEE软件工程汇刊10.1109/TSE.2022.316015549:2(684-698)在线发布日期:2023年2月1日
    • (2023)java方法中异常前提条件的轻量级精确自动提取经验软件工程2007年10月10日/10664-023-10392-x29:1在线发布日期:2023年12月26日
    • (2023)Java字节码级异常行为的推理国际FM 202310.1007/978-3-031-47705-8_7(113-133)在线发布日期:2023年11月6日
    • (2022)基于注意的图神经网络深度代码表示学习检测运行时异常2022年IEEE软件分析、进化和再工程国际会议(SANER)10.1109/SANER53432.2022.00053年(373-384)在线发布日期:2022年3月
    • (2022)抛出的是什么?Java方法中异常前提的轻量级精确自动提取2022年IEEE软件维护与发展国际会议(ICSME)10.1109/ICSME55016.2022.00038(340-351)在线发布日期:2022年10月
    • (2022)自动修复Android应用程序中的资源泄漏系统与软件杂志10.1016/j.jss.2022.111417192:C在线发布日期:2022年10月1日
    • (2021)高质量自动程序修复2021年IEEE/ACM第43届国际软件工程会议:相关会议记录(ICSE-Companion)10.1109/ICSE-公司52605.2021.00134(309-314)在线发布日期:2021年5月
    • (2021)转码第36届IEEE/ACM自动化软件工程国际会议论文集10.1109/ASE51524.2021.9678823(829-841)在线发布日期:2021年11月15日
    • (2021)以太坊智能合约中交易反转语句的特征2021年第36届IEEE/ACM自动化软件工程国际会议(ASE)10.1109/ASE51524.2021.9678597(630-641)在线发布日期:2021年11月
    • 显示更多引用者

    视图选项

    获取访问权限

    登录选项

    完全访问权限

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用联机查看电子阅读器.

    电子阅读器

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享