snd-virmidi, as of kernel 5.4.23, does not adhere to the MIDI specification:
From MIDI 1.0 Detailed Specification, Document Version 4.2, Appendix A-
1 (RUNNING STATUS), Page A-2:
"3. Buffer is cleared when a System Exclusive or Common status message is received."
snd-virmidi does not clear the running status in case of a SysEx message.
How to test:
Load snd-virmidi module and get the card number of the module. In the following 5 is assumed as the card number and device 1 is used.
You need two shells, in shell 1 do:
aconnect 'Virtual Raw MIDI 5-1':0 'Virtual Raw MIDI 5-1':0 amidi -p hw:VirMIDI,1 -d
Now, in shell 2 do:
amidi -p hw:VirMIDI,1 -S '80 01 02 F0 01 F7 80 02 03'
This sends a note off, followed by a SysEx, followed by another note off. The result in shell 1 is:
80 01 02 F0 01 F7 02 03
So snd-virmidi did not clear the running status. The correct result would be:
80 01 02 F0 01 F7 80 02 03