[Pkg-kde-extras] Bug#844517: kradio4: Crashes when lirc configuration is found. (interface of liblircclient0 changed)

Bernhard Übelacker bernhardu at mailbox.org
Wed Nov 16 13:39:56 UTC 2016


Package: kradio4
Version: 4.0.8+git20160618-1
Severity: important

Dear Maintainer,
kradio4 crashes after reading the lirc configuration.

In my opinion the crash happens because the current stretch package
was built against liblircclient-dev (0.9.0~pre1-1.2). [1] [2]

Now the interface changed between 0.9.0~pre1-1.2 and 0.9.4c-4.
At least the struct lirc_config and lirc_config_entry in lirc_client.h
have different sizes. (See attached gdb session.)

Using a package built against 0.9.4c-4 did not show the crash.
Therefore I assume just rebuilding the stretch package kradio4 should
resolve the issue.

Kind regards,
Bernhard


PS.: Is there any debian facility that should have catched that?
     Or should this be reported against liblircclient0 as at least
     the packages in [3] are probably affected too (due to the latest
     build log).


[1] https://buildd.debian.org/status/package.php?p=kradio4&suite=unstable
[2]
https://buildd.debian.org/status/fetch.php?pkg=kradio4&arch=amd64&ver=4.0.8%2Bgit20160618-1&stamp=1466289377

[3] apt-cache rdepends liblirc-client0
      audacious-plugins bino fbtv geeqie gxine kradio4
      lcdproc-extra-drivers lxmms2 python-pylirc rhythmbox-plugins
      rosegarden totem-plugins xawtv xine-console xine-ui zapping
      (shows more packages, but these got build against 0.9.4c-4)



-- System Information:
Debian Release: stretch/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.8.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages kradio4 depends on:
pn  kde-runtime     <none>
ii  libasound2      1.1.2-1
ii  libavcodec57    7:3.2-2
ii  libavformat57   7:3.2-2
ii  libavresample3  7:3.2-2
ii  libc6           2.24-5
ii  libgcc1         1:6.2.0-10
ii  libkdecore5     4:4.14.25-1
ii  libkdeui5       4:4.14.25-1
ii  libkio5         4:4.14.25-1
ii  liblircclient0  0.9.4c-4
ii  libmms0         0.6.4-2
ii  libmp3lame0     3.99.5+repack1-9+b1
ii  libogg0         1.3.2-1
ii  libqt4-dbus     4:4.8.7+dfsg-11
ii  libqt4-network  4:4.8.7+dfsg-11
ii  libqt4-svg      4:4.8.7+dfsg-11
ii  libqt4-xml      4:4.8.7+dfsg-11
ii  libqtcore4      4:4.8.7+dfsg-11
ii  libqtgui4       4:4.8.7+dfsg-11
ii  libsndfile1     1.0.27-1
ii  libstdc++6      6.2.0-10
ii  libswresample2  7:3.2-2
ii  libvorbis0a     1.3.5-3
ii  libvorbisenc2   1.3.5-3
ii  libvorbisfile3  1.3.5-3

kradio4 recommends no packages.

kradio4 suggests no packages.
-------------- next part --------------
apt-get install kradio4-dbgsym liblirc-client0-dbgsym:amd64



bernhard at rechner:~$ gdb -q --args kradio4
Reading symbols from kradio4...Reading symbols from /usr/lib/debug/.build-id/03/2caf5309786c6cac447609f6c9ae040c53ce59.debug...done.
done.
(gdb) directory /home/bernhard/data/entwicklung/2016/debian/kradio4/2016-11-15/liblirc-client0/lirc-0.9.4c/lib
Source directories searched: /home/bernhard/data/entwicklung/2016/debian/kradio4/2016-11-15/liblirc-client0/lirc-0.9.4c/lib:$cdir:$cwd
(gdb) directory /home/bernhard/data/entwicklung/2016/debian/kradio4/2016-11-15/kradio4/kradio4-4.0.8+git20160618/plugins/lirc
Source directories searched: /home/bernhard/data/entwicklung/2016/debian/kradio4/2016-11-15/kradio4/kradio4-4.0.8+git20160618/plugins/lirc:/home/bernhard/data/entwicklung/2016/debian/kradio4/2016-11-15/liblirc-client0/lirc-0.9.4c/lib:$cdir:$cwd
(gdb) b lirc_client.c:1446
No source file named lirc_client.c.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (lirc_client.c:1446) pending.
(gdb) run
Starting program: /usr/bin/kradio4 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffd3dc8700 (LWP 13180)]
[Thread 0x7fffd3dc8700 (LWP 13180) exited]
initialisiere das Plugin f?r die LIRC Fernsteuerung
Warnungen/Fehlermeldungen ?ber nicht vorhandene Unix-Sockets sind kein Problem - ?blicherweise ist der LIRC-Dienst in diesen F?llen nicht gestartet.
Die Initialisierung des LIRC Plugins war erfolgreich
[New Thread 0x7fffd3dc8700 (LWP 13181)]
[New Thread 0x7fffd766d700 (LWP 13186)]
[Thread 0x7fffd766d700 (LWP 13186) exited]
[New Thread 0x7fffd766d700 (LWP 13187)]
[Thread 0x7fffd766d700 (LWP 13187) exited]
Warning: bad shebang (ignored)
Thread 1 "kradio4" hit Breakpoint 1, lirc_readconfig (file=<optimized out>, config=config at entry=0xde4b80, check=check at entry=0x0) at lirc_client.c:1446
1446            if ((*config)->lircrc_class == NULL)
(gdb) print config
$1 = (struct lirc_config **) 0xde4b80
(gdb) print *config
$2 = (struct lirc_config *) 0xb2eab0
(gdb) print **config
$3 = {lircrc_class = 0x0, current_mode = 0x0, next = 0xadabf0, first = 0xadabf0, sockfd = -1}
(gdb) print sizeof(struct lirc_config)
$4 = 40
(gdb) print (**config).first
$5 = (struct lirc_config_entry *) 0xadabf0
(gdb) print *(**config).first
$6 = {prog = 0x157b900 "kradio", code = 0x15abf10, rep_delay = 0, ign_first_events = 0, rep = 1, config = 0x15ad2c0, change_mode = 0x0, flags = 0, mode = 0x0, next_config = 0x15ad2c0, next_code = 0x15abf10, next = 0x0}
(gdb) print sizeof(struct lirc_config_entry)
$7 = 88
(gdb) print (*(**config).first).next
$8 = (struct lirc_config_entry *) 0x0
(gdb)  
(gdb) 
(gdb) 
(gdb) 
(gdb) 
(gdb) b lircsupport.cpp:131
Breakpoint 2 at 0x7fffe644eaf8: file /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp, line 131.
(gdb) cont
Continuing.

