Yangfan Zhou1 Xinyu Chen1 Michael R. Lyu1 Jiangchuan Liu2
1Department of Computer Science and Engineering, The Chinese University of Hong Kong
2School of Computing Science, Simon Fraser University

Wireless Sensor Network (WSN) applications are typically
event-driven. While the source codes of these applications
may look simple, they are in fact executed with
a complicated concurrency model, which frequently introduces
software bugs, in particular, transient bugs. Such
buggy logics may only be triggered by some occasionally interleaved
events that bear implicit dependency, but can lead
to fatal system failures. Unfortunately, these deeply-hidden
bugs or even their buggy symptoms can hardly identified by
state-of-the-art debugging tools, and manual identification
from massive running traces can be prohibitively expensive.
In this paper, we present Sentomist (Sensor application
anatomist), a novel tool for identifying potential
transient bugs in WSN applications. The Sentomist design
is based on a key observation that transient bugs make
the behaviors of aWSN system deviate from the normal, and
thus outliers (i.e., abnormal behaviors) are good indicators
of potential bugs. Sentomist introduces the notion
of event-handling interval to systematically anatomize the
long-term execution history of an event-driven WSN system
into groups of intervals. It then applies a customized outlier
detection algorithm to quickly identify and rank abnormal
intervals. This dramatically reduces the human efforts of
inspection (otherwise, we have to manually check tremendous
data samples if with brute-force inspection) and thus
greatly speeds up debugging.
We have implemented and released Sentomist
based on the concurrency model of TinyOS. We apply
Sentomist to test a series of representative real-life
WSN applications that contain transient bugs. These bugs,
though caused by complicated interactions that can hardly
be predicted during the programming.
Sentomist:
Unveiling Transient Sensor Network Bugs via Symptom Mining
In Proc. of The 30th IEEE International Conference on Distributed Computing Systems,
Yangfan Zhou, Xinyu Chen, Michael R. Lyu and Jiangchuan Liu
Sentomist will be merged to its sister project Sengraphy later. No further stand-alone release will be provided.
This tool is not just for selling a paper. :) We are actively improving Sentomist currently.
And there is still much mork to do to generate the 1.0 release :(
1. A more friendly interface
2. Complete the user manual (please give us some time to compile it. Documentation is more painful than coding :).
sentomist_0.44.zip released on 26-Jan-2010.
New features of the release compared with the 0.42 version:
1. Some minor changes of the user interface
2. Project will not be saved automatically before simulation
3. Fix some bugs and memory leaks
4. Include the java binary codes (.class) so that you don't need to compile Sentomist by yourself before using it
sentomist-src_0.42.zip released on 14-Jan-2010.
New features of the release compared with the 0.4 version:
1. The GUI is improved. It's a bit more friendly.
2. Add a checkbox to control the outlier output for showing detailed function call sequences
3. Add a "compare" function for facilitating trouble-shooting. We can now select two event procedure, right-click the mouse, and select "compare"
to see what are the differences between their behaviours.
Thank Adam and for his various suggestions. Thank Yunhao Liu for enlighting us in improving the interface during his visit to CUHK.
sentomist-src_0.4.zip released on 26-Dec-2009.
New features of the release compared with the 0.2 version:
1. A GUI is implemented. It is no longer necessary to load Sentomist in command line with complicated parameters.
2. The behaviours of the outliers are represented with the funtion call sequences for facilitating trouble-shooting.
3. The speed of the Sentomist monitor is greatly improved.
sentomist-src_0.2.zip released for reference only.
This is the prototype version (without GUI) that can work. The idea and the algorithms are similar to v0.4. The interface is command line interface and things inside are ugly actually.
We would like to thank Mr. Wujie Zheng for various discussions that help shape this work.