diff options
author | Yurii Zubrytskyi <zyy@google.com> | 2020-04-09 19:22:30 -0700 |
---|---|---|
committer | Yurii Zubrytskyi <zyy@google.com> | 2020-04-10 13:47:54 -0700 |
commit | 86321400385172e6bb938d53ce733f1fd7984b20 (patch) | |
tree | bffa46708212f84d6e0e0d2abf5c78c7273cf708 /services/incremental/BinderIncrementalService.cpp | |
parent | da208016d65c331218ed3a1acd2f45d5ca4ce006 (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.cpp | 12 |
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) { |