From 859b6ef7fbdbed68fe84617281f200852b759b02 Mon Sep 17 00:00:00 2001 From: Keith Mok Date: Wed, 13 Jul 2016 14:45:16 -0700 Subject: Fix random crash in libhwui On some cases (noticed from log) that there is a crash in libhwui.so, future debug log shows that the light center position values are nan, causing an out of bound access in hull function in SpotShadow.cpp for parameter retPoly which assume to be of maximum length of pointsLength only but not the case when all points are nan. More log shows that a Snapshot was created (new) without mRelativeLightCenter begin set, and Layer.cpp trying to use it by calling updateLightPosFromRenderer. Those values are random values in stack which causing math calc based on that value returning nan also. Initialize mRelativeLightCenter to 0 in Snapshot.cpp to avoid the problem. FEIJ-1515, FEIJ-1573, FEIJ-1575, FEIJ-1589 Change-Id: I9e24f6f1f856d053d09db1b1aae100f219f2a6de (cherry picked from commit de7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866) --- libs/hwui/Snapshot.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/hwui/Snapshot.cpp b/libs/hwui/Snapshot.cpp index beb2e1d0481..3da3a572fd0 100644 --- a/libs/hwui/Snapshot.cpp +++ b/libs/hwui/Snapshot.cpp @@ -40,6 +40,7 @@ Snapshot::Snapshot() , mClipArea(&mClipAreaRoot) { transform = &mTransformRoot; region = nullptr; + mRelativeLightCenter.x = mRelativeLightCenter.y = mRelativeLightCenter.z = 0; } /** -- cgit v1.2.3