Subject: Emoji causing Emacs (GTK+3 backend) to crash
From: Yegor Timoshenko <[email-masked]>
To: [email-masked]
Date: Tue, 9 Jan 2018 17:37:33 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Here is the Unicode symbol that causes Emacs to crash: ✅

Reproduced on the following Emacs/GTK versions:

GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
 of 2018-01-05

GNU Emacs 25.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
 of 2017-12-20

Error log:

X protocol error: BadLength (poly request too large or internal Xlib
length error) on protocol request 139
When compiled with GTK, Emacs cannot recover from X disconnects.
This is a GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=85715
For details, see etc/PROBLEMS.
Fatal error 6: Aborted
(-emacs-wrapped:24344): GLib-WARNING **: g_main_context_prepare()
called recursively from within a source's check() or prepare() member.

(-emacs-wrapped:24344): GLib-WARNING **: g_main_context_check() called
recursively from within a source's check() or prepare() member.

Backtrace:
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x509e5c]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4efa6b]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x509a63]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c359b]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c3896]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c391b]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(_XError+0x11d)[0x7effd711a13d]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(+0x42047)[0x7effd7117047]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(+0x42105)[0x7effd7117105]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(_XEventsQueued+0x55)[0x7effd7117a05]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(XFlush+0x1a)[0x7effd70f953a]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(+0x61aae)[0x7effd7136aae]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(XDestroyIC+0x12)[0x7effd7124a62]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4d41ac]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4cbeab]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4cc2fb]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4253a7]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c360b]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c3896]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c391b]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(_XError+0x11d)[0x7effd711a13d]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(+0x42047)[0x7effd7117047]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(+0x42105)[0x7effd7117105]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(_XEventsQueued+0x55)[0x7effd7117a05]
/nix/store/x4cqrnzcvcc1lqvz41cp0dxqbnvsmhfk-libX11-1.6.5/lib/libX11.so.6(XPending+0x57)[0x7effd7109697]
/nix/store/v2n1kfxk63p6ypwv3yi9yjp676hcsdyj-gtk+3-3.22.26/lib/libgdk-3.so.0(+0x683ae)[0x7effd8f7f3ae]
/nix/store/ciz98qjymi65iaq535nylgi36mx9m6jl-glib-2.54.2/lib/libglib-2.0.so.0(g_main_context_prepare+0x15d)[0x7effd78846fd]
/nix/store/ciz98qjymi65iaq535nylgi36mx9m6jl-glib-2.54.2/lib/libglib-2.0.so.0(+0x4a15b)[0x7effd788515b]
/nix/store/ciz98qjymi65iaq535nylgi36mx9m6jl-glib-2.54.2/lib/libglib-2.0.so.0(g_main_context_pending+0x27)[0x7effd7885307]
/nix/store/v2n1kfxk63p6ypwv3yi9yjp676hcsdyj-gtk+3-3.22.26/lib/libgtk-3.so.0(gtk_events_pending+0xd)[0x7effd943336d]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4c374f]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4f8c09]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x4f8ff5]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x5cbb87]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x57cbe4]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x5cdd04]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x5cdfab]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x5ceada]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x441507]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x44c848]
/nix/store/4znykvnf1xyflhq9z7albfb910xpl4i4-emacs-25.3/bin/.emacs-wrapped[0x44f538]
...
aborted

All software that Emacs 25.3.1 depends on, with versions:

glibc-2.26-75
util-linux-2.31
libffi-3.2.1
lz4-131
xz-5.2.3
libgpg-error-1.27
libgcrypt-1.8.1
libcap-2.25-lib
systemd-234-lib
bash-4.4-p12
libICE-1.0.9
libSM-1.2.2
libXau-1.0.8
libXdmcp-1.1.2
libxcb-1.12
libX11-1.6.5
dbus-1.10.24-lib
gcc-6.4.0-lib
zlib-1.2.11
pcre-8.41
glib-2.54.2
expat-2.2.5
libdaemon-0.14
avahi-0.7
gmp-6.1.2
ncurses-6.0-20171125
gobject-introspection-1.54.1
libXfixes-5.0.2
libXrender-0.9.10
libXcursor-1.1.15
nettle-3.4
openssl-1.0.2n
libevent-2.1.8
unbound-1.6.7-lib
libtasn1-4.12
dns-root-data-2017-10-24
libunistring-0.9.8
p11-kit-0.23.7
gnutls-3.6.1
libXpm-3.5.12
gsettings-desktop-schemas-3.24.1
dejavu-fonts-minimal-2.37
bzip2-1.0.6.0.1
libpng-apng-1.6.34
freetype-2.7.1
fontconfig-2.12.1-lib
atk-2.26.1
libXft-2.3.2
libXext-1.3.3
libXinerama-1.1.3
libXrandr-1.5.1
libjpeg-turbo-1.5.3
libtiff-4.0.8
libxml2-2.9.7
wayland-1.14.0
graphite2-1.3.6
libpciaccess-0.14
libdrm-2.4.88
libXxf86vm-1.1.4
libXdamage-1.1.4
libxshmfence-1.2
mesa-noglu-17.2.7
pixman-0.34.0
harfbuzz-1.7.1
cairo-1.14.10
pango-1.40.14
dconf-0.26.1-lib
libcroco-0.6.12
jasper-2.0.14
gdk-pixbuf-2.36.7
librsvg-2.40.19
libungif-4.1.4
gettext-0.19.8
epoxy-1.3.1
recordproto-1.14.2
libXi-1.7.9
libXtst-1.2.3
at-spi2-core-2.26.2
at-spi2-atk-2.26.1
libXcomposite-0.4.4
xkeyboard-config-2.22
libxkbcommon-0.7.2
cups-2.2.6-lib
gtk+3-3.22.26
libselinux-2.4
emacs-25.3

---

I also have Noto Emoji font installed, not sure if that changes the
issue. Perhaps this is only ever reproducible when there is some font
containing the glyph.

I'm not sure if I should file this against GNOME bug tracker, but the
fact that there is a symbol that causes Emacs to crash might be used
as a denial of service attack in some contexts (e.g. sending someone
an email, knowing that recipient uses Gnus), and knowing that seems to
be important.

Recompiling Emacs without GTK+3 fixes the issue:

GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw scroll bars)
 of 2018-01-09