Subject: Re: bug#43420: icecat causes pulseaudio to crash

From: Mark H Weaver <[email-masked]>
Date: Fri, 18 Sep 2020 01:20:29 -0400

Hi Nathan,

Nathan Dehnel <[email-masked]> writes:
> Pulseaudio is set to autospawn by default, which is maybe why it seems like
> nothing is happening on your computer. Maybe try disabling autospawn and
> try running pulse in a shell.

In my previous tests, I ran pulseaudio from a shell, but I did not
disable autospawn.  I've now done a second round of more careful tests.

First, I disabled autospawn, ran pulseaudio from a shell capturing its
output, and made sure it was the only pulseaudio server running.  I then
performed the same tests that I described in my last email, using
icecat-68.12.0-guix0-preview1 with a fresh profile.  I made sure that
only one pulseaudio server was running, and that icecat was really
talking to it.  These tests were done on a Guix system based on commit
098593e61d0e3ddd8b3dc2225301d6020bf9446b (Sep 7) of Guix's master
branch.  I had two videos playing simultaneously, seeked around in the
videos, switched tabs, etc, and my pulseaudio server did not crash.  Its
output was only one line, printed during startup:

--8<---------------cut here---------------start------------->8---
E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.ServiceUnknown: The name org.bluez was not provided by any .service files
--8<---------------cut here---------------end--------------->8---

I'm not hitting the assertion failure that you are:

--8<---------------cut here---------------start------------->8---
E: [pulseaudio] module-stream-restore.c: Assertion 'pa_hashmap_put(u->dbus_entries, de->entry_name, de) == 0' failed at modules/module-stream-restore.c:1406, function subscribe_callback().
Aborting.
--8<---------------cut here---------------end--------------->8---

Here's the failing assertion in its context:

  https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/v13.0/src/modules/module-stream-restore.c#L1406

I looked for reports of this assertion failing, and found this:

  https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1267234

In the third comment, someone reported experiencing crashes with the
same assertion failure, and that removing their ~/.pulse fixed the
problem:

  https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1267234/comments/3

That was in 2014.  Since then, it looks like ~/.pulse has been moved,
possibly to ~/.config/pulse.

I also found an earlier report from 2012 of this assertion failing,

  https://bugs.freedesktop.org/show_bug.cgi?id=44522

and the brief summary is that fixing it involved making the code in
module-stream-restore more robust in its handling of upgrades from an
older version of a database.  I'm guessing that this refers to the
database files in ~/.config/pulse, with the older location, still
honored, being ~/.pulse.

So, my next suggestion is to kill pulseaudio, delete (or moving out of
the way) both ~/.pulse and ~/.config/pulse, restart it, and then see if
you can still reproduce the problem.

If you *can* still reproduce it, then it's time to provide much more
detailed information about your system, any relevant customizations or
oddities to your setup, whether you're running Guix on top of another
system and if so which system, 'guix describe' output, the precise
versions (and hashes) of pulseaudio and icecat, and precise instructions
on how to reproduce the problem from a fresh icecat profile.

     Thanks,
       Mark