On Tue, Jan 17, 2017 at 08:47:09PM +0100, Sören Tempel wrote: > Hello there, > > I believe I found a bug in libsl. The drw_text function from libsl > crashes with an X Error when the passed text contains an emoji. The > exact error message is the following: > > X Error of failed request: BadLength (poly request too large or > internal Xlib length error) > Major opcode of failed request: 138 (RENDER) > Minor opcode of failed request: 20 (RenderAddGlyphs) > Serial number of failed request: 28 > Current serial number in output stream: 29 > > I reproduced this bug with dwm and dmenu. When using dmenu you can > reproduce this bug in the following way: First of all you will need to > have a font installed which actually supports emojis. I used Googles > noto emoji font [1]. After installing such a font it will be > automatically picked up by libsl as a fallback font for emojis (assuming > that the font you configured in config.h doesn't support them). > > To reproduce the error message shown above you will then just need to > pass an emoji to dmenu over stdin. I used the clown face (U+1F921) but > different emojis should also work. > > Even though the instructions above are limited to dmenu it also effects > other suckless software using libsl, for instance dwm. Among other > things dwm uses drw_text to display the title of the current window in > the topbar. This is somewhat annoying because if you open a webpage > containing an emoji in its title (assuming your web browser sets the > window title to the page title) your entire window manager will crash. > > I tried to resolve the issue myself the only thing I managed to figure > out is that the Xlib function causing the crash is XftTextExtentsUtf8 > which is called from drw_font_getexts (called from drw_text). However, I > I am too inexperienced with Xlib myself to come up with a patch. > > Sören. > > [1]: https://github.com/googlei18n/noto-emoji >
I cannot reproduce this issue, but it has been reported before. Do you use the latest git version for dmenu? Do you have any custom patches or changes applied? What OS / distro and library versions do you use? Can you provide your config.h, font configuration files and command you used to generate the text? -- Kind regards, Hiltjo