Hi,
I use the loopback device all the time. It works pretty good, except when I suspend my computer to RAM. On resume, I've got a kernel call trace.
Here is the procedure to reproduce this behaviour, it's pretty easy.
# Insert module if needed $ modprobe snd_aloop pcm_substreams=2 # Let's see how it looks like $ aplay -l **** Liste des Périphériques Matériels PLAYBACK **** carte 0: PCH [HDA Intel PCH], périphérique 0: VT1802 Analog [VT1802 Analog] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 0: PCH [HDA Intel PCH], périphérique 2: VT1802 HP [VT1802 HP] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 0: PCH [HDA Intel PCH], périphérique 3: HDMI 0 [HDMI 0] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 1: Loopback [Loopback], périphérique 0: Loopback PCM [Loopback PCM] Sous-périphériques: 2/2 Sous-périphérique #0: subdevice #0 Sous-périphérique #1: subdevice #1 carte 1: Loopback [Loopback], périphérique 1: Loopback PCM [Loopback PCM] Sous-périphériques: 2/2 Sous-périphérique #0: subdevice #0 Sous-périphérique #1: subdevice #1 # Use the loopback device $ aplay -D hw:1,0,0 sound.wave & # Suspend computer $ pm-suspend # Wake up the computer
That's enough to reproduce this bug. Here are the kernel logs:
[ 181.994434] PM: resume of devices complete after 3301.753 msecs [ 182.006413] Restarting tasks ... done. [ 182.006590] ------------[ cut here ]------------ [ 182.006605] kernel BUG at kernel/timer.c:908! [ 182.006619] video LNXVIDEO:00: Restoring backlight state [ 182.006621] invalid opcode: 0000 [#1] PREEMPT SMP [ 182.006640] Modules linked in: snd_aloop af_packet nfsd auth_rpcgss nfs_acl nfs lockd fscache sunrpc ipv6 loop uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core videodev media joydev hid_generic usbhid coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel xts aes_x86_64 lrw i915 gf128mul i2c_algo_bit intel_agp intel_gtt drm_kms_helper ablk_helper drm cryptd iTCO_wdt snd_hda_codec_hdmi i2c_i801 psmouse iTCO_vendor_support snd_hda_codec_via snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_page_alloc iwlwifi cfg80211 snd_seq snd_seq_device snd_timer snd ehci_pci button battery ac rtc_cmos microcode video i2c_core soundcore lpc_ich evdev serio_raw mei wmi ehci_hcd rfkill ext4 crc16 jbd2 mbcache sg sr_mod sd_mod cdrom ahci libahci libata scsi_mod thermal r8169 mii xhci_hcd [ 182.006642] CPU 1 [ 182.006642] Pid: 2982, comm: aplay Not tainted 3.8.0-rc5-kdump #1 System76, Inc. Gazelle Professional/Gazelle Professional [ 182.006646] RIP: 0010:[<ffffffff81063f8f>] [<ffffffff81063f8f>] add_timer+0xf/0x20 [ 182.006647] RSP: 0018:ffff880214a93d40 EFLAGS: 00010082 [ 182.006647] RAX: 00000000fffe34c9 RBX: ffff88021570e200 RCX: 00000000fffe344c [ 182.006648] RDX: 000000000001f3ff RSI: 0000000000f42400 RDI: ffff88021492f350 [ 182.006648] RBP: ffff88021492f300 R08: 000000000001f400 R09: 0000000000000020 [ 182.006649] R10: ffff88021588f800 R11: 0000000000000206 R12: 00000000fffffffe [ 182.006649] R13: ffff880214a3cc00 R14: ffff880214bbc464 R15: ffff88021588f800 [ 182.006650] FS: 00007f3489ed0700(0000) GS:ffff88021f240000(0000) knlGS:0000000000000000 [ 182.006650] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 182.006651] CR2: 0000000000000000 CR3: 00000002148fe000 CR4: 00000000001407e0 [ 182.006652] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 182.006652] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 182.006653] Process aplay (pid: 2982, threadinfo ffff880214a92000, task ffff880215928000) [ 182.006653] Stack: [ 182.006654] ffffffffa0d0947c 00000000000000b4 00000b2c00000003 0000000000003e80 [ 182.006655] ffffffffa02fbe80 ffff880214a3cc00 0000000000000003 ffff880214a3cc00 [ 182.006656] 0000000000000000 0000000000000fa0 ffffffffa02f01b0 0000000000003e80 [ 182.006656] Call Trace: [ 182.006659] [<ffffffffa0d0947c>] ? loopback_trigger+0x20c/0x2e0 [snd_aloop] [ 182.006664] [<ffffffffa02f01b0>] ? snd_pcm_action_single+0x30/0x80 [snd_pcm] [ 182.006667] [<ffffffffa02f86d1>] ? snd_pcm_lib_write1+0x391/0x400 [snd_pcm] [ 182.006669] [<ffffffffa02f5ab0>] ? snd_pcm_lib_readv_transfer+0x170/0x170 [snd_pcm] [ 182.006672] [<ffffffffa02f3f05>] ? snd_pcm_playback_ioctl1+0x255/0x270 [snd_pcm] [ 182.006674] [<ffffffffa02f3f47>] ? snd_pcm_playback_ioctl+0x27/0x30 [snd_pcm] [ 182.006676] [<ffffffff8115f43f>] ? do_vfs_ioctl+0x8f/0x530 [ 182.006678] [<ffffffff8114e4de>] ? vfs_read+0xfe/0x180 [ 182.006679] [<ffffffff8115f980>] ? sys_ioctl+0xa0/0xc0 [ 182.006681] [<ffffffff814591ad>] ? system_call_fastpath+0x1a/0x1f [ 182.006691] Code: e9 4c fe ff ff 4d 89 f4 e9 d4 fe ff ff 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 83 3f 00 75 09 48 8b 77 10 e9 a1 fd ff ff <0f> 0b 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 83 ec 08 [ 182.006692] RIP [<ffffffff81063f8f>] add_timer+0xf/0x20 [ 182.006692] RSP <ffff880214a93d40>
I tried to change a few things in the snd_aloop driver, but this code is way beyond my understanding. I can't fix that myself.
Feel free to contact me if you need more information. Thanks !
Regards, Arnaud