[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#690826: libx11-6: XIM support routine creates bogs timestamp (confuses gdk, rendering thunderbird and firefox unusable.)



Package: libx11-6
Version: 2:1.5.0-1
Severity: normal
Tags: l10n

Dear Maintainer,
*** Please consider answering these questions, where appropriate ***

   * What led up to the situation?
   Using XIM engine to input Japanese and Chinese caused events with bogus
(uninitialized) timestamps in
   X events. [This seems to have been ignored by many applications and
libraries in the past. However, starting gdk 2 and 3, I think, in the last 18
months or so, the timestamp check is severe and gdk library stores this bogus
timestamp for further processing. If the bogus timestamp is well into the
future, we have a problem.
A typical symptom is that the pulldown menus are no longer usable in mozilla
firefox and thunderbird.

Please see the mozilla bugzilla entry:
Using XIM with Firefox will cause firefox menu cannot popup correctly.
https://bugzilla.mozilla.org/show_bug.cgi?id=787943


Also, an earlier report of the problem of seeing bogus time stamp here.

The returning event of XNextEvent() has incorrect timestamp
https://bugs.freedesktop.org/show_bug.cgi?id=39367

Some other programs definitely are affected:
Should reject future timestamp.
https://bugzilla.gnome.org/show_bug.cgi?id=654831

Although it is not clear from the exchanges in the above URL, I think the root
cause of the problem
is the problem reported here.


   * What exactly did you do (or not do) that was effective (or
     ineffective)?

  Typing Japanese character strings into thunderbird, and then switches to
another gnome-termnal console and type some Japanese string there. Then switch
back to the thunderbird compose window (for new message) and
then series of XEvents with bogus timestamps are generated. Depending on the
particular value (picked up
from stack without initialization), GDK's event handling subsequently will be
screwed up :-(


   * What was the outcome of this action?

Timing related processing may be badly affected in some applications which
depend on the (bogus) timestamp recorded in GDK library data structure. For
example, pull down menu no longer can be displayed in thunderbird and firefox.

   * What outcome did you expect instead?

  Correct XEvent processing.

Patch below to libx11 source of debian.

Of course, you would want to remove fprintf lines, but if you want, that is
where you can dump the
incorrect time stamp values (before setting the proper values, that is).
The path in imTrans.c has not been executed in my environment so far (testing
for a few days now), but
I include the patch for completeness's sake.

diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
index cf75919..d82c990 100644
--- a/modules/im/ximcp/imDefLkup.c
+++ b/modules/im/ximcp/imDefLkup.c
@@ -713,6 +728,12 @@ _XimCommitRecv(
     ev.keycode = 0;
     ev.state = 0;

+    ev.time = 0L;
+    ev.serial = LastKnownRequestProcessed(im->core.display);
+    /* FIXME */
+    fprintf(stderr,"%s,%d: putback k press   FIXED ev.time=0 ev.serial=%lu\n",
__FILE__, __LINE__, ev.serial);
+
+
     XPutBackEvent(im->core.display, (XEvent *)&ev);

     return True;
diff --git a/modules/im/ximcp/imTrans.c b/modules/im/ximcp/imTrans.c
index 0ac08aa..45fab87 100644
--- a/modules/im/ximcp/imTrans.c
+++ b/modules/im/ximcp/imTrans.c
@@ -228,6 +228,12 @@ _XimTransInternalConnection(
     kev->display = im->core.display;
     kev->window = spec->window;
     kev->keycode = 0;
+    /* FIXME */
+    kev->time = 0L;
+    kev->serial = LastKnownRequestProcessed(im->core.display);
+    fprintf(stderr,"%s,%d: putback FIXED kev->time=0 kev->serial=%lu\n",
__FILE__, __LINE__, kev->serial);
+
+
     XPutBackEvent(im->core.display, &ev);
     XFlush(im->core.display);
     spec->is_putback = True;

*** End of the template - remove these lines ***



-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.39-2-686-pae (SMP w/1 CPU core)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libx11-6 depends on:
ii  libc6              2.13-35
ii  libx11-data        2:1.5.0-1
ii  libxcb1            1.8.1-1
ii  multiarch-support  2.13-35

libx11-6 recommends no packages.

libx11-6 suggests no packages.

-- no debconf information


Reply to: