-
Notifications
You must be signed in to change notification settings - Fork 10
Description
I was trying to see why old proprietary application was failing to play sound with osspd (self compiled on Slackware 15.0 i586 with libfuse3 3.16.2 recompiled from -current).
It turned out it was using openat with O_RDWR argument, while sox/mplayer were using O_WRONLY and thus were unaffected by this bug.
Actually, tests seems to fail for ro case too:
guest@slax:~/botva/src/src/ossp$ ./osstest test_open@120 test succeeded (mixerfd >= 0)
test_open@129 test failed (ro_fd >= 0): Invalid argument
test_open@137 test succeeded (wo_fd >= 0)
test_wo@81 test succeeded (ret < 0)
test_wo@84 test succeeded (ret >= 0)
test_wo@87 test succeeded (ret < 0)
test_wo@89 test succeeded (errno == EINVAL)
test_wo@92 test succeeded (ret >= 0)
test_open@145 test failed (rw_fd >= 0): Invalid argument
test_mixer@160 test succeeded (ret >= 0)
Mixer id: OSS Proxy
Name: Mixer
Tests: 2 errors 8 success
git commit 72f82cc
I enabled alsa provider because I do not use pulseaudio normally.
I also set
/etc/modprobe.d/soundcore.conf
with single line
options soundcore preclaim_oss=0
proprietary application in question:
https://web.archive.org/web/20060615000000*/http://www.linuxmedialabs.com/LMLCD/contrib/RPMS/MainActor-3.6-5.i386.rpm
extract into /opt (I used midnight commander)
You can see what it tries to do with /dev/dsp by using
strace -P /dev/dsp app
kernel level OSS emulation with snd-pcm-oss module as itself works, aoss not.
Not sure from where this EINVAL comes? I tried running app and tests with sudo just in case, but they fail like for normal user.
you can try to compile dsp_info program from this page:
https://www.gbppr.net/guerrilla.net/reference/dsp/prog_dsp.htm
it shows similar error by default but if you set flag for openat to O_WRONLY it works.