In which situation?
I was testing something that listens for alsa events and for that I ran a continuous loop that did:
while true do aconnect 128:1 14:0 aconnect -d 128:1 14:0 aconnect -d 128:2 128:1 aconnect 128:2 128:1 done
I ran 5 instances in parallel.
14 is midi through 128 is rtpmidi
So rtpmidi process keeps running during the loop, that is, it's only about connection and disconnection, right? Also, you're listening to an event during that -- but how?
I tried it again but with a simpler setup:
I've got these devices:
root@lappiemctopface:~# aplaymidi -l Port Client name Port name 14:0 Midi Through Midi Through Port-0 130:0 FLUID Synth (17032) Synth input port (17032:0) 131:0 VMPK Input in root@lappiemctopface:~# arecordmidi -l Port Client name Port name 14:0 Midi Through Midi Through Port-0 132:0 VMPK Output out
I run this in 3x parallel:
while true do aconnect 132:0 130:0 aconnect -d 132:0 130:0 done
and then in less than a minute I get a backtrace.
[ma aug 2 11:05:13 2021] Call Trace: [ma aug 2 11:05:13 2021] ? snd_seq_deliver_event+0x38/0x90 [snd_seq] [ma aug 2 11:05:13 2021] ? snd_seq_kernel_client_dispatch+0x72/0x90 [snd_seq] [ma aug 2 11:05:13 2021] kfree+0x3bc/0x3e0 [ma aug 2 11:05:13 2021] ? snd_seq_port_disconnect+0x10c/0x140 [snd_seq] [ma aug 2 11:05:13 2021] snd_seq_port_disconnect+0x10c/0x140 [snd_seq] [ma aug 2 11:05:13 2021] snd_seq_ioctl_unsubscribe_port+0xb9/0x180 [snd_seq] [ma aug 2 11:05:13 2021] ? snd_seq_port_get_subscription+0xbb/0xd0 [snd_seq] [ma aug 2 11:05:13 2021] ? __check_object_size.part.0+0x3a/0x150 [ma aug 2 11:05:13 2021] snd_seq_ioctl+0xe8/0x1b0 [snd_seq] [ma aug 2 11:05:13 2021] __x64_sys_ioctl+0x91/0xc0 [ma aug 2 11:05:13 2021] do_syscall_64+0x38/0x90 [ma aug 2 11:05:13 2021] entry_SYSCALL_64_after_hwframe+0x44/0xa9
Using: fluidsynth 2.1.7-1 vmpk 0.7.2-1build1
On: 5.11.0-25-generic (ubuntu) on 2 cores, 2 threads/core cpu (64b).