On 24/09/17 03:50, Francois Gouget wrote:
Actually it's the -f option that causes the crash. I can reproduce it
with:

# irrecord -f /tmp/foo.conf

This would just indicate that foo.conf is broken somehow. Given the state of lirc, I don't think it's feasible to make it handle any kind of broken input files - it's just too fragile.

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). This will by definition be unstable - the libirrecord ABI being part of lirc_private.h is not supposed to be the same between versions.

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. In short:

- As mentioned in the irrecord message the way to update devinput.lircd.conf is the lirc-make-devinput(1) script, not irrecord. - Use mode2(1) to check if you get something sane using the devinput and/or the default driver. - If you go with the devinput driver, use devinput.lircd.conf. In a off-the-shelf setup, just copy it into /etc/lirc/lircd.conf.d. Check that /etc/lircd.conf does nothing but include the files in lircd.conf.d. - If you go with the default driver, you might very well need to use irrecord with this driver. Copy the generated file into lircd.conf.d. - In any case, don't use irrecord with the devinput driver since this is not a supported usecase. - When running into problems, raise the loglevel and submit the console logs.

IMHO, this is now more of a support issue than a bug report.


Cheers!

--alec


[1] http://lirc.org/html/configuration-guide.html

Reply via email to