linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: camden lindsay <camden.lindsay+kernel@gmail.com>
To: Sean Young <sean@mess.org>
Cc: linux-media@vger.kernel.org
Subject: Re: ir-keytable segfault when writing keymap from file
Date: Tue, 21 Jan 2020 07:57:35 -0800	[thread overview]
Message-ID: <CABkW7JNsiMPU9SP+pvojWDrDm7ckdrEaOnUmtRw-bhe5iKigsg@mail.gmail.com> (raw)
In-Reply-To: <20200121092021.GA25590@gofer.mess.org>

[-- Attachment #1: Type: text/plain, Size: 4583 bytes --]

On Tue, Jan 21, 2020 at 1:20 AM Sean Young <sean@mess.org> wrote:
>
> Hello,
>
> On Mon, Jan 20, 2020 at 06:47:17PM -0800, camden lindsay wrote:
> > Hello-
> > I had a working ir-keytable script that stopped working the other day.
> > Investigation led to finding that ir-keytable was segfaulting whenever
> > trying to write a keymap from a file.
> >
> > [kodiuser@kodiarch ~]$ uname -a
> > Linux kodiarch 5.4.13-arch1-1 #1 SMP PREEMPT Fri, 17 Jan 2020 23:09:54
> > +0000 x86_64 GNU/Linux
> > [kodiuser@kodiarch ~]$
> >
> > [kodiuser@kodiarch ~]$ ir-keytable -V
> > IR keytable control version 1.18.0
> > [kodiuser@kodiarch ~]$
> >
> > Here's an example of grabbing an existing keytable entry, putting it
> > in a file, but showing that after clearing and trying to load that
> > file the segfault.  Segfault also occurs if not clearing first.
> >
> > [kodiuser@kodiarch ir-keytable]$ sudo ir-keytable -r | grep KEY_DOWN
> > Enabled kernel protocols: lirc nec
> > scancode 0x800f041f = KEY_DOWN (0x6c)
> > [kodiuser@kodiarch ir-keytable]$ cat /etc/ir-keytable/keymap.txt
> > scancode 0x800f041f = KEY_DOWN (0x6c)
> > [kodiuser@kodiarch ir-keytable]$ sudo ir-keytable -c
> > Old keytable cleared
> > [kodiuser@kodiarch ir-keytable]$ sudo ir-keytable -w /etc/ir-keytable/keymap.txt
> > Segmentation fault
> > [kodiuser@kodiarch ir-keytable]$ sudo ir-keytable -r | grep KEY_DOWN
> > Enabled kernel protocols: lirc nec
> > [kodiuser@kodiarch ir-keytable]$ sudo ir-keytable -r
> > Enabled kernel protocols: lirc nec
> > [kodiuser@kodiarch ir-keytable]$
> >
> >
> >
> > And this shows that the segfault still occurs even if i don't clear
> > the keytable first (but of course the existing contents of the table
> > still exist)
> > [kodiuser@kodiarch ~]$ sudo ir-keytable -r | grep KEY_DOWN
> > Enabled kernel protocols: lirc nec
> > scancode 0x800f041f = KEY_DOWN (0x6c)
> > [kodiuser@kodiarch ~]$ cat /etc/ir-keytable/keymap.txt
> > scancode 0x800f041f = KEY_DOWN (0x6c)
> > [kodiuser@kodiarch ~]$ sudo ir-keytable -w /etc/ir-keytable/keymap.txt
> > Segmentation fault
> > [kodiuser@kodiarch ~]$ sudo ir-keytable -r | grep KEY_DOWN
> > Enabled kernel protocols: lirc nec
> > scancode 0x800f041f = KEY_DOWN (0x6c)
> > [kodiuser@kodiarch ~]$
>
> I suspect ir-keytable is segfaulting in the code that reads the file; would
> you be able to share the keymap.txt file please? That way I can see if I
> can reproduce the problem.
>
> Parsing of the keymap is done in C which can be prone to these sorts of
> problems.
>
> > Here is the example syslog output of the segfault:
> > Jan 20 18:15:33 kodiarch kernel: ir-keytable[817]: segfault at 0 ip
> > 00007f1a958436f5 sp 00007ffe039a5aa8 error 4 in
> > libc-2.30.so[7f1a95707000+14d000]
> > Jan 20 18:15:33 kodiarch kernel: Code: 00 00 0f 1f 00 31 c0 c5 f8 77
> > c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 89 f9 48 89 fa c5 f9 ef
> > c0 83 e1 3f 83 f9 20 77 2b <c5> fd 74 0f c5 fd d7 c1 85 c0 0f 85 eb 00
> > 00 00 48 83 c7 20 83 e1
> > Jan 20 18:15:33 kodiarch systemd[1]: Started Process Core Dump (PID 818/UID 0).
> > Jan 20 18:15:34 kodiarch systemd-coredump[819]: Process 817
> > (ir-keytable) of user 0 dumped core.
> >
> >                                                 Stack trace of thread 817:
> >                                                 #0  0x00007f1a958436f5
> > __strlen_avx2 (libc.so.6 + 0x1616f5)
> >                                                 #1  0x00007f1a95770be3
> > __strdup (libc.so.6 + 0x8ebe3)
> >                                                 #2  0x0000563150aa43b7
> > n/a (ir-keytable + 0x83b7)
> >                                                 #3  0x0000563150aa44c6
> > n/a (ir-keytable + 0x84c6)
> >                                                 #4  0x00007f1a957edfc0
> > argp_parse (libc.so.6 + 0x10bfc0)
> >                                                 #5  0x0000563150aa2099
> > n/a (ir-keytable + 0x6099)
> >                                                 #6  0x00007f1a95709153
> > __libc_start_main (libc.so.6 + 0x27153)
> >                                                 #7  0x0000563150aa325e
> > n/a (ir-keytable + 0x725e)
> > Jan 20 18:15:34 kodiarch systemd[1]: systemd-coredump@3-818-0.service:
> > Succeeded.
>
> This would have to be done a in debug build.
>
> Thanks
> Sean



Hello, Sean-
I'd be happy to share the files, I greatly appreciate you looking into
this.  I'll try attaching them to this email.
There are two files- one was my original file, the other was my
attempt to make the most basic file based on a single line of
ir-keytable -r.

many thanks
Camden

[-- Attachment #2: keymap.txt --]
[-- Type: text/plain, Size: 38 bytes --]

scancode 0x800f041f = KEY_DOWN (0x6c)

[-- Attachment #3: keymap.txt.wasworking --]
[-- Type: application/octet-stream, Size: 2600 bytes --]

scancode 0x800f0400 = KEY_NUMERIC_0 (0x200)
scancode 0x800f0401 = KEY_NUMERIC_1 (0x201)
scancode 0x800f0402 = KEY_NUMERIC_2 (0x202)
scancode 0x800f0403 = KEY_NUMERIC_3 (0x203)
scancode 0x800f0404 = KEY_NUMERIC_4 (0x204)
scancode 0x800f0405 = KEY_NUMERIC_5 (0x205)
scancode 0x800f0406 = KEY_NUMERIC_6 (0x206)
scancode 0x800f0407 = KEY_NUMERIC_7 (0x207)
scancode 0x800f0408 = KEY_NUMERIC_8 (0x208)
scancode 0x800f0409 = KEY_NUMERIC_9 (0x209)
scancode 0x800f040a = KEY_DELETE (0x6f)
scancode 0x847490 = KEY_ENTER (0x1c)
scancode 0x800f040c = KEY_SLEEP (0x8e)
scancode 0x800f040d = KEY_MEDIA (0xe2)
scancode 0x800f040e = KEY_MUTE (0x71)
scancode 0x800f040f = KEY_INFO (0x166)
scancode 0x800f0410 = KEY_VOLUMEUP (0x73)
scancode 0x800f0411 = KEY_VOLUMEDOWN (0x72)
scancode 0x800f0412 = KEY_CHANNELUP (0x192)
scancode 0x800f0413 = KEY_CHANNELDOWN (0x193)
scancode 0x84748a = KEY_FASTFORWARD (0xd0)
scancode 0x84747e = KEY_REWIND (0xa8)
scancode 0x84747f = KEY_PLAY (0xcf)
scancode 0x847499 = KEY_RECORD (0xa7)
scancode 0x84748c = KEY_PAUSE (0x77)
scancode 0x84747c = KEY_X (0x2d) 
scancode 0x84747d = KEY_NEXTSONG (0x197)
scancode 0x84747b = KEY_PREVIOUSSONG (0x19c)
scancode 0x800f041c = KEY_NUMERIC_POUND (0x20b)
scancode 0x800f041d = KEY_NUMERIC_STAR (0x20a)
scancode 0x84748e = KEY_UP (0x67)
scancode 0x847492 = KEY_DOWN (0x6c)
scancode 0x84748f = KEY_LEFT (0x69)
scancode 0x847491 = KEY_RIGHT (0x6a)
scancode 0x800f0424 = KEY_DVD (0x185)
scancode 0x800f0425 = KEY_TUNER (0x182)
scancode 0x800f0426 = KEY_EPG (0x16d)
scancode 0x800f0427 = KEY_ZOOM (0x174)
scancode 0x800f0432 = KEY_MODE (0x175)
scancode 0x800f0433 = KEY_PRESENTATION (0x1a9)
scancode 0x800f0434 = KEY_EJECTCD (0xa1)
scancode 0x800f043a = KEY_BRIGHTNESSUP (0xe1)
scancode 0x800f0446 = KEY_TV (0x179)
scancode 0x800f0447 = KEY_AUDIO (0x188)
scancode 0x800f0448 = KEY_PVR (0x16e)
scancode 0x800f0449 = KEY_CAMERA (0xd4)
scancode 0x800f044a = KEY_VIDEO (0x189)
scancode 0x800f044c = KEY_LANGUAGE (0x170)
scancode 0x800f044d = KEY_TITLE (0x171)
scancode 0x800f044e = KEY_PRINT (0xd2)
scancode 0x800f0450 = KEY_RADIO (0x181)
scancode 0x800f045a = KEY_SUBTITLE (0x172)
scancode 0x800f045b = KEY_RED (0x18e)
scancode 0x800f045c = KEY_GREEN (0x18f)
scancode 0x800f045d = KEY_YELLOW (0x190)
scancode 0x800f045e = KEY_BLUE (0x191)
scancode 0x800f0465 = KEY_POWER2 (0x164)
scancode 0x800f046e = KEY_PLAYPAUSE (0xa4)
scancode 0x800f046f = KEY_PLAYER (0x183)
scancode 0x800f0480 = KEY_BRIGHTNESSDOWN (0xe0)
scancode 0x800f0481 = KEY_PLAYPAUSE (0xa4)
scancode 0x847497 = KEY_BACKSPACE (0x0e)
scancode 0x847496 = KEY_MENU
scancode 0x80d864 = KEY_POWER

  reply	other threads:[~2020-01-21 15:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CABkW7JNg-7PNwSH2CsZVFHpqHdnaH5Ha4VS83r8_CaMox3wfQQ@mail.gmail.com>
2020-01-21  2:47 ` ir-keytable segfault when writing keymap from file camden lindsay
2020-01-21  8:33   ` Frantisek Rysanek
2020-01-21 15:53     ` camden lindsay
2020-01-21  9:20   ` Sean Young
2020-01-21 15:57     ` camden lindsay [this message]
2020-01-21 16:49       ` Sean Young
2020-01-21 19:18         ` camden lindsay
2020-01-21 19:29           ` Sean Young
2020-01-21 22:48             ` camden lindsay
2020-01-22  9:16               ` Sean Young
2020-01-23  3:32                 ` camden lindsay
2020-01-23  9:09                   ` Sean Young

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABkW7JNsiMPU9SP+pvojWDrDm7ckdrEaOnUmtRw-bhe5iKigsg@mail.gmail.com \
    --to=camden.lindsay+kernel@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=sean@mess.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).