I traced pulseaudio instead and the result is the same. If strace
is active, the connection works, and if it’s not, it’s gonna mostly fail.
Here is the trace anyway:
$ ps fauxww | grep pulseaudio
olivier 244730 0.1 0.0 494232 12700 ? S<sl 16:31 0:00 \_ /usr/bin/pulseaudio --daemonize=no
olivier 258283 0.0 0.0 3076 796 pts/1 S+ 16:36 0:00 \_ grep --color pulseaudio
$ sudo strace -f -p 244730
strace: Process 244730 attached with 3 threads
[pid 244748] ppoll([{fd=25, events=POLLIN}, {fd=28, events=POLLIN|POLLERR|POLLNVAL}, {fd=26, events=POLLIN}], 3, NULL, NULL, 8 <unfinished ...>
[pid 244747] ppoll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN|POLLERR|POLLNVAL}, {fd=19, events=POLLIN}], 3, NULL, NULL, 8 <unfinished ...>
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 19, NULL, NULL, 8) = 1 ([{fd=3, revents=POLLIN}])
[pid 244730] accept4(3, NULL, NULL, SOCK_CLOEXEC) = 21
[pid 244730] fcntl(21, F_GETFD) = 0x1 (flags FD_CLOEXEC)
[pid 244730] setsockopt(21, SOL_SOCKET, SO_PRIORITY, [6], 4) = 0
[pid 244730] fcntl(21, F_GETFL) = 0x2 (flags O_RDWR)
[pid 244730] fcntl(21, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] fstat(21, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
[pid 244730] getpeername(21, {sa_family=AF_UNIX}, [128->2]) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] write(5, "W", 1) = 1
[pid 244730] getpeername(21, {sa_family=AF_UNIX}, [128->2]) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] setsockopt(21, SOL_SOCKET, SO_RCVBUF, [65472], 4) = 0
[pid 244730] setsockopt(21, SOL_SOCKET, SO_SNDBUF, [65472], 4) = 0
[pid 244730] getsockname(21, {sa_family=AF_UNIX, sun_path="/run/user/1000/pulse/native"}, [256->30]) = 0
[pid 244730] setsockopt(21, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0
[pid 244730] read(4, "WWWW", 10) = 4
[pid 244730] read(4, 0x7ffc391cc05e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN|POLLOUT}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, {tv_sec=59, tv_nsec=999819000}, NULL, 8) = 1 ([{fd=21, revents=POLLIN|POLLOUT}], left {tv_sec=59, tv_nsec=999813955})
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\0\1\24\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=20}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 20
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "WW", 10) = 2
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, {tv_sec=59, tv_nsec=999671000}, NULL, 8) = 1 ([{fd=21, revents=POLLIN}], left {tv_sec=59, tv_nsec=999668750})
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="L\0\0\0\10L\0\0\0\0L@\0\0!x\0\0\1\0\332j6\216$\230\341*\222\21f\250"..., iov_len=276}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 276
[pid 244730] write(5, "W", 1) = 1
[pid 244730] getuid() = 1000
[pid 244730] getuid() = 1000
[pid 244730] getgid() = 1000
[pid 244730] write(5, "W", 1) = 1
[pid 244730] getpid() = 244730
[pid 244730] sendmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\0\0\17\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\2L\0\0\0\0L\0"..., iov_len=35}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=244730, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, MSG_NOSIGNAL) = 35
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "WWWW", 10) = 4
[pid 244730] read(4, 0x7ffc391cc05e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN|POLLOUT}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLOUT}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "W", 10) = 1
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLIN}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\0\1e\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=20}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 20
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "WW", 10) = 2
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLIN}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="L\0\0\0\tL\0\0\0\1Ptapplication.process."..., iov_len=357}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 357
[pid 244730] write(5, "W", 1) = 1
[pid 244730] write(5, "W", 1) = 1
[pid 244730] write(5, "W", 1) = 1
[pid 244730] sendto(21, "\0\0\0\17\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\2L\0\0\0\1L\0"..., 35, MSG_NOSIGNAL, NULL, 0) = 35
[pid 244730] read(4, "WWWW", 10) = 4
[pid 244730] read(4, 0x7ffc391cc05e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLIN}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\0\0\n\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=20}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 20
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "WW", 10) = 2
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLIN}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="L\0\0\0\24L\0\0\0\2", iov_len=10}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=246871, uid=1000, gid=1000}}], msg_controllen=32, msg_flags=0}, 0) = 10
[pid 244730] write(5, "W", 1) = 1
[pid 244730] getuid() = 1000
[pid 244730] uname({sysname="Linux", nodename="portol", ...}) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] sendto(21, "\0\0\0\224\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\2L\0\0\0\2tp"..., 168, MSG_NOSIGNAL, NULL, 0) = 168
[pid 244730] read(4, "WWW", 10) = 3
[pid 244730] read(4, 0x7ffc391cc05e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=21, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 20, NULL, NULL, 8) = 1 ([{fd=21, revents=POLLIN|POLLHUP}])
[pid 244730] write(5, "W", 1) = 1
[pid 244730] recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="", iov_len=20}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=0, uid=0, gid=0}}], msg_controllen=32, msg_flags=0}, 0) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] write(5, "W", 1) = 1
[pid 244730] close(21) = 0
[pid 244730] write(5, "W", 1) = 1
[pid 244730] read(4, "WWWW", 10) = 4
[pid 244730] read(4, 0x7ffc391cc05e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 244730] ppoll([{fd=4, events=POLLIN}, {fd=9, events=POLLIN}, {fd=22, events=POLLIN}, {fd=16, events=POLLIN}, {fd=33, events=POLLIN}, {fd=32, events=POLLIN}, {fd=3, events=POLLIN}, {fd=31, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=POLLIN|POLLERR|POLLHUP}, {fd=30, events=0}, {fd=24, events=POLLIN}, {fd=27, events=POLLIN}, {fd=17, events=POLLIN}, {fd=20, events=POLLIN}, {fd=15, events=POLLIN|POLLERR|POLLHUP}, {fd=15, events=0}, {fd=14, events=POLLIN}, {fd=13, events=POLLIN}, {fd=7, events=POLLIN}], 19, NULL, NULL, 8^Cstrace: Process 244730 detached
<detached ...>
strace: Process 244747 detached
strace: Process 244748 detached
I would be happy to do more tests if you have some ideas. On my side, I’m gonna make it work by sharing the authentication cookie between the host and guest or accepting anonymous connections on pulseaudio.