2013年10月15日 Solved! firefox + kinput2 = pull-down menu don't work !?
_ Solved! firefox + kinput2 = pull-down menu don't work !?
When I use kinput2 for japanese input method with firefox, pull-down menu of firefox don't work!
I have to apply a patch for libX11 and re-build it to solve a problem(see Fix bogus timestamp generated by XIM).
you can get a source of libX11 from Slackware site.
$ tar xvvf libX11-1.5.0.tar.xz $ cd libX11-1.5.0/
and you can get a patch for libX11 from here
$ cat /_somewhere_/Fix-bogus-timestamp-generated-by-XIM.patch
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
index 0a9553a..7add1f2 100644
--- a/modules/im/ximcp/imDefLkup.c
+++ b/modules/im/ximcp/imDefLkup.c
@@ -269,6 +269,8 @@ _XimForwardEventCore(
int ret_code;
INT16 len;
+ bzero(buf32, sizeof(buf32)); /* valgrind noticed uninitialized memory use! */
+
if (!(len = _XimSetEventToWire(ev, (xEvent *)&buf_s[4])))
return False; /* X event */
@@ -706,6 +708,8 @@ _XimCommitRecv(
MARK_FABRICATED(im);
+ bzero(&ev, sizeof(ev)); /* uninitialized : found when running kterm under valgrind */
+
ev.type = KeyPress;
ev.send_event = False;
ev.display = im->core.display;
@@ -713,6 +717,15 @@ _XimCommitRecv(
ev.keycode = 0;
ev.state = 0;
+ ev.time = 0L;
+ ev.serial = LastKnownRequestProcessed(im->core.display);
+ /* FIXME :
+ I wish there were COMMENTs (!) about the data passed around.
+ */
+#if 0
+ fprintf(stderr,"%s,%d: putback k press FIXED ev.time=0 ev.serial=%lu\n", __FILE__, __LINE__, ev.serial);
+#endif
+
XPutBackEvent(im->core.display, (XEvent *)&ev);
return True;
diff --git a/modules/im/ximcp/imTrans.c b/modules/im/ximcp/imTrans.c
index 4bdecb2..a8cd95e 100644
--- a/modules/im/ximcp/imTrans.c
+++ b/modules/im/ximcp/imTrans.c
@@ -222,12 +222,20 @@ _XimTransInternalConnection(
if (spec->is_putback)
return;
+
+ bzero(&ev, sizeof(ev)); /* FIXME: other fields may be accessed, too. */
kev = (XKeyEvent *)&ev;
kev->type = KeyPress;
kev->send_event = False;
kev->display = im->core.display;
kev->window = spec->window;
kev->keycode = 0;
+ kev->time = 0L;
+ kev->serial = LastKnownRequestProcessed(im->core.display);
+#if 0
+ fprintf(stderr,"%s,%d: putback FIXED kev->time=0 kev->serial=%lu\n", __FILE__, __LINE__, kev->serial);
+#endif
+
XPutBackEvent(im->core.display, &ev);
XFlush(im->core.display);
spec->is_putback = True;
apply a patch and rebuild libX11!
$ patch -p1 </_somewhere_/Fix-bogus-timestamp-generated-by-XIM.patch $ export LC_ALL=ja_JP.UTF-8 $ export LANG=ja_JP.UTF-8 $ ./configure \ --prefix=/usr \ --libdir=/usr/lib \ --sysconfdir=/etc \ --localstatedir=/var \ --infodir=/usr/info \ --mandir=/usr/man \ --disable-static $ make $ su # make install # ldconfig
and then everything gose fine ;)
2023年10月15日 upgradepkg glibc-2.25 to build dhcpcd-10.0.3 on Slackware-14.2
_ Slackware-14.2環境で、dhcpcd-10.0.2からdhcpcd-10.0.3にバージョンアップを試みたところ、explicit_bzeroのリンクに失敗した。 explicit_bzeroはglibc-2.25から導入された関数で、Slacklware-14.2はglibc-2.23止まりのためこのような結果となった。 explicit_bzeroを単純にbzeroに置き換えてもビルドは通るが、プロセス内のメモリに秘匿性の高い情報が残り、覗き見される可能性があるらしい。
そこで、glibc-2.25にアップグレードを行った。公式には既に更新は止まっているので、自己責任で行うこととなる。
手順は
- https://mirrors.slackware.com/slackware/slackware-14.2/patches/source/glibc/よりSlackBuild環境をダウンロード
- SlackBuild環境内のソースをglibc-2.25.tar.xzに置き換える
- glibc.SlackBuild内の2行をコメントアウトする(エラーとなるパッチを除外する)
### zcat $CWD/glibc-c-utf8-locale.patch.gz | patch -p1 --verbose || exit 1 ### zcat $CWD/glibc.6a824767.dont.assert.on.older.intel.cpus.diff.gz | patch -p1 --verbose || exit 1
- sh glibc.SlackBuild
- ビルドされたパッケージで更新を行う
# init s # upgradepkg /glibc-tmp-... snip .../glibc-2.25-i586-4_slack14.2.txz # upgradepkg /glibc-tmp-... snip .../glibc-i18n-2.25-i586-4_slack14.2.txz # upgradepkg /glibc-tmp-... snip .../glibc-profile-2.25-i586-4_slack14.2.txz # upgradepkg /glibc-tmp-... snip .../glibc-solibs-2.25-i586-4_slack14.2.txz # ldconfig # reboot
最後に、/etc/slackpkg/blacklistにglibcを追加しておく
glibc
この後、dhcpcd-10.0.3の方もhttps://mirrors.slackware.com/slackware/slackware-current/source/n/dhcpcd/よりSlackBuild環境&ソースを取得し、アップデート完了。