ACM Home Page
Please provide us with feedback. Feedback
Self-recovery in server programs
Full text PdfPdf (537 KB)
Source
International Symposium on Memory Management archive
Proceedings of the 2009 international symposium on Memory management table of contents
Dublin, Ireland
SESSION: Paper session 2 table of contents
Pages 49-58  
Year of Publication: 2009
ISBN:978-1-60558-347-1
Authors
Vijay Nagarajan  University of California, Riverside, Riverside, CA, USA
Dennis Jeffrey  University of California, Riverside, Riverside, CA, USA
Rajiv Gupta  University of California, Riverside, Riverside, CA, USA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 16,   Downloads (12 Months): 59,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1542431.1542439
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
mysql bug. bugs.mysql.com/bug.php?id=110.
 
2
National vulnerability database. http://nvd.nist.gov/statistics.cfm.
 
3
 
4
 
5
 
6
JaeWoong Chung, Michael Dalton, Hari Kannan, and Christos Kozyrakis. Thread-safe binary translation using transactional memory. In HPCA, 2008.
7
8
 
9
Jim Gray. Why do computers stop and what can be done about it? In Symposium on Reliability in Distributed Software and Database Systems, pages 3--12, 1986.
 
10
Shan Lu, Zhenmin Li, Feng Qin, Lin Tan, Pin Zhou, and Yuanyuan Zhou. Bugbench: A benchmark for evaluating bug detection tools. In Bugs, 2005.
 
11
12
13
14
 
15
James Newsome and Dawn Song. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In NDSS, 2005.
 
16
 
17
 
18
19
 
20
21
22
 
23
 
24
 
25
 
26
27
 
28
29
 
30
31
 
32
33

Collaborative Colleagues:
Vijay Nagarajan: colleagues
Dennis Jeffrey: colleagues
Rajiv Gupta: colleagues