[pulseaudio-discuss] How to debug a "protocol error" message?

Colin Guthrie gmane at colin.guthr.ie
Tue May 24 01:20:14 PDT 2011

'Twas brillig, and Maarten Bosmans at 24/05/11 08:31 did gyre and gimble:
> 2011/5/23 Quinn Plattel <qiet72 at gmail.com>:
>> Hi,
>> I am currently having problems with communication between a version 0.9.22
>> pulseaudio client and a version 0.9.15 pulseaudio server.
>> Here are the steps to reproduce the error message:
>> pulseaudio server side: ssh -X -R 4713:localhost:4713
>> <remote-pulseaudio-client> "PULSE_SERVER=localhost:4713 pactl stat"
>> client reports:
>> ------------------------
>> Using shared memory pool with 1024 slots of size 64.0 KiB each, total size
>> is 64.0 MiB, maximum usable slot size is 65472
>> Trying to connect to localhost:4713...
>> SHM possible: yes
>> Protocol version: remote 16, local 16
>> Negotiated SHM: no
>> Connection failure: Connection terminated
>> -------------------------
>> server reports:
>> --------------------------
>> protocol error, kicking client
>> --------------------------
>> I have done some testing and a 0.9.15 server has no problems communicating
>> with a 0.9.14 client, but
>> a 0.9.15 server has this error when communicating with a 0.9.19 or 0.9.22
>> client.
>> Where do I begin to debug this error?
> The difficulty here is of course that while the server throws an
> error, you're looking to fix the client side, because there won't be a
> maintainance release of the 0.9.15 series anymore.
> If you can install debug symbols, you can set a breakpoint at
> protocol_error(). This will break in command_stat()
> (src/pulsecore/protocol-native.c), right after the
> !pa_tagstruct_eof(t) check. There you can inspect what kind of
> unexpected extra data is in the tagstruct and take it from there.
> Please also try whether other commands work.

Yup Maarten's advice is good there.

But what is interesting is that our official 0.9.15 version ships with
protocol 15, not 16... Your debug suggests the the remote end is
protocol 16..

This suggests to me that the extensions in the Maemo version are
non-standard and therefore require consultation with their lists. You
should check their code to see what commits changed the protocol version
to 16. It could be that they just backported the changes from our
version 16 shipped in 0.9.16 (which was an API to select client side API
detection) or it could be something completely custom.

As I'm not familiar with their modifications, I cannot really help.



Colin Guthrie

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mageia Contributor [http://www.mageia.org/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]

More information about the pulseaudio-discuss mailing list