summaryrefslogtreecommitdiffstats
path: root/libril
diff options
context:
space:
mode:
authorKazuhiro Ondo <kazuhiro.ondo@motorola.com>2011-10-14 17:50:58 -0500
committerJohn Huang <jsh@google.com>2011-10-18 16:59:27 -0700
commit5cdc1354de1e1b98347fe67c5fefdb0be7e0f589 (patch)
treeb4d7c61acc42ac3a7f2962f8dcca1cd6b4689892 /libril
parentfa8d584ca7984bf7d73ff37c7c2bc1e0dfa5fb71 (diff)
downloadandroid_hardware_ril-5cdc1354de1e1b98347fe67c5fefdb0be7e0f589.tar.gz
android_hardware_ril-5cdc1354de1e1b98347fe67c5fefdb0be7e0f589.tar.bz2
android_hardware_ril-5cdc1354de1e1b98347fe67c5fefdb0be7e0f589.zip
RIL occasionally stopps event loop on phone process crash
RIL occasionally exits from its event loop due to race condition upon phone process crash. And there is no recovery mechanism provided and causing permanent cellular data loss until reset. The solution is simply to kill rild process to start over when event loop exits for some reason. Bug:5428218 Change-Id: I88a9b8e966158f0f943fe3d189d91b1352481d9b
Diffstat (limited to 'libril')
-rw-r--r--libril/ril.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/libril/ril.cpp b/libril/ril.cpp
index dec5507..7998356 100644
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -2609,6 +2609,8 @@ eventLoop(void *param) {
// Only returns on error
ril_event_loop();
LOGE ("error in event_loop_base errno:%d", errno);
+ // kill self to restart on error
+ kill(0, SIGKILL);
return NULL;
}