Merge "libhwui: RenderThread: fix UAF" into sc-dev

This commit is contained in:
Steven Moreland
2021-04-02 21:19:27 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 5 deletions

View File

@@ -153,10 +153,11 @@ JVMAttachHook RenderThread::getOnStartHook() {
} }
RenderThread& RenderThread::getInstance() { RenderThread& RenderThread::getInstance() {
// This is a pointer because otherwise __cxa_finalize [[clang::no_destroy]] static sp<RenderThread> sInstance = []() {
// will try to delete it like a Good Citizen but that causes us to crash sp<RenderThread> thread = sp<RenderThread>::make();
// because we don't want to delete the RenderThread normally. thread->start("RenderThread");
static RenderThread* sInstance = new RenderThread(); return thread;
}();
gHasRenderThreadInstance = true; gHasRenderThreadInstance = true;
return *sInstance; return *sInstance;
} }
@@ -171,7 +172,6 @@ RenderThread::RenderThread()
, mFunctorManager(WebViewFunctorManager::instance()) , mFunctorManager(WebViewFunctorManager::instance())
, mGlobalProfileData(mJankDataMutex) { , mGlobalProfileData(mJankDataMutex) {
Properties::load(); Properties::load();
start("RenderThread");
} }
RenderThread::~RenderThread() { RenderThread::~RenderThread() {

View File

@@ -171,6 +171,7 @@ private:
friend class android::uirenderer::WebViewFunctor; friend class android::uirenderer::WebViewFunctor;
friend class android::uirenderer::skiapipeline::VkFunctorDrawHandler; friend class android::uirenderer::skiapipeline::VkFunctorDrawHandler;
friend class android::uirenderer::VectorDrawable::Tree; friend class android::uirenderer::VectorDrawable::Tree;
friend class sp<RenderThread>;
RenderThread(); RenderThread();
virtual ~RenderThread(); virtual ~RenderThread();