|
From: Araki K. <ara...@us...> - 2017-05-28 04:46:22
|
Hi,
From: Didier Spaier <di...@sl...>
Subject: Re: [Mlterm-dev-en] Input buffered in mlterm-fb?
Date: Thu, 25 May 2017 12:33:10 +0200
Message-ID: <f72...@sl...>
> It seems that I get a permission denied.
>
> I ran this with KBD_INPUT_NAME unset:
> strace -o strace.log mlterm-fb --logseq=true.
>
> This time I got the keyboard working!
> I dn't know if that can give some clue to investigate, but
> I have the vague idea that using strace prevented mlterm-fb
> to send "something" to the tty that somehow would "trap" the output.
>
> I also saw that if I just type:
> strace mlterm-fb
> and then killall either strace or mlterm-fb from another tty,
> I can't get display of input back (although input works)
> even after "setterm --reset".
>
> Anyway:
> didier[~/.mlterm]$ cat msg.log
> May 25 11:39:17[6665] ERROR(Permission denied): Couldn't open /dev/input/event0.
> May 25 11:39:17[6665] ERROR(Permission denied): Couldn't open /dev/input/event11.
> May 25 11:39:17[6665] ERROR(Permission denied): Couldn't open /dev/input/mice.
> May 25 11:39:17[6665] ERROR(Permission denied): Couldn't open /dev/input/mouse0.
> May 25 12:00:19[7075] ERROR(Permission denied): Couldn't open /dev/input/event0.
> May 25 12:00:19[7075] ERROR(Permission denied): Couldn't open /dev/input/event11.
> May 25 12:00:19[7075] ERROR(Permission denied): Couldn't open /dev/input/mice.
> May 25 12:00:19[7075] ERROR(Permission denied): Couldn't open /dev/input/mouse0.
> May 25 12:01:40[7137] ERROR(Permission denied): Couldn't open /dev/input/event0.
> May 25 12:01:40[7137] ERROR(Permission denied): Couldn't open /dev/input/event11.
> May 25 12:01:40[7137] ERROR(Permission denied): Couldn't open /dev/input/mice.
> May 25 12:01:40[7137] ERROR(Permission denied): Couldn't open /dev/input/mouse0.
> didier[~/.mlterm]$
mlterm-fb gets root user's permission in opening /dev/input/event*.
(Permission of mlterm-fb binary is "-rwsr-xr-x")
^
"Permission denied" error above is caused by strace which prevents mlterm-fb
to get root user's permission.
In this case mlterm-fb falls back to reading *stdin* (which is also caused by
KBD_INPUT_NUM=-1) instead of /dev/input/event*, and keyboard input becomes available.
Anyway, I haven't hit unpon yet why nothing comes from /dev/input/event*.
> Incidentally:
> didier[~/.mlterm]$ grep ENOENT strace.log
> access("/etc/suid-debug", F_OK) = -1 ENOENT (No such file or directory)
> access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/tls/x86_64/libmlterm_coreotl.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> stat("/usr/local/lib/tls/x86_64", 0x7ffedbd1f130) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/tls/libmlterm_coreotl.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> stat("/usr/local/lib/tls", 0x7ffedbd1f130) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/x86_64/libmlterm_coreotl.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> stat("/usr/local/lib/x86_64", 0x7ffedbd1f130) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libmlterm_coreotl.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libpobl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libmef.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libutempter.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libutil.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libfontconfig.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libharfbuzz.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libfreetype.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libbz2.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libpng16.so.16", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libexpat.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f700) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f6b0) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f680) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f580) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f660) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f660) = -1 ENOENT (No such file or directory)
> open("/sys/class/input/input2/name", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f790) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libfribidi.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> connect(5, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
> connect(5, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libnsl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> open("/usr/local/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
> stat("/home/didier/.config/mlterm", 0x7ffedbd1f6e0) = -1 ENOENT (No such file or directory)
> didier[~/.mlterm]$
>
> This raise some questions:
> 1) I built mlterm-fb with this configure option
> --libdir=/usr/lib64
> Would it be possible and advisable to give this information as a run-time option
> or a parameter to mlterm? I ask because maybe that would avoid some useless
> calls (even if maybe not that costly).
As far as I see http://slint.fr/testing/mlterm/strace.log,
ld.so loads /usr/lib64/libmlterm_coreotl.so and so on finally,
so ld.so is informed of '--libdir=/usr/lib64' correctly by compiling
mlterm-fb with rpath option.
But I'm not familiar to how ld.so searches dynamic link libraries in detail, sorry.
> 2) I didn't see mentioned ~/.config/mlterm in the docs, only ~/.mlterm
> What is that for? Maybe I missed something.
This is undocumented feature.
If ~/.config/mlterm exists, mlterm reads ~/.config/mlterm/* config files instead of
~/.mlterm/*.
mlterm doesn't access config files often, so its cost is ignorable.
Regards,
---
Araki Ken
ara...@us...
|