diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-25 23:20:01 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-25 23:20:01 +0000 |
commit | 233ca2a433b410abe1a22ef995338ad831556977 (patch) | |
tree | f6096d0557f78d20e25561ad2a4e8b00a7d9993b | |
parent | 7e6a6a67170fc1e60c584430ab21a6f8969b7e5d (diff) | |
parent | 4830cd6ad9d045f6aefd134e41822c570067605d (diff) | |
download | native-233ca2a433b410abe1a22ef995338ad831556977.tar.gz |
Snap for 8866741 from 4830cd6ad9d045f6aefd134e41822c570067605d to tm-d1-release
Change-Id: I56b4b95044395a513706d37ef8c9c0c24c810155
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 6a17cd8881..d6f665aa5d 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -6620,8 +6620,13 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenCommon( 1 /* layerCount */, usage, "screenshot"); const status_t bufferStatus = buffer->initCheck(); - LOG_ALWAYS_FATAL_IF(bufferStatus != OK, "captureScreenCommon: Buffer failed to allocate: %d", - bufferStatus); + if (bufferStatus != OK) { + // Animations may end up being really janky, but don't crash here. + // Otherwise an irreponsible process may cause an SF crash by allocating + // too much. + ALOGE("%s: Buffer failed to allocate: %d", __func__, bufferStatus); + return ftl::yield<FenceResult>(base::unexpected(bufferStatus)).share(); + } const std::shared_ptr<renderengine::ExternalTexture> texture = std::make_shared< renderengine::impl::ExternalTexture>(buffer, getRenderEngine(), renderengine::impl::ExternalTexture::Usage:: |