[Pkg-lirc-maint] Bug#872375: lirc: irrecord segfaults when recording a button

Francois Gouget fgouget at free.fr
Sun Sep 24 14:12:24 UTC 2017

On Sun, 24 Sep 2017, Alec Leamas wrote:
> > But it's not 100% reproducible now, particularly when I try to use
> > my own libirrecord.so so I have debugging symbols. What I can give you
> > though is the irrecord backtrace:
> > 
> > #0  0x0000000000000000 in ?? ()
> > #1  0x00007f5644aaae73 in record_buttons ()
> >     from /usr/lib/x86_64-linux-gnu/libirrecord.so.0
> > #2  0x000055555555802d in get_button_data (opts=0x7fffffffe2d0,
> > state=0x7fffffffe290,
> >      btn_state=0x7fffffffe110) at irrecord-ui.cpp:759
> > #3  do_record_buttons (state=0x7fffffffe290, opts=0x7fffffffe2d0) at
> > irrecord-ui.cpp:814
> > #4  0x0000555555556ddf in main (argc=<optimized out>, argv=<optimized out>)
> >      at irrecord-ui.cpp:1179
> > 
> > Compiled from git commit be62884be227.
> > So the crash happens somewhere in record_buttons() in irrecord.c.
> > I suspect the curr_driver methods are not getting initialized...
> > sometimes. 
> Thanks. That said, if this from a version you compiled yourself, the
> libirrecord.so seems to be the wrong one (i. e., the one installed by the
> package).

True. It might not crash in the same way as when I use the package's 
irrecord with the package's libirrecord.so library. I'm done chasing it 

> > Now as to why I have driver=devinput in lirc_options.conf, it's because
> > it's the only way I found to get my remote to work. Setting
> > driver=default driver does not work and if I only provide
> > devinput.lircd.conf and no Hauppauge_PVR350.conf file then it does not
> > work either.
> I think you really need to take a step back here. The way you use lirc does
> not match the official guidelines in [1], which you probably need to check.

Right. The default configuration and the official guidelines don't work.

* I used the devinput.lircd.conf provided by the package, together with 
  driver = devinput and my remote wouldn't work.

* I ran lirc-make-devinput as recommended by irrecord to generate a new 
  devinput.lircd.conf file, still using driver=devinput, and the remote 
  still wouldn't work.

* Seconds after I regenerated the devinput.lircd.conf with 
  lirc-make-devinput, lircd complained that it is outdated:

Sep 24 01:33:47 habsheim lircd[1039]: lircd-0.10.0[1039]: Warning: Obsolete devinput config file used
Sep 24 01:33:47 habsheim lircd[1039]: lircd-0.10.0[1039]: Notice: Use the distributed devinput.lircd.dist by renaming it.
Sep 24 01:33:47 habsheim lircd[1039]: lircd-0.10.0[1039]: Notice: Or use irdb-get to search for "devinput" and download it.

* With both versions of the devinput.lircd.conf lircd complained that 
  all buttons were duplicated, which makes sense since they appear in 
  both the devinput-32 and devinput-64 remotes.

Sep 24 01:11:43 habsheim lircd[1047]: lircd-0.10.0[1047]: Notice: /etc/lirc/lircd.conf.d/devinput.lircd.conf: devinput-64: Multiple values for same code: BTN_MISC
Sep 24 01:11:43 habsheim lircd[1047]: lircd-0.10.0[1047]: Notice: /etc/lirc/lircd.conf.d/devinput.lircd.conf: devinput-64: Multiple values for same code: BTN_MOUSE

* Now I finally got the remote to work with the default driver (i.e. not 
  devinput (despite it being the default driver)) but I had to recreate 
  the remote configuration file from scratch as the one I used with lirc 
  0.9.4c wouldn't work. The official guidelines don't talk about that 
  incompatibility either.

* Oh, and for the remote configuration files comment lines must have a 
  '#' in the first column. Put spaces before and the configuration file 
  breaks. If that's documented somewhere then I did not find where.

So crashes in irrecord? No one will notice that bit of brittleness.

Francois Gouget <fgouget at free.fr>              http://fgouget.free.fr/
     You can have my guns when you pry them from my kids cold, dead hands.

More information about the Pkg-lirc-maint mailing list