From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36609: 27.0.50; Possible race-condition in threading implementation Date: Fri, 12 Jul 2019 19:24:38 +0000 Message-ID: References: <87muhks3b5.fsf@hochschule-trier.de> <83muhj2zmb.fsf@gnu.org> <83ims72xcj.fsf@gnu.org> <83a7dj2sz9.fsf@gnu.org> <835zo72jmr.fsf@gnu.org> <834l3r2jbe.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000b3a7a4058d80de4f" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="204095"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 36609@debbugs.gnu.org, politza@hochschule-trier.de To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jul 12 21:26:06 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hm1BG-000qte-9j for geb-bug-gnu-emacs@m.gmane.org; Fri, 12 Jul 2019 21:26:06 +0200 Original-Received: from localhost ([::1]:51984 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hm1BF-0006At-8s for geb-bug-gnu-emacs@m.gmane.org; Fri, 12 Jul 2019 15:26:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45065) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hm1BD-0006Am-33 for bug-gnu-emacs@gnu.org; Fri, 12 Jul 2019 15:26:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hm1BC-0003wa-2i for bug-gnu-emacs@gnu.org; Fri, 12 Jul 2019 15:26:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:60156) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hm1BB-0003vt-U4 for bug-gnu-emacs@gnu.org; Fri, 12 Jul 2019 15:26:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hm1BB-0002mi-NV for bug-gnu-emacs@gnu.org; Fri, 12 Jul 2019 15:26:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 12 Jul 2019 19:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36609 X-GNU-PR-Package: emacs Original-Received: via spool by 36609-submit@debbugs.gnu.org id=B36609.156295952210656 (code B ref 36609); Fri, 12 Jul 2019 19:26:01 +0000 Original-Received: (at 36609) by debbugs.gnu.org; 12 Jul 2019 19:25:22 +0000 Original-Received: from localhost ([127.0.0.1]:40744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hm1AY-0002lo-70 for submit@debbugs.gnu.org; Fri, 12 Jul 2019 15:25:22 -0400 Original-Received: from mail-ot1-f67.google.com ([209.85.210.67]:45180) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hm1AW-0002la-VO for 36609@debbugs.gnu.org; Fri, 12 Jul 2019 15:25:21 -0400 Original-Received: by mail-ot1-f67.google.com with SMTP id x21so10513434otq.12 for <36609@debbugs.gnu.org>; Fri, 12 Jul 2019 12:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AhgdYj1G21HGZTdqmJ0skkYYtWUuBTkRPrbWx5ljj24=; b=kwQ9ZOhdaedfKh5ad/jwr3I88OhPo2JYEVlU1NuXyPE2DizAWW1a3EwA1ZVhOUEeqN BNa5yGpWDpnqkUgyuovLzie4Sfcohh6iueVy/VZLdNWpEWuq9wl5X/QfRLPD4c8XenJ9 Myvt01zz4Mntn59afBm9rqQ9IETqssXlGV3Bz3GcRsog0ysx+HmOOFhLBsBhdbC2cIL9 LcXtE21R+xYTq4YlmTYQdeRPfMX79LflXlv2WbhbZZlt+TSkSyWp4jRIqcMU1OhJCU3Y 7i0wR8zLJfvTkDYQvYBo8c5SvsUPd6atm6wobH3dMTc0svwLKIDV8GJzZVuXdR1GZskw 1pMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AhgdYj1G21HGZTdqmJ0skkYYtWUuBTkRPrbWx5ljj24=; b=GSJj3ClooJh+NbZRvMzJhXtp7s65nsiPgBzBVmGbj7TKhqb19n32O8Vct1hxM+MWdI vuaCjtxz1cF1G15MFHs+lhIld8E1t6T4FgjtXWbUyD8nIwcyLfU0rwNsf9xcDYL3oK8S rEDeCuLyU+WPKXFuUdib/2BhRoXuSE3jtvEvfjQT/MBeO2JP5HEV3kov/72RBbt/8ETQ dovnaqcB4KzGUGnwbN1xb/ljJA9Ef8bOLjsoi/m5kZZa6ozflZlgmDqxTFDrZPmZGcfj TIGKQBu3Z+GpD9E52yFbiMBoQClKJu46Z5TOv1tGeW1CNjOZyRMVoFBnPUGBhGymB7gC IpwA== X-Gm-Message-State: APjAAAV1sP0FnUXBvto+v2qaOt8N+DFnKC7fEJxBAO1ErBrs36llSSkl ik/zo80x74uFeyiLyaRqtj5wHBt/mntD1G65lRg= X-Google-Smtp-Source: APXvYqy9fvljvgoUzipQQGdHbNPPy5nViIzkyzip2oW94L/G0xO57sxVkgQFwwylU3uwwAdGI6BT2alBbFm3Zo+EEDw= X-Received: by 2002:a9d:664c:: with SMTP id q12mr5274838otm.175.1562959515182; Fri, 12 Jul 2019 12:25:15 -0700 (PDT) In-Reply-To: <834l3r2jbe.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 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.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:162802 Archived-At: --000000000000b3a7a4058d80de4f Content-Type: text/plain; charset="UTF-8" On Fri, Jul 12, 2019 at 6:34 PM Eli Zaretskii wrote: > > Sorry, I don't want to call unwind-protect there. Call me paranoid, > > if you want. > > Maybe I should explain the rationale behind that paranoia. The main I don't think it's paranoia, I just wasn't sure there was a good way to avoid it. I'm now convinced that there simply is no safe way to call select() from two threads at once when using glib. I think our options are hacking around it and hoping nothing breaks (this is what the attached patch does; it releases the main context glib lock from the wrong thread soon "after" the other thread called select, but there's actually no way to ensure that "after" is accurate), or rewriting things so we have a single thread that does all the select()ing. > reason is that you are proposing to do that inside code that can > switch threads. Switching threads means switching to another stack > and also to another set of handlers. So using the unwind-protect > machinery in this situation is IMO asking for trouble. Thanks for explaining. --000000000000b3a7a4058d80de4f Content-Type: application/x-patch; name="glib-hack.diff" Content-Disposition: attachment; filename="glib-hack.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jy0gqn390 ZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQuYyBiL3NyYy90aHJlYWQuYwppbmRleCBlMmRlYWRkN2E4 Li5iMWFkNWU4OTQ2IDEwMDY0NAotLS0gYS9zcmMvdGhyZWFkLmMKKysrIGIvc3JjL3RocmVhZC5j CkBAIC0xOSw2ICsxOSw5IEBAIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogCiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8c2V0am1w Lmg+CisjaWZkZWYgSEFWRV9HTElCCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCiAjaW5jbHVk ZSAibGlzcC5oIgogI2luY2x1ZGUgImNoYXJhY3Rlci5oIgogI2luY2x1ZGUgImJ1ZmZlci5oIgpA QCAtODAsMTEgKzgzLDI2IEBAIHBvc3RfYWNxdWlyZV9nbG9iYWxfbG9jayAoc3RydWN0IHRocmVh ZF9zdGF0ZSAqc2VsZikKIHsKICAgc3RydWN0IHRocmVhZF9zdGF0ZSAqcHJldl90aHJlYWQgPSBj dXJyZW50X3RocmVhZDsKIAorI2lmZGVmIEhBVkVfR0xJQgorICBpZiAoY3VycmVudF90aHJlYWQg IT0gTlVMTCAmJiBjdXJyZW50X3RocmVhZC0+aG9sZGluZ19nbGliX2xvY2spCisgICAgZ19tYWlu X2NvbnRleHRfcmVsZWFzZSAoY3VycmVudF90aHJlYWQtPmNvbnRleHQpOworI2VuZGlmCisKICAg LyogRG8gdGhpcyBlYXJseSBvbiwgc28gdGhhdCBjb2RlIGJlbG93IGNvdWxkIHNpZ25hbCBlcnJv cnMgKGUuZy4sCiAgICAgIHVuYmluZF9mb3JfdGhyZWFkX3N3aXRjaCBtaWdodCkgY29ycmVjdGx5 LCBiZWNhdXNlIHdlIGFyZSBhbHJlYWR5Ci0gICAgIHJ1bm5pbmcgaW4gdGhlIGNvbnRleHQgb2Yg dGhlIHRocmVhZCBwb2ludGVkIGJ5IFNFTEYuICAqLworICAgICBydW5uaW5nIGluIHRoZSBjb250 ZXh0IG9mIHRoZSB0aHJlYWQgcG9pbnRlZCB0byBieSBTRUxGLiAgKi8KICAgY3VycmVudF90aHJl YWQgPSBzZWxmOwogCisjaWZkZWYgSEFWRV9HTElCCisgIGlmIChjdXJyZW50X3RocmVhZC0+aG9s ZGluZ19nbGliX2xvY2spCisgICAgZG8KKyAgICAgIHsKKwljdXJyZW50X3RocmVhZC0+aG9sZGlu Z19nbGliX2xvY2sgPQorCSAgZ19tYWluX2NvbnRleHRfYWNxdWlyZSAoY3VycmVudF90aHJlYWQt PmNvbnRleHQpOworICAgICAgfQorICAgIHdoaWxlICghY3VycmVudF90aHJlYWQtPmhvbGRpbmdf Z2xpYl9sb2NrKTsKKyNlbmRpZgorCiAgIGlmIChwcmV2X3RocmVhZCAhPSBjdXJyZW50X3RocmVh ZCkKICAgICB7CiAgICAgICAvKiBQUkVWX1RIUkVBRCBpcyBOVUxMIGlmIHRoZSBwcmV2aW91c2x5 IGN1cnJlbnQgdGhyZWFkCkBAIC03NTYsNiArNzc0LDEwIEBAIHJ1bl90aHJlYWQgKHZvaWQgKnN0 YXRlKQogICAgICAgfQogICB9CiAKKyNpZmRlZiBIQVZFX0dMSUIKKyAgaWYgKGN1cnJlbnRfdGhy ZWFkLT5ob2xkaW5nX2dsaWJfbG9jaykKKyAgICBnX21haW5fY29udGV4dF9yZWxlYXNlIChjdXJy ZW50X3RocmVhZC0+Y29udGV4dCk7CisjZW5kaWYKICAgY3VycmVudF90aHJlYWQgPSBOVUxMOwog ICBzeXNfY29uZF9icm9hZGNhc3QgKCZzZWxmLT50aHJlYWRfY29uZHZhcik7CiAKZGlmZiAtLWdp dCBhL3NyYy90aHJlYWQuaCBiL3NyYy90aHJlYWQuaAppbmRleCA0OThiOTkwOWM5Li45ZTVjODcw MDBlIDEwMDY0NAotLS0gYS9zcmMvdGhyZWFkLmgKKysrIGIvc3JjL3RocmVhZC5oCkBAIC0yOSw2 ICsyOSwxMCBAQCAjZGVmaW5lIFRIUkVBRF9ICiAjaW5jbHVkZSA8c2lnbmFsLmg+CQkvKiBzaWdz ZXRfdCAqLwogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0dMSUIKKyNpbmNsdWRlIDxnbGliLmg+Cisj ZW5kaWYKKwogI2luY2x1ZGUgInN5c3NlbGVjdC5oIgkJLyogRklYTUUgKi8KICNpbmNsdWRlICJz eXN0aHJlYWQuaCIKIApAQCAtMTY5LDYgKzE3MywxMCBAQCAjZGVmaW5lIGdldGNqbXAgKGN1cnJl bnRfdGhyZWFkLT5tX2dldGNqbXApCiAgICAgIGludGVycnVwdGVyIHNob3VsZCBicm9hZGNhc3Qg dG8gdGhpcyBjb25kaXRpb24uICAqLwogICBzeXNfY29uZF90ICp3YWl0X2NvbmR2YXI7CiAKKyNp ZmRlZiBIQVZFX0dMSUIKKyAgYm9vbCBob2xkaW5nX2dsaWJfbG9jazsKKyAgR01haW5Db250ZXh0 ICpjb250ZXh0OworI2VuZGlmCiAgIC8qIFRoaXMgdGhyZWFkIG1pZ2h0IGhhdmUgcmVsZWFzZWQg dGhlIGdsb2JhbCBsb2NrLiAgSWYgc28sIHRoaXMgaXMKICAgICAgbm9uLXplcm8uICBXaGVuIGEg dGhyZWFkIHJ1bnMgb3V0c2lkZSB0aHJlYWRfc2VsZWN0IHdpdGggdGhpcwogICAgICBmbGFnIG5v bi16ZXJvLCBpdCBtZWFucyBpdCBoYXMgYmVlbiBpbnRlcnJ1cHRlZCBieSBTSUdJTlQgd2hpbGUK ZGlmZiAtLWdpdCBhL3NyYy94Z3NlbGVjdC5jIGIvc3JjL3hnc2VsZWN0LmMKaW5kZXggOTk4MmEx ZjBlOS4uMTIwYjQxMGU0ZCAxMDA2NDQKLS0tIGEvc3JjL3hnc2VsZWN0LmMKKysrIGIvc3JjL3hn c2VsZWN0LmMKQEAgLTU0LDEyICs1NCwxNiBAQCB4Z19zZWxlY3QgKGludCBmZHNfbGltLCBmZF9z ZXQgKnJmZHMsIGZkX3NldCAqd2ZkcywgZmRfc2V0ICplZmRzLAogICBHUG9sbEZEICpnZmRzID0g Z2Zkc19idWY7CiAgIGludCBnZmRzX3NpemUgPSBBUlJBWUVMVFMgKGdmZHNfYnVmKTsKICAgaW50 IG5fZ2ZkcywgcmV0dmFsID0gMCwgb3VyX2ZkcyA9IDAsIG1heF9mZHMgPSBmZHNfbGltIC0gMTsK LSAgYm9vbCBjb250ZXh0X2FjcXVpcmVkID0gZmFsc2U7CiAgIGludCBpLCBuZmRzLCB0bW9faW5f bWlsbGlzZWMsIG11c3RfZnJlZSA9IDA7CiAgIGJvb2wgbmVlZF90b19kaXNwYXRjaDsKIAogICBj b250ZXh0ID0gZ19tYWluX2NvbnRleHRfZGVmYXVsdCAoKTsKLSAgY29udGV4dF9hY3F1aXJlZCA9 IGdfbWFpbl9jb250ZXh0X2FjcXVpcmUgKGNvbnRleHQpOworICAvKiBBY3F1aXJlIHRoZSBsb2Nr LiAgVGhpcyBpcyBhIGJ1c3kgd2FpdCBmb3IgdGVzdGluZy4gICovCisgIGN1cnJlbnRfdGhyZWFk LT5jb250ZXh0ID0gY29udGV4dDsKKyAgd2hpbGUgKCFjdXJyZW50X3RocmVhZC0+aG9sZGluZ19n bGliX2xvY2spCisgICAgeworICAgICAgY3VycmVudF90aHJlYWQtPmhvbGRpbmdfZ2xpYl9sb2Nr ID0gZ19tYWluX2NvbnRleHRfYWNxdWlyZSAoY29udGV4dCk7CisgICAgfQogICAvKiBGSVhNRTog SWYgd2UgY291bGRuJ3QgYWNxdWlyZSB0aGUgY29udGV4dCwgd2UganVzdCBzaWxlbnRseSBwcm9j ZWVkCiAgICAgIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIG1vcmUgdGhhbiBqdXN0IGds aWIgZmlsZSBkZXNjcmlwdG9ycy4KICAgICAgTm90ZSB0aGF0LCBhcyBpbXBsZW1lbnRlZCwgdGhp cyBmYWlsdXJlIGlzIGNvbXBsZXRlbHkgc2lsZW50OiB0aGVyZSBpcwpAQCAtNzAsNyArNzQsNyBA QCB4Z19zZWxlY3QgKGludCBmZHNfbGltLCBmZF9zZXQgKnJmZHMsIGZkX3NldCAqd2ZkcywgZmRf c2V0ICplZmRzLAogICBpZiAod2ZkcykgYWxsX3dmZHMgPSAqd2ZkczsKICAgZWxzZSBGRF9aRVJP ICgmYWxsX3dmZHMpOwogCi0gIG5fZ2ZkcyA9IChjb250ZXh0X2FjcXVpcmVkCisgIG5fZ2ZkcyA9 IChjdXJyZW50X3RocmVhZC0+aG9sZGluZ19nbGliX2xvY2sKIAkgICAgPyBnX21haW5fY29udGV4 dF9xdWVyeSAoY29udGV4dCwgR19QUklPUklUWV9MT1csICZ0bW9faW5fbWlsbGlzZWMsCiAJCQkJ ICAgIGdmZHMsIGdmZHNfc2l6ZSkKIAkgICAgOiAtMSk7CkBAIC0xNTEsNyArMTU1LDcgQEAgeGdf c2VsZWN0IChpbnQgZmRzX2xpbSwgZmRfc2V0ICpyZmRzLCBmZF9zZXQgKndmZHMsIGZkX3NldCAq ZWZkcywKICNlbHNlCiAgIG5lZWRfdG9fZGlzcGF0Y2ggPSB0cnVlOwogI2VuZGlmCi0gIGlmIChu ZWVkX3RvX2Rpc3BhdGNoICYmIGNvbnRleHRfYWNxdWlyZWQpCisgIGlmIChuZWVkX3RvX2Rpc3Bh dGNoICYmIGN1cnJlbnRfdGhyZWFkLT5ob2xkaW5nX2dsaWJfbG9jaykKICAgICB7CiAgICAgICBp bnQgcHNlbGVjdF9lcnJubyA9IGVycm5vOwogICAgICAgLyogUHJldmVudCBnX21haW5fZGlzcGF0 Y2ggcmVjdXJzaW9uLCB0aGF0IHdvdWxkIG9jY3VyIHdpdGhvdXQKQEAgLTE2NCw4ICsxNjgsMTEg QEAgeGdfc2VsZWN0IChpbnQgZmRzX2xpbSwgZmRfc2V0ICpyZmRzLCBmZF9zZXQgKndmZHMsIGZk X3NldCAqZWZkcywKICAgICAgIGVycm5vID0gcHNlbGVjdF9lcnJubzsKICAgICB9CiAKLSAgaWYg KGNvbnRleHRfYWNxdWlyZWQpCi0gICAgZ19tYWluX2NvbnRleHRfcmVsZWFzZSAoY29udGV4dCk7 CisgIGlmIChjdXJyZW50X3RocmVhZC0+aG9sZGluZ19nbGliX2xvY2spCisgICAgeworICAgICAg Z19tYWluX2NvbnRleHRfcmVsZWFzZSAoY29udGV4dCk7CisgICAgICBjdXJyZW50X3RocmVhZC0+ aG9sZGluZ19nbGliX2xvY2sgPSBmYWxzZTsKKyAgICB9CiAKICAgLyogVG8gbm90IGhhdmUgdG8g cmVjYWxjdWxhdGUgdGltZW91dCwgcmV0dXJuIGxpa2UgdGhpcy4gICovCiAgIGlmICgob3VyX2Zk cyA+IDAgfHwgKG5mZHMgPT0gMCAmJiB0bW9wID09ICZ0bW8pKSAmJiAocmV0dmFsID09IDApKQo= --000000000000b3a7a4058d80de4f--