FS#21837 - [lirc] crash when xbox ir-reciever is plugged in

Attached to Project: Arch Linux
Opened by Michael (SiD) - Friday, 26 November 2010, 13:36 GMT
Last edited by Tobias Powalowski (tpowa) - Friday, 09 March 2012, 08:15 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Tobias Powalowski (tpowa)
Hugo Doria (hdoria)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 3
Private No

Details

Description:

If I plug in the XBOX USB IR-Reciever I'm dropped to a tty with some error messages.
I can switch back into X if I first switch to any tty from 1 to 6 and then to tty7.

The messages are in the dmesg output then

usb 3-1: new full speed USB device using uhci_hcd and address 2
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<f93c73a9>] free_irctl+0x29/0x1f0 [lirc_atiusb]
*pde = 00000000
Oops: 0000 [#1] PREEMPT
last sysfs file: /sys/devices/pci0000:00/0000:00:1d.1/usb3/3-1/bcdDevice
Modules linked in: fuse ext2 ext4 jbd2 crc16 lirc_atiusb lirc_dev usblp cpufreq_powersave cpufreq_ondemand tifm_sd mmc_block snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_intel8x0 snd_intel8x0m snd_ac97_codec ipw2200 ac97_bus fan snd_pcm video output snd_timer sbshc tifm_7xx1 processor libipw snd soundcore yenta_socket tifm_core snd_page_alloc thermal button pcmcia_rsrc cfg80211 usbhid hid b44 iTCO_wdt iTCO_vendor_support ssb psmouse i2c_i801 serio_raw evdev mmc_core pcmcia pcmcia_core rtc_cmos rtc_core rtc_lib ext3 jbd mbcache xts gf128mul usb_storage dm_crypt dm_mod uhci_hcd ehci_hcd usbcore radeon ttm drm_kms_helper drm i2c_algo_bit i2c_core sr_mod intel_agp cdrom sd_mod agpgart ata_piix libata scsi_mod

Pid: 664, comm: khubd Not tainted 2.6.36.1-UV #1 Extensa 3000 /Extensa 3000
EIP: 0060:[<f93c73a9>] EFLAGS: 00010203 CPU: 0
EIP is at free_irctl+0x29/0x1f0 [lirc_atiusb]
EAX: 00000000 EBX: 00000000 ECX: 00000004 EDX: 00000004
ESI: f370fa90 EDI: f370fa80 EBP: 00000004 ESP: f604dcb8
DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
Process khubd (pid: 664, ti=f604c000 task=f65847c0 task.ti=f604c000)
Stack:
f604dd18 00000202 c135e740 00000246 fffffff4 f65f6248 f65f60c0 00000002
<0> f93c84b5 000000d0 e446d5a0 0004dd18 f65847c0 e446d1e0 00000004 f370fa80
<0> 00000002 f3643400 f639c400 f639c400 00000001 f639c400 c11c8d00 f3643400
Call Trace:
[<f93c84b5>] ? usb_remote_probe+0x7c5/0x960 [lirc_atiusb]
[<c11c8d00>] ? __pm_runtime_resume+0x440/0x4b0
[<f81b8bac>] ? usb_probe_interface+0xdc/0x1c0 [usbcore]
[<c11c3145>] ? driver_probe_device+0x85/0x190
[<f81b85b4>] ? usb_device_match+0x64/0x80 [usbcore]
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c2132>] ? bus_for_each_drv+0x52/0x80
[<c11c3029>] ? device_attach+0x79/0x90
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c293d>] ? bus_probe_device+0x1d/0x40
[<c11c0c9c>] ? device_add+0x47c/0x530
[<c1147935>] ? kvasprintf+0x45/0x60
[<f81b721d>] ? usb_set_configuration+0x50d/0x610 [usbcore]
[<f81bf4c5>] ? generic_probe+0x35/0x90 [usbcore]
[<c110adff>] ? sysfs_create_link+0xf/0x20
[<f81b8cae>] ? usb_probe_device+0x1e/0x50 [usbcore]
[<c11c3145>] ? driver_probe_device+0x85/0x190
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c2132>] ? bus_for_each_drv+0x52/0x80
[<c11c3029>] ? device_attach+0x79/0x90
[<c11c32d0>] ? __device_attach+0x0/0x50
[<c11c293d>] ? bus_probe_device+0x1d/0x40
[<c11c0c9c>] ? device_add+0x47c/0x530
[<f81ae42c>] ? usb_enumerate_device+0x5c/0xf0 [usbcore]
[<f81b04ec>] ? usb_new_device+0x6c/0xe0 [usbcore]
[<c11c8dc8>] ? pm_runtime_forbid+0x58/0x60
[<f81b164f>] ? hub_thread+0xa5f/0xf00 [usbcore]
[<c10452b0>] ? autoremove_wake_function+0x0/0x40
[<f81b0bf0>] ? hub_thread+0x0/0xf00 [usbcore]
[<c1044fb4>] ? kthread+0x74/0x80
[<c1044f40>] ? kthread+0x0/0x80
[<c1003c7e>] ? kernel_thread_helper+0x6/0x18
Code: 76 00 55 89 d5 57 89 c7 56 53 83 ec 10 8b 1d 3c 9e 3c f9 85 db 0f 85 a3 01 00 00 85 ff 0f 84 67 01 00 00 8b 47 10 8d 77 10 39 f0 <8b> 18 75 07 eb 15 90 89 d8 89 d3 ba ff 00 00 00 e8 42 fc ff ff
EIP: [<f93c73a9>] free_irctl+0x29/0x1f0 [lirc_atiusb] SS:ESP 0068:f604dcb8
CR2: 0000000000000000
---[ end trace 7f84165246cdee36 ]---


