[Xcb] xcb-render-util crashs

Vincent Torri vtorri at univ-evry.fr
Mon Nov 17 14:10:48 PST 2008



On Mon, 17 Nov 2008, Ian Osgood wrote:

>
> On Nov 17, 2008, at 4:59 AM, Julien Danjou wrote:
>
>> At 1225356671 time_t, Julien Danjou wrote:
>>> I've discovered that cairo crashes on X server not supporting RENDER.
>>> (in this case, vnc4server).
>>>
>>> In fact as soon as xcb-render-util sends a query version requests,
>>> xcb_connection_t get erroneous, so everything crash then.
>>>
>>> The affected code is in cache.c:find_or_create_display()
>>>
>>> 152     version_cookie = xcb_render_query_version(c, 0, 10);
>>> 153     formats_cookie = xcb_render_query_pict_formats(c);
>>> 154     xcb_flush(c);
>>>
>>> when xcb_render_util_query_version(c) is called.
>>>
>>> I've no real clue how to correctly fix that, and I'd appreciate a
>>> hint.
>>> I wonder if this is really normal[1] and if
>>> xcb_render_util_query_version should simply chek for extension
>>> presence
>>> before.
>>>
>>> [1] Well I know I had the same problem in awesome with Xinerama,
>>> and I
>>> do check for extension presence before asking for version.
>>
>> Any one?
>>
>> --
>> Julien Danjou
>> // ÿÿ <julien at danjou.info>   http://julien.danjou.info
>> // 9A0D 5FD9 EB42 22F6 8974  C95C A462 B51E C2FE E5CD
>
> Sorry, I thought you had answered your own question with [1].
>
> Don't call any Render protocol, such as anything in render-util,
> until you verify its presence on the server as you did with Xinerama.
>
> This is a difference in behavior compared to libXrender, which does
> XInitExtension internally. I think the strategy Jamey used when he
> ported utility libraries from Xlib was to separate extension
> initialization from extension usage. An XCB program should batch
> initialize and verify all required extensions soon after connection
> setup in order to minimize latency.

maybe what I did for ecore can help on that.

See the code here:

http://trac.enlightenment.org/e/browser/trunk/ecore/src/lib/ecore_x/xcb/ecore_xcb.c#L148

Vincent


More information about the Xcb mailing list