Thread 1 "kradio4" hit Breakpoint 2, LircSupport::LIRC_init_config (this=this at entry=0xde4a30) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp:131
131                 for (lirc_config_entry *e = m_lircConfig ? m_lircConfig->first : NULL; e; e = e->next) {
(gdb) print m_lircConfig
$9 = (lirc_config *) 0xb2eab0
(gdb) print *m_lircConfig
$10 = {current_mode = 0x0, next = 0x0, first = 0xadabf0, sockfd = 11381744}
(gdb) print sizeof(lirc_config)
$11 = 32
(gdb) print (*m_lircConfig).first
$12 = (lirc_config_entry *) 0xadabf0
(gdb) print *(*m_lircConfig).first
$13 = {prog = 0x157b900 "kradio", code = 0x15abf10, rep_delay = 0, rep = 0, config = 0x1, change_mode = 0x15ad2c0 "p\312", <incomplete sequence \303>, flags = 0, mode = 0x0, next_config = 0x0, next_code = 0x15ad2c0, next = 0x15abf10}
(gdb) print sizeof(lirc_config_entry)
$14 = 80
(gdb) print (*(*m_lircConfig).first).next
$15 = (lirc_config_entry *) 0x15abf10
(gdb) print *(*(*m_lircConfig).first).next
$16 = {prog = 0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>, code = 0xffffffffffffffff, rep_delay = 0, rep = 0, config = 0x31, 
  change_mode = 0x300000001 <error: Cannot access memory at address 0x300000001>, flags = 1, mode = 0x15abf48 "0", next_config = 0x6c006900660030, next_code = 0x65, next = 0x31}
(gdb) cont
Continuing.

Thread 1 "kradio4" received signal SIGSEGV, Segmentation fault.
0x00007ffff51d4ecb in QString::fromLatin1_helper (str=0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>, size=-1) at tools/qstring.cpp:3821
3821    tools/qstring.cpp: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0x00007ffff51d4ecb in QString::fromLatin1_helper (str=0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>, size=-1) at tools/qstring.cpp:3821
#1  0x00007ffff51d84e5 in QString::fromAscii_helper (str=<optimized out>, size=size at entry=-1) at tools/qstring.cpp:3887
#2  0x00007fffe644eb5e in QString::QString (ch=<optimized out>, this=0x7fffffffdc30) at /usr/include/qt4/QtCore/qstring.h:419
#3  LircSupport::LIRC_init_config (this=this at entry=0xde4a30) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp:132
#4  0x00007fffe644f052 in LircSupport::LIRC_init_config (this=0xde4a30) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp:123
#5  LircSupport::startPlugin (this=0xde4a30) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp:742
#6  0x000000000047917c in PluginManager::startPlugins (this=0xad9430) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/src/pluginmanager.cpp:656
#7  0x0000000000483eba in InstanceManager::startPlugins (this=this at entry=0x7fffffffdde0) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/src/instancemanager.cpp:318
#8  0x0000000000430ca6 in main (argc=1, argv=0x7fffffffdf38) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/src/main.cpp:67
(gdb) up
#1  0x00007ffff51d84e5 in QString::fromAscii_helper (str=<optimized out>, size=size at entry=-1) at tools/qstring.cpp:3887
3887    in tools/qstring.cpp
(gdb) 
#2  0x00007fffe644eb5e in QString::QString (ch=<optimized out>, this=0x7fffffffdc30) at /usr/include/qt4/QtCore/qstring.h:419
419     /usr/include/qt4/QtCore/qstring.h: Datei oder Verzeichnis nicht gefunden.
(gdb) 
#3  LircSupport::LIRC_init_config (this=this at entry=0xde4a30) at /build/kradio4-FRDR46/kradio4-4.0.8+git20160618/plugins/lirc/lircsupport.cpp:132
132                     if (QString(e->prog) == LIRCPROG) {
(gdb) print e
$17 = (lirc_config_entry *) 0x15abf10
(gdb) print *e
$18 = {prog = 0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>, code = 0xffffffffffffffff, rep_delay = 0, rep = 0, config = 0x31, 
  change_mode = 0x300000001 <error: Cannot access memory at address 0x300000001>, flags = 1, mode = 0x15abf48 "0", next_config = 0x6c006900660030, next_code = 0x65, next = 0x31}
(gdb) detach
Detaching from program: /usr/bin/kradio4, process 13169
KCrash: Application 'kradio4' crashing...
KCrash: Attempting to start /usr/lib/kde4/libexec/drkonqi from kdeinit
KCrash: Connect sock_file=/home/bernhard/.kde/socket-rechner/kdeinit4__0
(gdb) Unable to start Dr. Konqi
Not forwarding the crash to Apport.
q





More information about the pkg-kde-extras mailing list