From 19f22745aa0fa2344850bac3234460add9d94c4e Mon Sep 17 00:00:00 2001 From: Mattias Petersson Date: Fri, 5 Nov 2010 08:25:38 +0100 Subject: [PATCH] Prevent system crash when OOM in Binder thread. When handling large images during an update of a widget, we can run out of memory in the Binder thread. This will cause an OutOfMemoryError to be thrown. When an Error is thrown in the Binder thread, the entire system will crash. This was fixed by catching this OutOfMemoryError and instead throw a RuntimeException to keep the system alive. Change-Id: If27199676c6f8aef23fb249be1197ca5dfe0fe99 --- core/java/android/os/Binder.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index c9df5671ddf2f..1db8f68e11c7c 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -292,6 +292,10 @@ public class Binder implements IBinder { } catch (RuntimeException e) { reply.writeException(e); res = true; + } catch (OutOfMemoryError e) { + RuntimeException re = new RuntimeException("Out of memory", e); + reply.writeException(re); + res = true; } reply.recycle(); data.recycle();