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

Commit fa462e8c authored by Steven Moreland's avatar Steven Moreland
Browse files

Binder: small failed transactions can be due to size

The error message here is a bit misleading. Big transactions are
likely to fill the buffer and cause an overflow, but many small
transactions can too.

Bug: N/A
Test: N/A
Change-Id: Id174214397b4ed4dd734908b395d426ce6a09de4
parent 4db55d2f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -873,7 +873,7 @@ void signalExceptionForError(JNIEnv* env, jobject obj, status_t err,
            const char* exceptionToThrow;
            char msg[128];
            // TransactionTooLargeException is a checked exception, only throw from certain methods.
            // FIXME: Transaction too large is the most common reason for FAILED_TRANSACTION
            // TODO(b/28321379): Transaction size is the most common cause for FAILED_TRANSACTION
            //        but it is not the only one.  The Binder driver can return BR_FAILED_REPLY
            //        for other reasons also, such as if the transaction is malformed or
            //        refers to an FD that has been closed.  We should change the driver
@@ -891,7 +891,8 @@ void signalExceptionForError(JNIEnv* env, jobject obj, status_t err,
                        ? "android/os/DeadObjectException"
                        : "java/lang/RuntimeException";
                snprintf(msg, sizeof(msg) - 1,
                        "Transaction failed on small parcel; remote process probably died");
                         "Transaction failed on small parcel; remote process probably died, but "
                         "this could also be caused by running out of binder buffer space");
            }
            jniThrowException(env, exceptionToThrow, msg);
        } break;