这个问题遇到不止一次,记下解决方法备忘。
运行稳定性脚本时框架崩溃,打印的堆栈信息如下:
查看了异常发生的位置CMDExecute.java:29,是:
if(process!=null){
参考: https://groups.google.com/forum/#!topic/android-developers/VcjXWBosQ88
http://leonmau.iteye.com/blog/1174000
运行稳定性脚本时框架崩溃,打印的堆栈信息如下:
libcore.io.ErrnoException: kill failed: ESRCH (No such process)
at libcore.io.Posix.kill(Native Method)
at libcore.io.ForwardingOs.kill(ForwardingOs.java:77)
at java.lang.ProcessManager$ProcessImpl.destroy(ProcessManager.java:257)
at sogou.test.agent.framework.sysinfo.CMDExecute.run(CMDExecute.java:29)
查看了异常发生的位置CMDExecute.java:29,是:
if(process!=null){
process.destroy();
}
发生崩溃的原因log里说的很清楚,就是被destroy的进程已经不存在了。
解决方案:
将
if(process!=null){
换成
try {
if (process != null) {
// use exitValue() to determine if process is still running.
process.exitValue();
}
} catch (IllegalThreadStateException e) {
// process is still running, kill it.
process.destroy();
}
exitValue()函数 采用非阻塞的方式返回,如果没有立即拿到返回值,则抛出异常。
发生崩溃的原因log里说的很清楚,就是被destroy的进程已经不存在了。
解决方案:
将
if(process!=null){
process.destroy();
}
换成
try {
if (process != null) {
// use exitValue() to determine if process is still running.
process.exitValue();
}
} catch (IllegalThreadStateException e) {
// process is still running, kill it.
process.destroy();
}
exitValue()函数 采用非阻塞的方式返回,如果没有立即拿到返回值,则抛出异常。
参考: https://groups.google.com/forum/#!topic/android-developers/VcjXWBosQ88
http://leonmau.iteye.com/blog/1174000