Preparing for the next release: call for testing

Gabriel Laskar gabriel at lse.epita.fr
Tue Mar 3 18:23:28 UTC 2015


On Wed, 25 Feb 2015 05:12:57 +0300
"Dmitry V. Levin" <ldv at altlinux.org> wrote:

> I think it's time to cut a new release.
> If you have pending patches to include before the release,
> please submit them now.

There is still an issue with ioctl request names when using strace on
Binder calls. Some binder calls have 2 possible sizes, depending of being
with the 32-bit api or the 64-bit one.

In <linux/android/binder.h>, there is a #ifdef BINDER_IPC_32BIT that
control the size of pointer values in the structures.

In 64bit mode, we have only :

ioctl(-1, BC_REQUEST_DEATH_NOTIFICATION, 0);
ioctl(-1, BC_CLEAR_DEATH_NOTIFICATION, 0);

that respond :

ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x0e, 0x10), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x0f, 0x10), 0) = -1 EBADF (Bad file descriptor)

and when asking for 32bit binder (BINDER_IPC_32BIT), lots of ioctls are failing :


#define BINDER_IPC_32BIT
#include "binder.h"

void android32()
{
	ioctl(-1, BINDER_WRITE_READ, 0);
	ioctl(-1, BINDER_SET_IDLE_TIMEOUT, 0);
	ioctl(-1, BINDER_SET_MAX_THREADS, 0);
	ioctl(-1, BINDER_SET_IDLE_PRIORITY, 0);
	ioctl(-1, BINDER_SET_CONTEXT_MGR, 0);
	ioctl(-1, BINDER_THREAD_EXIT, 0);
	ioctl(-1, BINDER_VERSION, 0);

	ioctl(-1, BR_OK, 0);
	ioctl(-1, BR_TRANSACTION, 0);
	ioctl(-1, BR_REPLY, 0);
	ioctl(-1, BR_ACQUIRE_RESULT, 0);
	ioctl(-1, BR_DEAD_REPLY, 0);
	ioctl(-1, BR_TRANSACTION_COMPLETE, 0);
	ioctl(-1, BR_INCREFS, 0);
	ioctl(-1, BR_ACQUIRE, 0);
	ioctl(-1, BR_RELEASE, 0);
	ioctl(-1, BR_DECREFS, 0);
	ioctl(-1, BR_ATTEMPT_ACQUIRE, 0);
	ioctl(-1, BR_NOOP, 0);
	ioctl(-1, BR_SPAWN_LOOPER, 0);
	ioctl(-1, BR_FINISHED, 0);
	ioctl(-1, BR_DEAD_BINDER, 0);
	ioctl(-1, BR_CLEAR_DEATH_NOTIFICATION_DONE, 0);
	ioctl(-1, BR_FAILED_REPLY, 0);

	ioctl(-1, BC_TRANSACTION, 0);
	ioctl(-1, BC_REPLY, 0);
	ioctl(-1, BC_ACQUIRE_RESULT, 0);
	ioctl(-1, BC_FREE_BUFFER, 0);
	ioctl(-1, BC_INCREFS, 0);
	ioctl(-1, BC_ACQUIRE, 0);
	ioctl(-1, BC_RELEASE, 0);
	ioctl(-1, BC_DECREFS, 0);
	ioctl(-1, BC_INCREFS_DONE, 0);
	ioctl(-1, BC_ACQUIRE_DONE, 0);
	ioctl(-1, BC_ATTEMPT_ACQUIRE, 0);
	ioctl(-1, BC_REGISTER_LOOPER, 0);
	ioctl(-1, BC_ENTER_LOOPER, 0);
	ioctl(-1, BC_EXIT_LOOPER, 0);
	ioctl(-1, BC_REQUEST_DEATH_NOTIFICATION, 0);
	ioctl(-1, BC_CLEAR_DEATH_NOTIFICATION, 0);
	ioctl(-1, BC_DEAD_BINDER_DONE, 0);
}

outputs :

ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x62, 0x01, 0x18), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_SET_IDLE_TIMEOUT, 0)   = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_SET_MAX_THREADS, 0)    = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_SET_IDLE_PRIORITY, 0)  = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_SET_CONTEXT_MGR, 0)    = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_THREAD_EXIT, 0)        = -1 EBADF (Bad file descriptor)
ioctl(-1, BINDER_VERSION, 0)            = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_OK, 0)                     = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x02, 0x28), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x03, 0x28), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_ACQUIRE_RESULT, 0)         = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_DEAD_REPLY, 0)             = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_TRANSACTION_COMPLETE, 0)   = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x07, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x08, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x09, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x0a, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x0b, 0x0c), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_NOOP, 0)                   = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_SPAWN_LOOPER, 0)           = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_FINISHED, 0)               = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_READ, 0x72, 0x0f, 0x04), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, FAT_IOCTL_GET_ATTRIBUTES, 0)  = -1 EBADF (Bad file descriptor)
ioctl(-1, BR_FAILED_REPLY, 0)           = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x00, 0x28), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x01, 0x28), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_ACQUIRE_RESULT, 0)         = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x03, 0x04), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_INCREFS, 0)                = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_ACQUIRE or CHIOSPICKER, 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_RELEASE, 0)                = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_DECREFS, 0)                = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x08, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x09, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_ATTEMPT_ACQUIRE, 0)        = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_REGISTER_LOOPER, 0)        = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_ENTER_LOOPER, 0)           = -1 EBADF (Bad file descriptor)
ioctl(-1, BC_EXIT_LOOPER, 0)            = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x0e, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x0f, 0x08), 0) = -1 EBADF (Bad file descriptor)
ioctl(-1, _IOC(_IOC_WRITE, 0x63, 0x10, 0x04), 0) = -1 EBADF (Bad file descriptor)



-- 
Gabriel Laskar




More information about the Strace-devel mailing list