Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36462d9d authored by Michael Lentine's avatar Michael Lentine Committed by Android (Google) Code Review
Browse files

Merge "Add more logging for dup(fd) failure" into lmp-dev

parents a91968fd 36273c99
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@

#include <private/binder/binder_module.h>

#include <fcntl.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
@@ -1280,11 +1281,22 @@ status_t Parcel::read(FlattenableHelperInterface& val) const

    status_t err = NO_ERROR;
    for (size_t i=0 ; i<fd_count && err==NO_ERROR ; i++) {
        fds[i] = dup(this->readFileDescriptor());
        int oldfd = this->readFileDescriptor();
        fds[i] = dup(oldfd);
        if (fds[i] < 0) {
            int dupErrno = errno;
            err = BAD_VALUE;
            ALOGE("dup() failed in Parcel::read, i is %zu, fds[i] is %d, fd_count is %zu, error: %s",
                i, fds[i], fd_count, strerror(errno));
            int flags = fcntl(oldfd, F_GETFD);
            int fcntlErrno = errno;
            const flat_binder_object* flat = readObject(true);
            ALOGE("dup failed in Parcel::read, fd %zu of %zu\n"
                "  dup(%d) = %d [errno: %d (%s)]\n"
                "  fcntl(%d, F_GETFD) = %d [errno: %d (%s)]\n"
                "  flat %p type %d",
                i, fd_count,
                oldfd, fds[i], dupErrno, strerror(dupErrno),
                oldfd, flags, fcntlErrno, strerror(fcntlErrno),
                flat, flat ? flat->type : 0);
        }
    }