From de7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866 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. Change-Id: I9e24f6f1f856d053d09db1b1aae100f219f2a6de --- libs/hwui/Snapshot.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'libs') diff --git a/libs/hwui/Snapshot.cpp b/libs/hwui/Snapshot.cpp index beb2e1d..3da3a57 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.1