with previous version of lirc it worked always.

A while ago I tried the lirc-git version with the same error. I send a mail to Jarod Wilson
and got this answer.

"Hm. That's most likely a bug in lirc_atiusb. Its not gotten much attention of late, due to being largely redundant, and not being merged in the upstream kernel staging tree. I've got an ATI Remote Wonder II around here somewhere, I'll try to give it a look sometime soon."


Additional info:
lirc-0.9.0.pre1-3
lirc-utils-0.9.0.pre1-1

Steps to reproduce:
1. modprobe lirc_atiusb
2. plug in the XBOX IR-Reciever

Using the ati_remote module instead of lirc_atiusb does not work, because the XBOX Reciever is not regognized by ati_remote / ati_remote2
This task depends upon

Closed by  Tobias Powalowski (tpowa)
Friday, 09 March 2012, 08:15 GMT
Reason for closing:  Fixed
Comment by Gerardo Exequiel Pozzi (djgera) - Friday, 26 November 2010, 21:31 GMT
There is no package called lirc_atiusb, fixed title.
Comment by Zeqadious (Zeqadious) - Thursday, 02 December 2010, 15:38 GMT
I can verify this bug. I use Arch + XBMC for my media center which uses lirc with the original USB Xbox IR Dongle. With the latest kernel26 2.6.36 / lirc 0.9 beta ( and git ), the kernel module oops [http://zeqadious.homelinux.net/junkbin/kernel-oops.txt].

It uses lirc_atiusb kernel module.

2.6.35 + lirc 0.8.6 still works for now.
Comment by Michael (SiD) - Tuesday, 07 December 2010, 14:47 GMT
it seems to work with kernels < 2.6.36

I compiled a vanilla 2.6.35.9 kernel and with this kernel the lirc_atiusb module from lirc-0.9.0-pre1 works with the xbox usb remote control.
Comment by Mike Perry (mikep) - Thursday, 09 December 2010, 10:27 GMT
This may or may not be related, I don't get a crash but I get no output at all from lirc_atiusb with 2.6.36 and lirc-0.9.0-pre1. It works fine compiled against 2.6.35.

I'm using a firefly remote.
Comment by Perry (Perry3D) - Wednesday, 26 January 2011, 09:28 GMT
I have the same effects as Mike Perry. But this seems to be an upstream bug and not related to Arch.
You can read a lot about this module at the lirc mailing list.
Comment by Jan de Groot (JGC) - Tuesday, 05 April 2011, 07:57 GMT
Is this still an issue with latest kernel26 and lirc from testing? I removed lirc_dev from the lirc package, as drivers built against later kernels will use the in-kernel version. Having two different versions of lirc_dev can cause problems like these.
Comment by Perry (Perry3D) - Wednesday, 06 April 2011, 12:23 GMT
I still habe problems with this module (even with the testing packages).

But i found a solution for my remote control: i switched to the userland driver called "atilibusb".
Works well and offers the same features as lirc_atiusb.
Just put the driver in your /etc/conf.d/lircd.conf:

#
# Parameters for lirc daemon
#

LIRC_DEVICE=""
LIRC_DRIVER=atilibusb""
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE=""

Maybe you have to blacklist lirc_atiusb and ati_remote.
Comment by Zeqadious (Zeqadious) - Wednesday, 13 April 2011, 01:17 GMT
No change here either. Still oops upon modprobe lirc_atiusb.

Perry, where are the sources for atiliusb?
Comment by Lee (adr3nal1n) - Tuesday, 12 July 2011, 21:51 GMT
Hi Guys, found this article (and patch) on the LIRC forum http://old.nabble.com/lirc_xbox-patch-for-lirc-0.9.1-td31787507.html

I have compiled the new lirc_xbox driver (and lirc_dev) using the git source and it works a treat with XBMC. :-)

This is what I did...

1. First off, I have the arch linux lirc-utils package installed but not the arch linux lirc package.
2. enter 'git clone git://lirc.git.sourceforge.net/gitroot/lirc/lirc';
3. Grab the lirc_xbox patch from the article on the lirc forum.
4. copy the patch to the lirc folder created by git and run 'patch -p1 < lirc_0.9.1_lirc_xbox_driver.patch'
5. cd lirc/drivers/lirc_xbox
6. edit the lirc_xbox.c file and remove the line '#include <linux/smp_lock.h>' otherwise you will get an error when compiling if you are running the latest 2.6.39-ARCH kernel. (apparently to do with BKL being removed)
7. Now follow the instructions in the lirc forum link above './autogen.sh' etc etc

Note that you will need to make sure you add 'blacklist xpad' to /etc/modprobe.d/blacklist.conf and then update your /etc/lirc/hardware.conf "REMOTE_MODULES=" line to read REMOTE_MODULES="lirc_xbox lirc_dev" for lircd to work. Although I guess REMOTE_MODULES="lirc_xbox" would work too.

Is there anyway we can get this new lirc_xbox driver added to the official arch linux "lirc" package?

Hope these notes help someone out as I am not the most experienced at this sort of thing, just thought I would share my findings.



Comment by Michael (SiD) - Wednesday, 13 July 2011, 12:55 GMT
@Lee
Thanks, here it works too. :)

With vanilla linux-2.6.39-3 and lirc-utils-0.9.0-4 package from [extra]
( just copied the module to /lib/modules/<kernel-ver> )

Loading...