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,type
,protocol) 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() call.
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.
The command
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
export LD_PRELOAD=/path/to/mysocket.so
followed by manual invocation of
/usr/bin/flashpeak-slimjet
(or from a menu:
Code: Select all
LD_PRELOAD=/path/to/mysocket.so /usr/bin/flashpeak-slimjet
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.
-----------------------------------------------------
First update:
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