summaryrefslogtreecommitdiff
path: root/services/incremental/BinderIncrementalService.cpp
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2020-04-09 19:22:30 -0700
committerYurii Zubrytskyi <zyy@google.com>2020-04-10 13:47:54 -0700
commit86321400385172e6bb938d53ce733f1fd7984b20 (patch)
treebffa46708212f84d6e0e0d2abf5c78c7273cf708 /services/incremental/BinderIncrementalService.cpp
parentda208016d65c331218ed3a1acd2f45d5ca4ce006 (diff)
[incfs] Fix a crash in worker thread calling JNI
Worker thread has to initialize JNI separately to be able to call into managed binders implemented in the same system_server process, e.g. DataLoaderManager Bug: 153513507 Test: adb install megacity.nov4.apk; adb install megacity.v4.apk Change-Id: I668e8664361cd2fb3353ec50efd689c7d613658f
Diffstat (limited to 'services/incremental/BinderIncrementalService.cpp')
-rw-r--r--services/incremental/BinderIncrementalService.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/services/incremental/BinderIncrementalService.cpp b/services/incremental/BinderIncrementalService.cpp
index ebebf606b1cc..fc8c6feac22b 100644
--- a/services/incremental/BinderIncrementalService.cpp
+++ b/services/incremental/BinderIncrementalService.cpp
@@ -58,10 +58,10 @@ static bool incFsValid(const sp<IVold>& vold) {
return true;
}
-BinderIncrementalService::BinderIncrementalService(const sp<IServiceManager>& sm)
- : mImpl(RealServiceManager(sm), getIncrementalDir()) {}
+BinderIncrementalService::BinderIncrementalService(const sp<IServiceManager>& sm, JNIEnv* env)
+ : mImpl(RealServiceManager(sm, env), getIncrementalDir()) {}
-BinderIncrementalService* BinderIncrementalService::start() {
+BinderIncrementalService* BinderIncrementalService::start(JNIEnv* env) {
if (!incFsEnabled()) {
return nullptr;
}
@@ -81,7 +81,7 @@ BinderIncrementalService* BinderIncrementalService::start() {
return nullptr;
}
- sp<BinderIncrementalService> self(new BinderIncrementalService(sm));
+ sp<BinderIncrementalService> self(new BinderIncrementalService(sm, env));
status_t ret = sm->addService(String16{getServiceName()}, self);
if (ret != android::OK) {
return nullptr;
@@ -290,8 +290,8 @@ binder::Status BinderIncrementalService::waitForNativeBinariesExtraction(int sto
} // namespace android::os::incremental
-jlong Incremental_IncrementalService_Start() {
- return (jlong)android::os::incremental::BinderIncrementalService::start();
+jlong Incremental_IncrementalService_Start(JNIEnv* env) {
+ return (jlong)android::os::incremental::BinderIncrementalService::start(env);
}
void Incremental_IncrementalService_OnSystemReady(jlong self) {
if (self) {