Researchers have proposed a method to automatically
detect a new class of software glitches in smartphones called “no-sleep
energy bugs,” which can entirely drain batteries while the phones are not
in use.
“These energy bugs are a silent battery
killer,” said Y. Charlie Hu, a Purdue University
professor of electrical and computer engineering. “A fully charged phone
battery can be drained in as little as five hours.”
Because conserving battery power is critical for
smartphones, the industry has adopted “an aggressive sleep policy,”
he said.
“What this means is that smartphones are always
in a sleep mode, by default. When there are no active user interactions such as
screen touches, every component, including the central processor, stays off
unless an app instructs the operating system to keep it on.”
Various background operations need to be performed
while the phone is idle.
“For example, a mailer may need to automatically
update email by checking with the remote server,” Hu said.
To prevent the phone from going to sleep during such
operations, smartphone manufacturers make application programming interfaces,
or APIs, available to app developers. The developers insert the APIs into apps
to instruct the phone to stay awake long enough to perform necessary
operations.
“App developers have to explicitly juggle
different power control APIs that are exported from the operating systems of
the smartphones,” Hu said. “Unfortunately, programmers are only
human. They make mistakes when using these APIs, which leads to software bugs
that mishandle power control, preventing the phone from engaging the sleep
mode. As a result, the phone stays awake and drains the battery.”
Findings are detailed in a research paper being
presented during the 10th International Conference on Mobile Systems,
Applications and Services, or MobiSys 2012. The paper was written by doctoral
students Abhinav Pathak and Abhilash Jindal, Hu, and Samuel Midkiff, a Purdue
professor of electrical and computer engineering.
The researchers have completed the first systematic
study of the no-sleep bugs and have proposed a method for automatically
detecting them.
“We’ve had anecdotal evidence concerning these
no-sleep energy bugs, but there has not been any systematic study of them until
now,” Midkiff said.
The researchers studied 187 Android applications that
were found to contain Android’s explicit power control APIs, called
“wakelocks.” Of the 187 apps, 42 were found to contain errors—or bugs—in
their wakelock code. Findings showed the new tool accurately detected all 12
previously known instances of no-sleep energy bugs and found 30 new bugs in the
apps.
The glitch has been found in interactive apps, such as
phone applications and services for telephony on Android that must work even
though the user isn’t touching the phone.The app may fail to engage the sleep mode after the interactive session is
completed.
Smartphone users, meanwhile, don’t know that their
phones have the bugs.
“You don’t see any difference,” Hu said.
“You put it in your pocket and you think everything is fine. You take it
out, and your battery is dead.”
To detect bugs in the applications, the researchers
modified a tool called a compiler, which translates code written in computer
languages into the binary code that computers understand. The tool they
developed adds new functionality to the compiler so that it can determine where
no-sleep bugs might exist.
“The tool analyzes the binary code and
automatically and accurately detects the presence of the no-sleep bugs,”
Midkiff said.
The Purdue researchers have coined the term “power-encumbered
programming” to describe the smartphone energy bugs. Researchers
concentrated on the Android smartphone, but the same types of bugs appear to
affect other brands, Hu said.
Source: Purdue University