sleeper10 wrote: ↑
Tue Sep 03, 2019 9:01 pm
It turns out that my sound was blocked by extensions on iHeartRadio & Jango. So, now that I seem to have sound everywhere, I marked this as Solved.
On the basis of your post, I removed all extensions. Still no sound in slimjet, on my system, though.
I think you may have lucked out, in having the symptom being caused by an action taken by an extension, rather than being due to being on a system in which the symptom is (likely) due to slimjet doing something, not done by other programs, that causes libpulsecommon
to issue a call to socket(domain,
that fails due to having the 0x80000
bit being set in socket's type
argument(producing a "socket(): Operation not permitted
" error message).
Likely, this can be a problem on a system in which use of that bit value in the type
argument is not supported (that includes my Mint 18.1
system), but in which it is possible for the version of libpulsecommon supplied with the system to set that bit on the socket()
If I can find some free time, I will try substituting the C library's wrapper for the socket call with one that strips that bit out before invoking the actual socket system call. This may be done by writing a small one-function library that contains a private definition of socket()
which makes use of the syscall()
function (see man syscall). One would compile this for position independent code (-fPIC in gcc
) and link it as a shared library.
Code: Select all
gcc -fPIC -shared -c mysocket.c -Wall -o mysocket.so
should accomplish both the compile and link.
Afterward, it would just be necessary to make the replacement available to slimjet by setting
followed by manual invocation of /usr/bin/flashpeak-slimjet
(or from a menu:
Code: Select all
as a single command.)
The only problems I could foresee running into might be 32 bit dependencies, given that while the syscall()
function is generic and does not know about argument sizes, the default wrappers for individual syscalls do have such knowledge and could perform undocumented conversions that might need to be emulated in order to correctly get one's arguments into the kernel when using the syscall()
function. If it doesn't work first time off, it might be necessary to disassemble the default wrapper for socket()
in the C library (to examine the function prologue and the code path used for passing the actual arguments to the kernel). With any luck, that wouldn't be necessary, though.
I tried the replacement for the socket()
call. The "socket(): Operation not permitted
" error message is now gone, but I fear I may have run into the problem suggested in my previous paragraph, as Slimjet is now blocking in a poll()
call and proceeding to bring up a window. It will take some examination.
I could not find a definition for the 0x80000
bit in headers on my 32 bit Mint 18 system. Could someone with a different system check to see if that bit is defined for being or'ed in to the type
argument for socket()
on your machine? - thanks