Thanks. I understand (and a bit better, now) why strace/ptrace may have problems with a program that calls setuid. On the other hand, i3lock doesn't have the setuid bit set, and the strace logs do not show an attempt to call strace.
[S-18]jeff@siegfried:~ $ stat /usr/bin/i3lock File: ‘/usr/bin/i3lock’ Size: 31912 Blocks: 64 IO Block: 4096 regular file Device: fc01h/64513d Inode: 1575208 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-04-16 20:02:56.634223226 +0200 Modify: 2014-07-19 01:13:09.000000000 +0200 Change: 2015-03-04 15:18:43.959784604 +0100 Birth: - [S-18]jeff@siegfried:~ $ grep setuid /tmp/i3lock-log-1429256* 1,[S-18] jeff@siegfried:~ $ This said, if something PAM did when I logged in affects the behavior of stracing i3lock, I do not think I will try to figure out what PAM has done. ;-) But I still find it odd that i3lock would interpret keystrokes differently under strace or not based on what I know so far. Well, I will debug what I can. Maybe I will compile an i3lock with scaffolding over the weekend to see what I can learn. Thanks again. Jeff Abrahamson +33 6 24 40 01 57 +44 7920 594 255 <-- only if I'm in the UK http://jeff.purple.com/ http://blog.purple.com/jeff/ On 17 April 2015 at 11:47, Michael Stapelberg <mich...@i3wm.org> wrote: > See http://superuser.com/a/248127 for why setuid is ignored when > running under strace. > > Given that you run i3lock on linux, it might be PAM which uses setuid > in some of its modules. > > On Fri, Apr 17, 2015 at 1:20 AM, Jeff Abrahamson <j...@purple.com> wrote: > > Interesting. How does setuid have this effect on i3lock but only under > > strace? > > > > Any idea where the setuid is coming from or how to find out? The system > is > > pretty vanilla ubuntu 14.10 (they have a good installer) aside from > running > > i3 instead of gnome. > > > > The exec path that's visible once I'm logged in is lightdm -> lightdm > > --sesion-child -> i3. I see that i3 parents what is executed due to > > .xsessionrc. > > > > I'll try to gather traces with -p, but this will depend on me thinking to > > trace i3lock from a vt before unlocking the screen. My apologies in > advance > > if I take a long time to catch the occasional errant process that way. > > > > And thanks for your ever prompt assistance and insights. > > > > Jeff Abrahamson > > +33 6 24 40 01 57 > > +44 7920 594 255 <-- only if I'm in the UK > > > > http://jeff.purple.com/ > > http://blog.purple.com/jeff/ > > > > On 17 April 2015 at 10:09, Michael Stapelberg <mich...@i3wm.org> wrote: > >> > >> Ugh, then you’re running it in a setuid setup. You’ll need to start > i3lock > >> and then attach strace afterwards using -p. > >> > >> On Fri, Apr 17, 2015 at 9:56 AM, Jeff Abrahamson <j...@purple.com> > wrote: > >>> > >>> I invoke i3lock at the commandline thus: > >>> > >>> [S-18]jeff@siegfried:gtd $ strace -o/tmp/i3lock-log-$(date +%s) -f -s > >>> 2048 -tt i3lock --dpms --inactivity-timeout 10 --color=220022 > >>> [S-18]jeff@siegfried:gtd $ > >>> > >>> and the result is that i3lock does not recognize my password. It does > >>> echo my typing, it just always says fail. I switch to a vt, login, > and kill > >>> it. > >>> > >>> Jeff Abrahamson > >>> +33 6 24 40 01 57 > >>> +44 7920 594 255 <-- only if I'm in the UK > >>> > >>> http://jeff.purple.com/ > >>> http://blog.purple.com/jeff/ > >>> > >>> On 17 April 2015 at 09:39, Michael Stapelberg <mich...@i3wm.org> > wrote: > >>>> > >>>> Yes, but also use -f (to follow child processes) and -s 2048 (to > >>>> increase the size of strings) and -tt (to get timing). > >>>> > >>>> On Fri, Apr 17, 2015 at 9:23 AM, Jeff Abrahamson <j...@purple.com> > >>>> wrote: > >>>>> > >>>>> Sure thing. > >>>>> > >>>>> Just to be clear, do you mean that instead of launching "i3lock .." I > >>>>> substitute "strace -o/tmp/i3lock-log-$(date +%s) i3lock ..."? > >>>>> > >>>>> Jeff Abrahamson > >>>>> +33 6 24 40 01 57 > >>>>> +44 7920 594 255 <-- only if I'm in the UK > >>>>> > >>>>> http://jeff.purple.com/ > >>>>> http://blog.purple.com/jeff/ > >>>>> > >>>>> On 17 April 2015 at 09:19, Michael Stapelberg <mich...@i3wm.org> > wrote: > >>>>>> > >>>>>> i3lock shouldn’t hang around. Can you start stracing all your i3lock > >>>>>> instances automatically and provide the corresponding strace output > of a > >>>>>> hung instance in a bugreport? > >>>>>> > >>>>>> On Fri, Apr 17, 2015 at 9:04 AM, Jeff Abrahamson <j...@purple.com> > >>>>>> wrote: > >>>>>>> > >>>>>>> I have a maintenance function that ought not bother spinning the > CPU > >>>>>>> if the screen is locked. It checks this thus: > >>>>>>> > >>>>>>> if pidof i3lock >/dev/null; then > >>>>>>> ... > >>>>>>> > >>>>>>> This is i3-specific, which is sad, but not a huge problem. What > is a > >>>>>>> problem is that i3lock sometimes hangs around even though I think > it should > >>>>>>> exit on unlock. And, indeed, most of the time it does exit on > unlock. Once > >>>>>>> in a while, I find I have one or even several i3lock processes > hanging > >>>>>>> around. > >>>>>>> > >>>>>>> I either lock my screen explicitly > >>>>>>> > >>>>>>> bindsym $mod+Control+L exec i3lock --dpms --inactivity-timeout 10 > >>>>>>> --color=220022 > >>>>>>> > >>>>>>> or else it's done by inactivity > >>>>>>> > >>>>>>> xautolock -detectsleep \ > >>>>>>> -time 3 -locker "i3lock --dpms --color=220022 > >>>>>>> --inactivity-timeout 10 --nofork" > >>>>>>> > >>>>>>> This question thus has two parts: > >>>>>>> > >>>>>>> 1. Am I doing something wrong that I sometimes have multiple i3lock > >>>>>>> instances? > >>>>>>> 2. Is there a better way to detect screen lock than pidof i3lock? > >>>>>>> > >>>>>>> Jeff Abrahamson > >>>>>>> +33 6 24 40 01 57 > >>>>>>> +44 7920 594 255 <-- only if I'm in the UK > >>>>>>> > >>>>>>> http://jeff.purple.com/ > >>>>>>> http://blog.purple.com/jeff/ > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> -- > >>>>>> Best regards, > >>>>>> Michael > >>>>> > >>>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Best regards, > >>>> Michael > >>> > >>> > >> > >> > >> > >> -- > >> Best regards, > >> Michael > > > > > > > > -- > Best regards, > Michael >