From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#63589: [PATCH] 29.0.91; crash after creating graphical frames via emacsclient when compiled with cairo-xcb Date: Mon, 22 May 2023 10:48:43 +0800 Message-ID: <87edn9ytbo.fsf@yahoo.com> References: <871qj9246a.fsf@yahoo.com> <83o7mdrc3y.fsf@gnu.org> <83bkidr37i.fsf@gnu.org> <87wn11yyi4.fsf@yahoo.com> Reply-To: Po Lu Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30946"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: 63589@debbugs.gnu.org, Thiago Melo To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon May 22 04:50:23 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q0vcr-0007s0-Kn for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 22 May 2023 04:50:21 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q0vca-0005l1-NS; Sun, 21 May 2023 22:50:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q0vcY-0005kp-Vg for bug-gnu-emacs@gnu.org; Sun, 21 May 2023 22:50:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q0vcY-0004Os-Mr for bug-gnu-emacs@gnu.org; Sun, 21 May 2023 22:50:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q0vcY-0007JH-5O for bug-gnu-emacs@gnu.org; Sun, 21 May 2023 22:50:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Po Lu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 22 May 2023 02:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63589 X-GNU-PR-Package: emacs Original-Received: via spool by 63589-submit@debbugs.gnu.org id=B63589.168472374428026 (code B ref 63589); Mon, 22 May 2023 02:50:02 +0000 Original-Received: (at 63589) by debbugs.gnu.org; 22 May 2023 02:49:04 +0000 Original-Received: from localhost ([127.0.0.1]:33094 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q0vbb-0007Hy-MA for submit@debbugs.gnu.org; Sun, 21 May 2023 22:49:04 -0400 Original-Received: from sonic312-25.consmr.mail.ne1.yahoo.com ([66.163.191.206]:36271) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q0vbZ-0007HV-O3 for 63589@debbugs.gnu.org; Sun, 21 May 2023 22:49:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1684723736; bh=ks3d9B3HoHvXqRlUJolXX5rTIyilYoKayABb6G3sLAo=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=M/beJS0Z6BIM+b+A5QospjyT7W9BYIEJfIQTSwx0OHlxi+PrsZmMJOoG1qSh/YIEK/MQEMYly73N7npstxj662zqNfWG0vUK0wiemeNRAaQd9D7FG8UnaHYvBb7ssR+A58vR1LTtuwg8wvrnkyRsc/z0lOXwZIwxzswz6HZujjONOqXdhH4uwXFvxeW03/cKodgB9GdeI5B3pXWaIJ+JEghEPb9iNaCDPiSFiak7nnlYUY5Bmj9wOXRe5cW8ZNr1AU5VNVj4QM/aWvt4p/Sq+iirka6r69+EEgK1UZ01b19ia0CBZ9UnkFwFdCSBtpFrCsmCeMMmvsofm2iQSkfm0Q== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1684723736; bh=ZNQTsT1HKPAnGt3dCcI//l+FYPFS0Tac9Vbm6ut33Bw=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=DGoXnVkfctlJwcxoEA2WefnZE7wrI42Tr03MUQvPmwbWgBvwXz4tZ7Mb8/YmsP+QEJudIVWWb8x3aAijWKhcxM5otrQRN5MNn4bd8hy73e9PNTGKE1zCyqJrFauxkiBMoO+IGZAEIuXkEim7ZELK9s15Q58OKVuOj7fk2I3qK30K6w2V+iBFFvXx8SFm39bTJ3E2ZqmptqQntQO9PDx4tqpzIJNe+/nnuFxTm1plyw3jWqko0cbWi0ItenXJPp/Ly5iPFf7L738qhkSz1b176lcaWDBVNzR6SwJH7K0qFDOszATuXxvgACR1uCUgI4xCUI0QruXqUIRRbs0XFA5Ilw== X-YMail-OSG: w2tDV0kVM1lJ1ncTQSKDm6ll4hIb6As9s.wR8zUQeT1eZDzTSL1OKO.Gqch_ylt LTTrZTtE9QsVpOf1iX7Ot2TTwOPiyVnxkIx2E7BzBj345NDFvTOn7ABpwV6Tgnz5pAT1HkLUxv7U 9oSrUPtGYFmKw62zp_gIn7Zl1hMsFFuurMrptHearYIZYb3nC_CC0ws4QX4KHHUcgg8vhOvhsRN0 5GMmJEOXQQpA43xu6co4l6YsD7ByzRlUJi5974Uxw65GMy_gqcfHkI8TnSDGYP0CckmOV0eH96Ym FQoZFlV5iEIXHeN81VTXvRkSObXSSn9xxmiI67jaDOx0Oa70HTfoQCcy_kL6YDsKAGL1sKDFknuf 8QGUNS5ihy6nDNSBGniyXs0cCAstmuiFG_GZ3ir.Ay0RVgDFED6Vcs9QOtOqzQxXvt1JKmomOdB9 sEKsRD4YHKX.LzQBobWUVuernhziGyD45UUbq2q9Wsb7BUxHx._ZU9dasK7q7cIzWpH_YUwTxKJg oAw7PCURGEQZdsA.MSUAq4PnrdR.KL5bJ0R.pA4bddD.79o.w8FXYi9XyIqxc_r61fSMDYHavivs FeK_VeQ2EfMZsKXzCxFPoFIBUaGczRt.zGAyplAPsUpP1uSyvAQpa7HuUMVPcPwIOTUkCbAeOQRW XXthOONgZ7jUDdvRZyK6fxwehLhOmyhArjONwhfUWNJ_vWrM5OqC2qoySnuQlSu3gASpgd.csoWK USe3i27Lbv7TLy1vDLW83Z0efU.ktYUgWaUNgKfrRZ.3vqYCTqQJxyBqgJEpKWnoLWK.Tcgv0Scz IaH2mc7_PpHHEdLJAmJUyGQ.CC2tR5qoVbLNj4JKf8 X-Sonic-MF: X-Sonic-ID: a6f6fb31-8036-4897-89fa-ccf2d4cf26fb Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic312.consmr.mail.ne1.yahoo.com with HTTP; Mon, 22 May 2023 02:48:56 +0000 Original-Received: by hermes--production-sg3-748897c457-f8pch (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 83777c1a9fa1bd6bbac6ca4fe7b6ac37; Mon, 22 May 2023 02:48:51 +0000 (UTC) In-Reply-To: <87wn11yyi4.fsf@yahoo.com> (Po Lu's message of "Mon, 22 May 2023 08:56:51 +0800") X-Mailer: WebService/1.1.21495 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:262126 Archived-At: Po Lu writes: > The situation in which this crash occurs is sufficiently uncommon. It's > the result of another bug in Emacs, hopefully one that should be safe to > fix. Unfortunately, both this crash and its cause (actually, a RenderBadPicture from a glyph compositing request somewhere within cairo) are bugs in cairo-xcb itself. Emacs never allows the display connection to be closed without dereferencing all Cairo resources created for that display connection, but Cairo keeps its own references around. The only reasonable solution is to disable the use of XCB surfaces by default. Is this OK for the release branch? diff --git a/configure.ac b/configure.ac index 95167329c28..d7296168ff9 100644 --- a/configure.ac +++ b/configure.ac @@ -459,6 +459,7 @@ AC_DEFUN OPTION_DEFAULT_ON([lcms2],[don't compile with Little CMS support]) OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support]) OPTION_DEFAULT_ON([cairo],[don't compile with Cairo drawing]) +OPTION_DEFAULT_OFF([cairo-xcb], [use XCB surfaces for Cairo support]) OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support]) OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support]) OPTION_DEFAULT_ON([native-image-api], [don't use native image APIs (GDI+ on Windows)]) @@ -3571,14 +3572,19 @@ AC_DEFUN CAIRO_MODULE="cairo >= $CAIRO_REQUIRED" EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE]) if test $HAVE_CAIRO = yes; then - CAIRO_XCB_MODULE="cairo-xcb >= $CAIRO_REQUIRED" - EMACS_CHECK_MODULES([CAIRO_XCB], [$CAIRO_XCB_MODULE]) - if test $HAVE_CAIRO_XCB = yes; then - CAIRO_CFLAGS="$CAIRO_CFLAGS $CAIRO_XCB_CFLAGS" - CAIRO_LIBS="$CAIRO_LIBS $CAIRO_XCB_LIBS" - AC_DEFINE([USE_CAIRO_XCB], [1], - [Define to 1 if cairo XCB surfaces are available.]) - fi + dnl Cairo XCB support is disabled by default, as the Cairo XCB + dnl backend itself seems to be buggy: multiple Cairo devices can + dnl be created for the same visual on the same connection, and + dnl the devices are never destroyed, even when all references go + dnl away. + AS_IF([test "x$with_cairo_xcb" = "xyes"], [ + CAIRO_XCB_MODULE="cairo-xcb >= $CAIRO_REQUIRED" + EMACS_CHECK_MODULES([CAIRO_XCB], [$CAIRO_XCB_MODULE]) + AS_IF([test "x$HAVE_CAIRO_XCB" = "xyes"], [ + CAIRO_CFLAGS="$CAIRO_CFLAGS $CAIRO_XCB_CFLAGS" + CAIRO_LIBS="$CAIRO_LIBS $CAIRO_XCB_LIBS" + AC_DEFINE([USE_CAIRO_XCB], [1], + [Define to 1 if cairo XCB surfaces are available.])])]) AC_DEFINE([USE_CAIRO], [1], [Define to 1 if using cairo.]) CFLAGS="$CFLAGS $CAIRO_CFLAGS" LIBS="$LIBS $CAIRO_LIBS"