[PATCH libevdev] In debug mode, print the events libevdev processes

Benjamin Tissoires benjamin.tissoires at gmail.com
Tue Mar 18 07:40:09 PDT 2014


On Mon, Mar 17, 2014 at 10:51 PM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> Sometimes bugs are really hard to reproduce with an external reader.
> Putting a printf statement into the caller can be useful, but doesn't
> necessarily reflect the actual events libevdev handles internally.
>
> Thus, in debug mode, print exactly the event we're dealing with.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> I'm a bit in two minds about this, feedback appreciated.

I would *not* be in favor of including this:
- this will introduce far too much debug output to be able to get the
right information at the right place. When debugging the SYN_DROPPED
on synaptics, I had to add many debug outputs at different places
around the code, but I removed the ones which hinders the more
interesting ones. But still, I was not in the remote debugging use
case.
- it might be borderline or completely of topic, but couldn't it be
considered as a security flaw? (having all the key events in the debug
output will catch passwd and other funny things...)
- the kernel allow us to do that, _but_ the debug api is dynamic (you
can say: activate dbg in file.c at line 333, and even a line range),
and you have to be root to set those debugging outputs

This is only my opinion and I can also see the interest of having that.
I would agree more if we disable this at compile time, and give to
people experiencing this problem a compile flag or even a binary to
activate these debug outputs.

Cheers,
Benjamin

>
>  libevdev/libevdev.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
> index 0730d99..84d9195 100644
> --- a/libevdev/libevdev.c
> +++ b/libevdev/libevdev.c
> @@ -915,6 +915,11 @@ libevdev_next_event(struct libevdev *dev, unsigned int flags, struct input_event
>                         dev->queue_nsync--;
>                         sanitize_event(dev, &e);
>                         update_state(dev, &e);
> +                       log_dbg("internal sync event type %s (%d) code %s (%d) value %d\n",
> +                               libevdev_event_type_get_name(e.type), e.type,
> +                               libevdev_event_code_get_name(e.type, e.code), e.code,
> +                               e.value);
> +
>                 }
>
>                 dev->sync_state = SYNC_NONE;
> @@ -944,6 +949,12 @@ libevdev_next_event(struct libevdev *dev, unsigned int flags, struct input_event
>                 if (queue_shift(dev, ev) != 0)
>                         return -EAGAIN;
>
> +               log_dbg("%sevent type %s (%d) code %s (%d) value %d\n",
> +                       (flags & LIBEVDEV_READ_FLAG_SYNC) ? "sync " : "",
> +                       libevdev_event_type_get_name(ev->type), ev->type,
> +                       libevdev_event_code_get_name(ev->type, ev->code), ev->code,
> +                       ev->value);
> +
>                 sanitize_event(dev, ev);
>                 update_state(dev, ev);
>
> --
> 1.8.5.3
>
> _______________________________________________
> Input-tools mailing list
> Input-tools at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/input-tools


More information about the Input-tools mailing list