我们有以下代码有时会抛出 java.lang.IllegalMonitorStateException: unlock of unowned monitor
Runtime run = Runtime.getRuntime();
Process p = run.exec(SOME_COMMAND);
此代码在应用程序启动时很早就执行。
如果我手动启动应用程序,它工作正常。我从未见过它有任何问题(对于数百次发射)。
但是,当它作为测试自动化的一部分启动时,有时此代码会因该异常而失败。我们的测试自动化执行以下操作:
- 安装我们的应用程序
- 立即启动
- 执行一些测试
- 卸载应用
- 再次安装应用
- 再次启动它
这是崩溃的堆栈跟踪。
11-14 14:59:26.675: W/dalvikvm(3788): threadid=12: thread exiting with uncaught exception (group=0xb4120180)
11-14 14:59:26.675: E/AndroidRuntime(3788): FATAL EXCEPTION: SomeThread
11-14 14:59:26.675: E/AndroidRuntime(3788): java.lang.IllegalMonitorStateException: unlock of unowned monitor
11-14 14:59:26.675: E/AndroidRuntime(3788): at java.lang.ProcessManager.exec(ProcessManager.java:229)
11-14 14:59:26.675: E/AndroidRuntime(3788): at java.lang.Runtime.exec(Runtime.java:168)
11-14 14:59:26.675: E/AndroidRuntime(3788): at java.lang.Runtime.exec(Runtime.java:241)
11-14 14:59:26.675: E/AndroidRuntime(3788): at java.lang.Runtime.exec(Runtime.java:184)
11-14 14:59:26.675: E/AndroidRuntime(3788): at aaa.SomeThread.run(SomeThread.java:41)
我感谢任何想法或信息。