From 19f22745aa0fa2344850bac3234460add9d94c4e Mon Sep 17 00:00:00 2001 From: Mattias Petersson Date: Fri, 5 Nov 2010 08:25:38 +0100 Subject: 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(+) (limited to 'core') diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index c9df567..1db8f68 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(); -- cgit v1.1