Chromium Code Reviews| Index: ui/ozone/platform/drm/common/client_native_pixmap_dmabuf.cc |
| diff --git a/ui/ozone/platform/drm/common/client_native_pixmap_dmabuf.cc b/ui/ozone/platform/drm/common/client_native_pixmap_dmabuf.cc |
| index 7dbb1d481a628d26765811c099b8534a0bba51e5..85ecd31cdfffe70c74d04372919cd0d9160ca76d 100644 |
| --- a/ui/ozone/platform/drm/common/client_native_pixmap_dmabuf.cc |
| +++ b/ui/ozone/platform/drm/common/client_native_pixmap_dmabuf.cc |
| @@ -10,8 +10,10 @@ |
| #include <sys/mman.h> |
| #include <xf86drm.h> |
| +#include "base/debug/crash_logging.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/process/memory.h" |
| +#include "base/strings/stringprintf.h" |
| #include "base/trace_event/trace_event.h" |
| #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) |
| @@ -80,8 +82,22 @@ ClientNativePixmapDmaBuf::ClientNativePixmapDmaBuf( |
| data_ = mmap(nullptr, map_size, (PROT_READ | PROT_WRITE), MAP_SHARED, |
| dmabuf_fd_.get(), 0); |
| if (data_ == MAP_FAILED) { |
| - PLOG(ERROR) << "Failed mmap()."; |
| - base::TerminateBecauseOutOfMemory(map_size); |
| + logging::SystemErrorCode mmap_error = logging::GetLastSystemErrorCode(); |
|
reveman
2017/02/24 00:46:18
nit: please add a TODO comment with a bug referenc
Daniele Castagna
2017/02/24 01:18:21
Done.
|
| + bool fd_valid = fcntl(dmabuf_fd_.get(), F_GETFD) != -1 || |
| + logging::GetLastSystemErrorCode() != EBADF; |
| + std::string mmap_params = base::StringPrintf( |
| + "(addr=nullptr, length=%zu, prot=(PROT_READ | PROT_WRITE), " |
| + "flags=MAP_SHARED, fd=%d[valid=%d], offset=0)", |
| + map_size, dmabuf_fd_.get(), fd_valid); |
| + base::debug::ScopedCrashKey params_crash_key("mmap_params", mmap_params); |
| + base::debug::ScopedCrashKey size_crash_key("buffer_size", size.ToString()); |
| + base::debug::ScopedCrashKey errno_crash_key( |
| + "errno", logging::SystemErrorCodeToString(mmap_error)); |
| + if (mmap_error == ENOMEM) { |
| + base::TerminateBecauseOutOfMemory(map_size); |
| + } else { |
|
reveman
2017/02/24 00:46:18
nit: remove else as base::TerminateBecauseOutOfMem
Daniele Castagna
2017/02/24 01:18:21
Done.
|
| + CHECK(false) << "Failed to mmap dmabuf."; |
| + } |
| } |
| } |