Using cvs. Test case attached. the draw() function sets a 0.0-1.0, 0.0-1.0 user-space, selects a font_face and forgets to set the font_size (I guess it defaults to a value like 10?). The png backend works OK, draws part of the large font and clips the rest. The xlib backend crashes.
Created attachment 3152 [details] a test case
Reproduced.
*** Bug 13266 has been marked as a duplicate of this bug. ***
commit 2c8ead12a64d0deff4dc9e32c60f2815fe7c4a63 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 4 17:46:54 2008 +0100 [xlib] Avoiding sending glyphs > XMaxRequestSize. XRenderAddGlyph() does not split its image data across multiple requests and so the glyph surface must be smaller than XMaxRequestSize or else the server will disconnect the client, causing "Fatal IO error 104". As this will require an extension to the XRender spec, we can work around the issue by using our fallbacks if we detect that the glyph will be too large for a single request. See bugs https://bugs.freedesktop.org/show_bug.cgi?id=4339 and http://bugs.freedesktop.org/show_bug.cgi?id=13266 for examples.
FWIW, I looked into this again, and I can reproduce it only if the glyph is larger than 16M. That's 256 times the max request size. Hardcoding it in there. One should track this down into xrender implementation and fix it there.
Xrender uses BigRequest extension for AddGlyphs, if available. Seems like we are hitting the max bigreq size. Trying to find API for that.
commit 1e602b82a19e093309c6c121d1af650dd8b3ec1c Author: Behdad Esfahbod <behdad@behdad.org> Date: Fri May 23 19:04:13 2008 -0400 [cairo-xlib] Fix max-request size calculations First, XMaxRequestSize returns number of 4-byte words. So multiply by 4 is needed in all uses. Next, XRenderAddGlyphs uses BIG-REQUEST extension if available, so when checking for glyph size overflow, we should use XExtendedMaxRequestSize() first. Also use the right format when calculating glyph size. See bug #4339 for history.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.