Self-Recovery in Server Programs

被引:0
作者
Nagarajan, Vijay [1 ]
Jeffrey, Dennis [1 ]
Gupta, Rajiv [1 ]
机构
[1] Univ Calif Riverside, CSE Dept, Riverside, CA 92521 USA
来源
ISMM'09: PROCEEDINGS OF THE 2009 ACM SIGPLAN INTERNATIONAL SYMPOSIUM ON MEMORY MANAGEMENT | 2009年
关键词
self cleansing; self recovery; memory propagation;
D O I
暂无
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
It is important that long running server programs retain availability amidst software failures. However, server programs do fail and one of the important causes of failures in server programs is due to memory errors. Software bugs in the server code like buffer overflows, integer overflows, etc. are exposed by certain user requests, leading to memory corruption, which can often result in crashes. One safe way of recovering from these crashes is to periodically checkpoint program state and rollback to the most recent checkpoint on a crash. However, checkpointing program state periodically can be quite expensive. Furthermore, since recovery can involve the rolling back of considerable state information in addition to replay of several benign user requests, the throughput and response time of the server can be reduced significantly during rollback recovery. In this paper, we first conducted a detailed study to see how memory corruption propagates in server programs. Our study shows that memory locations that are corrupted during the processing of an user request, generally do not propagate across user requests. On the contrary, the memory locations that are corrupted are generally cleansed automatically, as memory (stack or the heap) gets deallocated or when memory gets overwritten with uncorrupted values. This self cleansing property in server programs led us to believe that recovering from crashes does not necessarily require the expensive roll back of state for recovery. Motivated by this observation, we propose SRS, a technique for self recovery in server programs which takes advantage of self-cleansing to recover from crashes. Those memory locations that are not fully cleansed are restored in a demand driven fashion, which makes SRS very efficient. Thus in SRS, when a crash occurs instead of rolling back to a safe state, the crash is suppressed and the program is made to execute forwards past the crash; we employ a mechanism called crash suppression, to prevent further crashes from recurring as the execution proceeds forwards. Experiments conducted on real world server programs with real bugs, show that in each of the cases the server program could efficiently recover from the crash and the faulty user request was isolated from future benign user requests.
引用
收藏
页码:49 / 58
页数:10
相关论文
共 31 条
  • [1] [Anonymous], NDSS
  • [2] [Anonymous], S REL DISTR SOFTW DA
  • [3] [Anonymous], HPCA
  • [4] An infrastructure for adaptive dynamic optimization
    Bruening, D
    Garnett, T
    Amarasinghe, S
    [J]. CGO 2003: INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION, 2003, : 265 - 275
  • [5] Candea G, 2004, USENIX Association Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDE '04), P31
  • [6] CHENG W, 2006, TAINTTRACE EFFICIENT, P749
  • [7] Crandall J. R., 2006, ACM Transactions on Architecture and Code Optimization, V3, P359, DOI 10.1145/1187976.1187977
  • [8] Dalton M, 2007, CONF PROC INT SYMP C, P482, DOI 10.1145/1273440.1250722
  • [9] Edward Suh G., 2004, ACM Sigplan Notices, DOI DOI 10.1145/1037187.1024404
  • [10] Rx: Treating bugs method to, survive as allergies - A safe software failures
    Qin, Feng
    Tucek, Joseph
    Zhou, Yuanyuan
    Sundaresan, Jagadeesan
    [J]. ACM TRANSACTIONS ON COMPUTER SYSTEMS, 2007, 25 (03):