[pulseaudio-discuss] Pulse segfault when xcb related funcitnos are called.
Colin Guthrie
gmane at colin.guthr.ie
Fri Sep 17 06:12:21 PDT 2010
'Twas brillig, and Colin Guthrie at 17/09/10 09:42 did gyre and gimble:
> 'Twas brillig, and Colin Guthrie at 17/09/10 09:22 did gyre and gimble:
>> I guess it's likely some resurfacing of something similar to this.
>>
>>
>> So I think that's all a red herring.
>
> Go go gadget contradict-o-tron.
>
> Ignore the first line, I think those bugs are likely unrelated.
>
> I wonder if perhaps it's a problem that there are no screens :s
>
> Perhaps calling:
>
> xcb_setup_roots_length() first and checking the value to see if it's > 0
> would avoid the problems?
>
> Actually in looking at this I think I can see how to fix the missing
> functionality in the master version which appears to check additional
> screens of the display. I'm obviously only chekcing the first, with this
> patch (as did 0.9.21) but git master checks additional screens.
>
> I guess checking for the length is a valid thing to do.
>
> Are you able to reproduce the bug yourself?
>
>
>
> Col
Looking at the implementation of xcb_setup_vendor_end, it ultimately
dereferences *R:
xcb_generic_iterator_t
xcb_setup_vendor_end (const xcb_setup_t *R /**< */)
{
xcb_generic_iterator_t i;
i.data = ((char *) (R + 1)) + (R->vendor_len);
i.rem = 0;
i.index = (char *) i.data - (char *) R;
return i;
}
Now we make sure the xcb connection itself is fine when we use it but I
do not check the return value of xcb_get_setup() (as it was not checked
in the tutorial).
Accroding to it's implementation however:
const xcb_setup_t *xcb_get_setup(xcb_connection_t *c)
{
if(c->has_error)
return 0;
/* doesn't need locking because it's never written to. */
return c->setup;
}
It can easily return 0.
I guess I need to deal with that case. Should be a simple patch. I'll
get something out later today.
Col
--
Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/
Day Job:
Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
Mandriva Linux Contributor [http://www.mandriva.com/]
PulseAudio Hacker [http://www.pulseaudio.org/]
Trac Hacker [http://trac.edgewall.org/]
More information about the pulseaudio-discuss
mailing list