multi-touch-dev team mailing list archive
-
multi-touch-dev team
-
Mailing list archive
-
Message #00880
"frequently send multitouch events" leads to X crash.
Hi, folks,
I have a simple app which emulate multitouch events by send continous MT
event to /dev/input/eventX (that file related with real touch device.), but
after a while, that would lead to the X crash.
Even I already reduce the frequency to 3 times per second, or even one per
second, those events sent to /dev/input/eventX as below (send the whole
sequence 3/s or 1/s and wait for several mins):
/* emulate finger 1*/
event.type = EV_ABS;
event.code = ABS_MT_TRACKING_ID;
event.value = 1;
write(fd, &event, sizeof(struct input_event));
event.type = EV_ABS;
event.code = ABS_MT_POSITION_X;
event.value = 1000;
write(fd, &event, sizeof(struct input_event));
event.type = EV_ABS;
event.code = ABS_MT_POSITION_Y;
event.value = 1000;
write(fd, &event, sizeof(struct input_event));
event.type = EV_SYN;
event.code = SYN_MT_REPORT;
event.value = 0;
write(fd, &event, sizeof(struct input_event));
/* emulate finger 2*/
...
event.type = EV_SYN;
event.code = SYN_REPORT;
event.value = 0;
write(fd, &event, sizeof(struct input_event));
I can read back those events from the /dev/input/eventX by evtest.
After several mins (at most 15 mins), the X crash with many info in log
like:
[ 3967.109] (EE) libmtdev sent SYN_MT_REPORT(EE) libmtdev sent
SYN_MT_REPORT(EE)
(many many "(EE) libmtdev sent SYN_MT_REPORT").
Some backtrace like:
Fatal server error:
[ 4054.156] Wrong event type 0.
and
[ 4054.194] 0: /usr/bin/Xorg (xorg_backtrace+0x3c) [0x809c4cc]
[ 4054.194] 1: /usr/bin/Xorg (0x8047000+0x64396) [0x80ab396]
[ 4054.195] 2: (vdso) (__kernel_rt_sigreturn+0x0) [0xb777640c]
[ 4054.195] 3: /usr/lib/libmtdev.so.1 (mtdev_empty+0xd) [0xb5cacc0d]
[ 4054.195] 4: /usr/lib/libmtdev.so.1 (mtdev_get+0x63) [0xb5cacce3]
But interface with touchpanel with real fingers doesn't lead to this issue.
Anything wrong with above emulation steps?
Follow ups