From unknown Mon Jun 23 18:28:32 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#30964 <30964@debbugs.gnu.org> To: bug#30964 <30964@debbugs.gnu.org> Subject: Status: python-mode failing "overlapping strings" assertion lately Reply-To: bug#30964 <30964@debbugs.gnu.org> Date: Tue, 24 Jun 2025 01:28:32 +0000 retitle 30964 python-mode failing "overlapping strings" assertion lately reassign 30964 emacs submitter 30964 dancol@dancol.org severity 30964 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 27 14:09:58 2018 Received: (at submit) by debbugs.gnu.org; 27 Mar 2018 18:09:58 +0000 Received: from localhost ([127.0.0.1]:56214 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0t2k-0006ZL-3v for submit@debbugs.gnu.org; Tue, 27 Mar 2018 14:09:58 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55174) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0t2i-0006Z9-Ak for submit@debbugs.gnu.org; Tue, 27 Mar 2018 14:09:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0t2c-0000M2-FC for submit@debbugs.gnu.org; Tue, 27 Mar 2018 14:09:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37171) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0t2c-0000Lt-CR for submit@debbugs.gnu.org; Tue, 27 Mar 2018 14:09:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0t2b-0003AT-CX for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 14:09:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0t2a-0000Kw-H1 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 14:09:49 -0400 Received: from dancol.org ([2600:3c01::f03c:91ff:fedf:adf3]:42532) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f0t2a-0000G3-5c for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 14:09:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version:To:From:Subject:Date:Message-ID; bh=KfrmYuBrCA0H876PrSXrqXBhuOAEiPygtDXrose8ATg=; b=dJpwzgulHGkPHyMd/+Swswv0ZRgDEuN78u8vhuzuF86DoZi/vXqi4ll/I6P92S6W3y9cShFgWJTOE/4TsTaDJ4FWkyKbZkpGz0mRrSNnwEce14hNCm4UUN/lOfAFjQatk6qIWIUxPf85HiCMal4L6JUQVz2xHmcJfmLb0H0qlljLFt34vxbFixi33j1B8n1VBjReAKKFth4JYl2xMTNEpDMJGOBuFpqdsYEMfkhp2BZy58rk+VF2Ahuj0rufesRmyJjkPwdZVAE6yTl5X/qbltGx+6KDrnVvWWrUDVEXF6M5o9iNva3EBS9r/PVZBJVLs72xCr25gb7i3W30Evgamw==; Received: from localhost ([127.0.0.1] helo=dancol.org) by dancol.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0t2Q-0006KF-N7 for bug-gnu-emacs@gnu.org; Tue, 27 Mar 2018 11:09:38 -0700 Received: from 127.0.0.1 (SquirrelMail authenticated user dancol) by dancol.org with HTTP; Tue, 27 Mar 2018 11:09:38 -0700 Message-ID: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> Date: Tue, 27 Mar 2018 11:09:38 -0700 Subject: python-mode failing "overlapping strings" assertion lately From: dancol@dancol.org To: bug-gnu-emacs@gnu.org User-Agent: SquirrelMail/1.4.23 [SVN] MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.1 (----) Has something changed in master that might be breaking python-mode? We keep hitting a parsing assertion. The surrounding code in python.el claims that ;; The assertion can only fail if syntax table ;; text properties and the `syntax-ppss' cache ;; are somehow out of whack. This has been ;; observed when using `syntax-ppss' during ;; narrowing. (cl-assert (> string-start last-string-end) :show-args "\ Overlapping strings detected (start=%d, last-end=%d)") I can _sometimes_ repro with (while (not (eobp)) (python-nav-forward-statement)), but I haven't found a reliable test case. From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 01 21:11:36 2018 Received: (at 30964) by debbugs.gnu.org; 2 Apr 2018 01:11:36 +0000 Received: from localhost ([127.0.0.1]:34559 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f2o0W-0003yw-8h for submit@debbugs.gnu.org; Sun, 01 Apr 2018 21:11:36 -0400 Received: from mail-io0-f180.google.com ([209.85.223.180]:37737) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f2o0U-0003yj-Bp for 30964@debbugs.gnu.org; Sun, 01 Apr 2018 21:11:34 -0400 Received: by mail-io0-f180.google.com with SMTP id y128so16336228iod.4 for <30964@debbugs.gnu.org>; Sun, 01 Apr 2018 18:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=4mCv9miBs0C3y2Hg1sgL2b3PJfwaMyKg6b5tiguwNjU=; b=N0aPl2fCLVrdH33D91QJOiPf0N7Kn/axio6uoC8PXZU7FgwqMSyHjP/97m5CLE2mA6 gLPFd8PX3dT2wLTczbMUTLtJMqtX2Z/bXau6zdGZTsH7f3QEbv4DyU8iGExT65EEWbQw JguJdqABrk7bt84yocJqlyLbmmslx3mAVY6aTl8epWt1J6ZQluko7V2F2fdUizT/PgwY HKja/OHqm75W8e09FhemRviuURx3rL7Q1+XcWrW53WIL9T9KLcOzbiT9I27/NutzLwYU k+n9ImxpA1Ia2yjzZs78n5HwZ8kp6SzxdtVo7EkoXs7oEqg/aty9URiTED5oR4v//nv9 wSug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=4mCv9miBs0C3y2Hg1sgL2b3PJfwaMyKg6b5tiguwNjU=; b=aMsrWs96osEIxLiaBlfUsbfah675GQiLe0Iw6ctsIaSx+5uhOnvaP20i66acIzpt99 qRX9fc49dS2JsJN9oH7VRih8eZvCtvryTj2l/VCgGrs3499FkaoLD3/ffh9jXGEapBi3 mZUDSl1WJgwSQOYpv7uNGufgj4guhS/CZfxLf6qGxCHZiEZnIlmJ6if7Y5Lu+O5TGO4R tIo3aDwbwWPOkucYIuGHUG2aNTVPUGB59vSPqZ1AChC1KBu/ADs98DrpcaOEsl97QGi4 mZxJ41dTaMgRqhnfYfJo1Q6zNBiG7IwylcUVOTDbq2e0DhbFIy61XFES6gg1tNbYj44y YBRA== X-Gm-Message-State: ALQs6tDrElsn7ghZ/2y26cIW6VkmS4X65izciH6M33PkLK9nTPps4tou lflZVee7/HEOfR4rUTc980w= X-Google-Smtp-Source: AIpwx48Zi6wCCj3OIJh6jiXHaX8G4ApG4vP6QIxxodEkcF9jFw6oFIPPq/ENgGSwF5fo0eIVjOcDjQ== X-Received: by 10.107.53.208 with SMTP id k77mr4822412ioo.42.1522631488732; Sun, 01 Apr 2018 18:11:28 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id l124-v6sm4777217ite.20.2018.04.01.18.11.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 01 Apr 2018 18:11:27 -0700 (PDT) From: Noam Postavsky To: dancol@dancol.org Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> Date: Sun, 01 Apr 2018 21:11:26 -0400 In-Reply-To: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> (dancol's message of "Tue, 27 Mar 2018 11:09:38 -0700") Message-ID: <87bmf2pg3l.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30964 Cc: 30964@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) dancol@dancol.org writes: > Has something changed in master that might be breaking python-mode? We > keep hitting a parsing assertion. > > The surrounding code in python.el claims that > > ;; The assertion can only fail if syntax table > ;; text properties and the `syntax-ppss' cache > ;; are somehow out of whack. This has been > ;; observed when using `syntax-ppss' during > ;; narrowing. > (cl-assert (> string-start last-string-end) > :show-args > "\ > Overlapping strings detected (start=%d, last-end=%d)") > > I can _sometimes_ repro with (while (not (eobp)) > (python-nav-forward-statement)), but I haven't found a reliable test case. How recent is "lately"? Could it be related to [1: 14b9558752]? [1: 14b9558752]: 2017-12-12 23:03:00 -0500 * src/syntax.c (find_defun_start): Use syntax-ppss https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=14b95587520959c5b54356547a0a69932a9bb480 From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 03 14:12:06 2018 Received: (at 30964) by debbugs.gnu.org; 3 Apr 2018 18:12:06 +0000 Received: from localhost ([127.0.0.1]:37343 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3QPe-0004TK-Je for submit@debbugs.gnu.org; Tue, 03 Apr 2018 14:12:06 -0400 Received: from sinyavsky.aurox.ch ([37.35.109.145]:39831) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3QPd-0004Sq-Ge for 30964@debbugs.gnu.org; Tue, 03 Apr 2018 14:12:05 -0400 Received: from sinyavsky.aurox.ch (sinyavsky.aurox.ch [127.0.0.1]) by sinyavsky.aurox.ch (Postfix) with ESMTP id 0AF0A226FE for <30964@debbugs.gnu.org>; Tue, 3 Apr 2018 18:13:04 +0000 (UTC) Authentication-Results: sinyavsky.aurox.ch (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=aurox.ch DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=aurox.ch; h= references:subject:subject:in-reply-to:to:from:from:message-id :date:date; s=dkim; t=1522779183; x=1523643184; bh=OmCrJIcPGs+qE FLmOsumcfPgDLRxBsXu/USLvUiC71Y=; b=iyLrytmu9Am6EzhEQae7J9DbD5xjc 2xlg0PsBsfSWtwHh1Yi25ayBv2A5TV9yr2h4/W7d7Vb/QcAShR4kHEt9CavsXYER Bjv+vFy4cGhIasqtvnFvlWz5PxpT+tElkHFBHat2LBpa16yaVY/Mu5tahm2lzzxW WUFxZ8KxaGc1e0= X-Virus-Scanned: Debian amavisd-new at test.virtualizor.com Received: from sinyavsky.aurox.ch ([127.0.0.1]) by sinyavsky.aurox.ch (sinyavsky.aurox.ch [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id f3xReWbFEC1r for <30964@debbugs.gnu.org>; Tue, 3 Apr 2018 18:13:03 +0000 (UTC) Received: from gray (202.100.1.85.dynamic.wline.res.cust.swisscom.ch [85.1.100.202]) by sinyavsky.aurox.ch (Postfix) with ESMTPSA id BC84E226ED; Tue, 3 Apr 2018 18:13:02 +0000 (UTC) Date: Tue, 03 Apr 2018 20:12:48 +0200 Message-Id: From: charles@aurox.ch (Charles A. Roelli) To: dancol@dancol.org In-reply-to: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 30964 Cc: 30964@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) > Date: Tue, 27 Mar 2018 11:09:38 -0700 > From: dancol@dancol.org > > Has something changed in master that might be breaking python-mode? We > keep hitting a parsing assertion. > > The surrounding code in python.el claims that > > ;; The assertion can only fail if syntax table > ;; text properties and the `syntax-ppss' cache > ;; are somehow out of whack. This has been > ;; observed when using `syntax-ppss' during > ;; narrowing. > (cl-assert (> string-start last-string-end) > :show-args > "\ > Overlapping strings detected (start=%d, last-end=%d)") > > I can _sometimes_ repro with (while (not (eobp)) > (python-nav-forward-statement)), but I haven't found a reliable test case. I saw it with the pretest (26.0.91) today, with no narrowing, font-lock off, and after typing M-3 " to open a docstring. I didn't find a reproducible case either, though. From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 03 18:06:38 2018 Received: (at 30964) by debbugs.gnu.org; 3 Apr 2018 22:06:38 +0000 Received: from localhost ([127.0.0.1]:37421 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3U4b-0003KS-TT for submit@debbugs.gnu.org; Tue, 03 Apr 2018 18:06:38 -0400 Received: from mail-wm0-f49.google.com ([74.125.82.49]:39278) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f3U4a-0003KG-Es for 30964@debbugs.gnu.org; Tue, 03 Apr 2018 18:06:36 -0400 Received: by mail-wm0-f49.google.com with SMTP id f125so38022250wme.4 for <30964@debbugs.gnu.org>; Tue, 03 Apr 2018 15:06:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=zE+rHlux8qjIgk2k5fUwVQOc0Q72SQQpSqZoy8p4tBY=; b=H+/rSylUwROl3lkSaw9ZWRRjNVJiAlmk+VfEpEg7IFgsfBS6WRvMkJbgUwDmXtSZQZ nRkqcH3TWkOnD1ls457qQsAgtj2/MShu/B/eFa5LtPfkUhGIRH/Sr6MzJf78HrBNGUOs Knf3Uko+DiDZMXoGl4jgdPMDV2rVHUfsY0q/nRnIS7qLf7nWLEvbTpK/ClXTWELLAuWB bZlq2Ti41CJv/Kyqc23a+aBeK7A9f3jmbQjqYIfGXtG1kEd7Uvcz6BjsqgNsCkmwwSg6 odUYqtxemo2HmdCzZ2+D38qG+OyDNj4SqPn7vDqR7YfErpmsQ3DV2ydGuhsYSZhaKrro RF4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=zE+rHlux8qjIgk2k5fUwVQOc0Q72SQQpSqZoy8p4tBY=; b=KTFoTfXAVDXghmEPHriv4zBKKW7jBqKsHwIwIW+ET6jAmAfBdzQ3huX7ua+tI5NkgQ AVX7Vs2/a1aKsvCdW7cUF6C59tQm0Q+/NvmejNHqLKJHowOdLX4jkSDLDU0aGR5oHKto +xxSwNYO0Me/e98S4qiQVkjKW7WwQ1ec06OvNUXFtXUdlMB+vZ7Djx4RFzCtg33vOxcL 444qCWqC1393sLxnqDxMsdTYj24gtskP7fQsMawOI14upr1cfUGHKdE13ts6W/d10JmV pz0YfXVHkSwB/+KvWSnZ5plvtqwonplfmzEEUKKXXv9gAuJdTkKt5HAllRKkGWcVZUnq 0/hQ== X-Gm-Message-State: AElRT7Em6e8jHCD+BX8nWdfWtmUQ7PuWd5mhMzajpLtbQim+BxmjVAqi vGse2Jgs+HNIXsjCYAKg3+MOmNj2 X-Google-Smtp-Source: AIpwx49nCDwW3kijHuruYJGAJWpf8JWry5jDMiEug4NLDc1oYEgBIMSkfKrPcYyAc3QI3dnqgM77bA== X-Received: by 10.28.7.133 with SMTP id 127mr4826420wmh.74.1522793190228; Tue, 03 Apr 2018 15:06:30 -0700 (PDT) Received: from [192.168.1.3] ([185.105.174.23]) by smtp.googlemail.com with ESMTPSA id r8sm2476745wmg.44.2018.04.03.15.06.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Apr 2018 15:06:28 -0700 (PDT) Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately To: "Charles A. Roelli" , dancol@dancol.org References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> From: Dmitry Gutov Message-ID: <168d5d35-0992-1bff-6903-8bbad7efcfb2@yandex.ru> Date: Wed, 4 Apr 2018 01:06:26 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 30964 Cc: 30964@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 4/3/18 9:12 PM, Charles A. Roelli wrote: >> I can _sometimes_ repro with (while (not (eobp)) >> (python-nav-forward-statement)), but I haven't found a reliable test case. You could try calling (syntax-ppss-flush-cache (point-min)) before that, for instance, and see if that changes something. Anyway, an example file should help, even if the problem shows up only intermittently. From debbugs-submit-bounces@debbugs.gnu.org Fri May 18 11:46:37 2018 Received: (at 30964) by debbugs.gnu.org; 18 May 2018 15:46:37 +0000 Received: from localhost ([127.0.0.1]:39969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJhaX-0005X7-G7 for submit@debbugs.gnu.org; Fri, 18 May 2018 11:46:37 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:38957) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJhaU-0005Wt-2D for 30964@debbugs.gnu.org; Fri, 18 May 2018 11:46:34 -0400 Received: from [18.26.2.123] ([18.26.2.123]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.184]) with ESMTPSA (Nemesis) id 0MbQUm-1f0viR3vtc-00IoRz for <30964@debbugs.gnu.org>; Fri, 18 May 2018 17:46:28 +0200 From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Subject: bug#30964: python-mode failing "overlapping strings" assertion lately To: 30964@debbugs.gnu.org Openpgp: preference=signencrypt Autocrypt: addr=clement.pitclaudel@live.com; prefer-encrypt=mutual; keydata= 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 hze1s8uad9n9PQF+gigV Message-ID: Date: Fri, 18 May 2018 11:46:26 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="RxCDa0ADo4cDMTlj20300utaY2LjO8YDu" X-Provags-ID: V03:K1:4rf9/DXEpwXkDtt5s7YAS4RSsmhIBo3cUPpZ7bWS7UHTzO9A3Wc NzRuXD7IsKPxx8tfUn1JRVsZAp1ZcxluLtAAzp1jp8Z5b4Q+RlHSQbbZSSQkxwhKbkXLhZo oDBp7M4AeDmx5j1FKPLahnid4/lRc5Pb4SoHE6LqPbpQ6iZ0vDFsJ5swWkO3uihHEhiOi8V qV3+IO3MbU/a+7/yP5Exg== X-UI-Out-Filterresults: notjunk:1;V01:K0:S716y8V+Q8o=:p8AnS52jvSPDMZwz3nNvDL ykKr1OmW+8nxFAZ/IlSvokNGY9a2aQaVOcuSn141SyFpAiGA4FWm+QMpNQbvU5x7fIVJXjmpO k16yqMcDJcP6AIUgvyE6UdH+SrLYzkaZ3TfKsBJdNsrsnDouhOHMOxhCfZlKdXOC1fVuOIq14 F09NwokC8NmRkcn8OPeSYrobJON3RY1RRuU8oAZaAhUW10/J2mwP3tyG5tkF7zPf11emY8vJx uGbjV4MC8HoT2AL9Rsc4Q3/fAWfa0RTcpWq5l1wmlqOoqDmJ4+1nhhTql6wYIE5ZWCo4b7a36 kLwhIgJkNgN6nX0gKilq8x6ZX/4TOA+mq8xaxFJSvA1o4gJAYqqW+1WeLWlaAyGdrDyJu+AAM XUcsLYXeG9Bx+A+A/iRxzIYzretdk3pTnQ9mDYRXnsZ2SeWnJ45Hy6qkLLwYfugAMF+CPTC1B p7rkaa9mLbzJKw8PBo9qQnSeKJ0robuBuU8/avwYVyJcS2gQ+jaonj1bD0MtkjAB/XIqxypZ4 kd0AHy+MFwHtI4wRrjk7+A4nIvsTZUOe/YXOMcOtakBUL3Fssh2MPTbbu50JDYSZRoIu7XTjT jFEmYSsl3MuMtxFO1JdLCAT+kaqR4OYSDZfQf8mm3W7OvduinornA7KLm7e4/KZ8SBomlh7OA yNFzB0vh00VLHt57ZVBd97m6q6sbTYq7UH29swW2rOxj3jTf/xAFbpxrDZCGFONgdRAE= X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 30964 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --RxCDa0ADo4cDMTlj20300utaY2LjO8YDu Content-Type: multipart/mixed; boundary="rWav0lbKIP3uB8cbpzWqT9DpOLhHo1AAr"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= To: 30964@debbugs.gnu.org Message-ID: Subject: bug#30964: python-mode failing "overlapping strings" assertion lately --rWav0lbKIP3uB8cbpzWqT9DpOLhHo1AAr Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: quoted-printable (Hoping that emailing the bug address is enough to respond to an existing= bug, and that I didn't miss recent follow-ups) (Resending, since I apparently emailed the wrong bug number at first) Here's a reliable repro: def f(): " def g(): """That's a docstring""" return '' Place the point after the unclosed quote in f, and run (python-info-curre= nt-defun). You get this: Debugger entered--Lisp error: (cl-assertion-failed ((> string-start last-= string-end) "Overlapping strings detected (start=3D%d, last-end=3D%d)" 67= 67)) cl--assertion-failed((> string-start last-string-end) "Overlapping stri= ngs detected (start=3D%d, last-end=3D%d)" (67 67) nil) python-nav-end-of-statement() python-nav-end-of-defun() python-info-current-defun() eval((python-info-current-defun) nil) eval-expression((python-info-current-defun) nil nil 127) funcall-interactively(eval-expression (python-info-current-defun) nil n= il 127) call-interactively(eval-expression nil nil) command-execute(eval-expression) This error triggers in the wild for me due to which-function-mode, which = calls python-info-current-defun. Cl=C3=A9ment. --rWav0lbKIP3uB8cbpzWqT9DpOLhHo1AAr-- --RxCDa0ADo4cDMTlj20300utaY2LjO8YDu Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJa/vVSAAoJEPqg+cTm90wjdYYQAIz4w49Pfn3hSLNeaS0+cRV6 o4ctazDYj6SgTaIH8+RrHYhl1EKDtIYwFzkSJkXSXaBbTUCADdCLOrrWT76CfT/D MMC8PcuqbrD7PJpAmJr3450TQQBqp8qGkyUqdl75MiYY+kVtqRGfmIezfQXFrhMN wVTcbdQ4S0iSxSXd+xDufh9cFYyJ6Fb55ZT182CPr+DG4iRX0N8/mR13ESt7G2RF y63ss6ossLn5NW34NtEvTo2vd4tn1pU62gUa5VBXuqGCCANYwX6VACrMVfTdyTKs 8yZQaXD51x5dgJ7h2Hy89jt7DRWZAL2UnOQhZ/Gh05ENE2mLaE/TujxfyqJuPmE4 Tw2rVLRdZrv2iHtxMQOJN1h1lJLJiRMLcNISS1Ou6Wl6xnUiYWsJNCccSoh3pRH9 Zv74hTfczREymlsxT213fqWnsQj3VJR50uYYt6z4SbJlZ15bi5jVNnHUTcXUbaJt iixfCPQmqX7CH68YASeDlzHOFzbq7IrCelQ85MBwObpgOODitiKnmliwHCqmdqJE FDBE6LjflKsv/R/9x8iLkPu5/bs+WT7pn0bTpo5j3T2maGWawMlClzioQW4LMy6d KmGQEzXkyttOIbrcJtYlmOETGciHiwHsoF0vLj/IBce0YZ8k/wPPUuLhPQko7+45 q42qNVs45xOd6nbOdO9h =shD+ -----END PGP SIGNATURE----- --RxCDa0ADo4cDMTlj20300utaY2LjO8YDu-- From debbugs-submit-bounces@debbugs.gnu.org Fri May 18 15:17:05 2018 Received: (at submit) by debbugs.gnu.org; 18 May 2018 19:17:05 +0000 Received: from localhost ([127.0.0.1]:40205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJksD-000286-14 for submit@debbugs.gnu.org; Fri, 18 May 2018 15:17:05 -0400 Received: from eggs.gnu.org ([208.118.235.92]:40681) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJksC-00027a-07 for submit@debbugs.gnu.org; Fri, 18 May 2018 15:17:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fJks6-0008Dl-7f for submit@debbugs.gnu.org; Fri, 18 May 2018 15:16:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:56101) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fJks6-0008Dh-4N for submit@debbugs.gnu.org; Fri, 18 May 2018 15:16:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59874) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fJks2-0004vL-0M for bug-gnu-emacs@gnu.org; Fri, 18 May 2018 15:16:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fJkry-0008B3-SQ for bug-gnu-emacs@gnu.org; Fri, 18 May 2018 15:16:53 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:41553) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fJkry-0008A0-JW for bug-gnu-emacs@gnu.org; Fri, 18 May 2018 15:16:50 -0400 Received: from [192.168.178.35] ([178.8.46.103]) by mrelayeu.kundenserver.de (mreue007 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LiawD-1eh7nG3ozN-00cz9B for ; Fri, 18 May 2018 21:16:48 +0200 Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately To: bug-gnu-emacs@gnu.org References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Message-ID: <284fc235-3a11-32f5-1a66-19a54defcc65@easy-emacs.de> Date: Fri, 18 May 2018 21:18:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:jjHMWDVXHdX2UV33f8zY+okBM0bzMjyxfCatW1opfR+WRV+rJ4a K6O4+YrNPQjPEv+40rN1nWCSAWfdfCJSUs3ov2QRkKrsrBH6vZgaRPHSKPz318GAXkWHiab dBL998az2aosQzBfbWQneklvGoQVtsrZTD5oz7otnQ/q9/rguATpU7OnUdOcckuvZR1ED/s h0BzNE/DuvTw4R/zXcCYg== X-UI-Out-Filterresults: notjunk:1;V01:K0:AZ2LQcnYVXM=:ZAKy7ivcTfYj6Ww9pbn/lt EtFD0LpS1oPUll5Otn2+IhNeSHRnyHc92l7+xUTrBJy2+qYcsmhor4EZsqlw/dYHJ8vhKTnyy eKfph29iQMrMe9isF/DD+rR4ZtLD+4E79FpeIYt6BXnja+RsHJnARFvmuFyu1urhJeHfpW0yv uXaUJgoiaQW8oPUZS55dJ+oVIXxZb2J00DH9yKdXfP7Tl73T11nH5C3IIXF3HGlDtNuyyFR/9 n8c/2WqLeMoudwhR60TBfVTL/LP/LqfpuM4wTMH8wGcKSI3SiqP02fXbtp4hKrE6Hy3ogw/9R nO7ex3wJd0KHNxahGbaQLEtFlG/k3ql61Zytw8QKl9Yq6mPAQBqy3e6Da4CbyDVIQF/ow7/Zk EGWZpkQJI/JU+knRtybQZaROskEX4vnVWctLLvglfU2omjp+45I3y+oyh0ALW+k3Nv02Vme6F 1y2/laIYYjosGxM2WazCfZX7y/lbhC5V1r3mN1LdTaYvTHvpywWZcGPoUwCpyx1KCRwAQIN1z NVeu83nal7xLJONDg9r/2YRmxnZ9FNRC+rKtwlLSt2nAi9cWNP4HXQiog+4QOxyF1U9VdItgx NjRLyQtMWvk4Bp0mTWYsyXxwNgSCyclgoonUdSXIWVVoDH+S6Lq/aeRP8c9DlbEuqe5+vujxD p6HNylMm6dWEV9hgycXsEg4AGkuBNYaXezq/0zu6icWUszFurhw78eG0PtoH58VR4IsXCAKog dF7++yw1mYWfuIyG X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On 18.05.2018 17:46, Clément Pit-Claudel wrote: > This error triggers in the wild for me due to which-function-mode, which calls python-info-current-defun. > > Clément. > > > Can't reproduce with GNU Emacs 26.1 (build 1, i686-pc-linux-gnu, GTK+ Version 3.14.5) of 2018-04-10 which-function-mode displays [f] From debbugs-submit-bounces@debbugs.gnu.org Fri May 18 21:50:02 2018 Received: (at 30964) by debbugs.gnu.org; 19 May 2018 01:50:02 +0000 Received: from localhost ([127.0.0.1]:40340 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJr0T-0004Os-Uz for submit@debbugs.gnu.org; Fri, 18 May 2018 21:50:02 -0400 Received: from mail-io0-f170.google.com ([209.85.223.170]:46935) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJr0S-0004OY-Ny for 30964@debbugs.gnu.org; Fri, 18 May 2018 21:50:01 -0400 Received: by mail-io0-f170.google.com with SMTP id f21-v6so8325989iob.13 for <30964@debbugs.gnu.org>; Fri, 18 May 2018 18:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=Nf2xlszgPHSUOBi1MhNsW1UHkQBKLQ74wUMdN0JTAYg=; b=ZF0cn7TIM7WZiKOQO+SbRMSwBbSy8FeVY2/sNlZXsjSgf2vRQX9mvKU8rqlGvK+81D gZJKPWSH9jgGVyBvp52JseyyEYsYL23VgNfQnzzaNZ3rf11QrH1W1PDDW5W9yrk4HiR5 MIUNNiuWRf66T/VgMyRZPo5RLLtQlS/MI0dEiaZTLVTWTw+Isiw3JxDHWi1k0fiNHVe8 Cics+wyHzxEnb/QIDUaftDrTzoKqik8tywcnwZRsVE8AngTplnT3kumrWj49ypNplnUB 6Bg8ydPPMTeGJAERpUxAcrTBAoqp/wWdQlNgnusrvUM4Sk+hx1hv02yZufh5uZnrg/Dx +pTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=Nf2xlszgPHSUOBi1MhNsW1UHkQBKLQ74wUMdN0JTAYg=; b=mQueg67j2Lr/hW456rVKW186OOvs3PZM/DfE2OhVFsshu0t90BCum7z4WUwPPBOvCA IEGD/I2pExgHDC/CfV/vPCOckRwoW6Fh4xz+1h+c5Ny5OeWAwcdMh9wmKj29gyysmj5u fGfm33XA1F1UEbrFgtuE6HDlrWDaSgwJ84dhi7yIUM+R0U7zZz0lsos4/3TpAJvrIJAF 8ZuT27pI0HuL1THJ060WwuIIm2Qy9vqddFxyBH50V0kaQQQrhb1/gP5BbYONDgZhBMkj jBS57UYHX0Vef5GZWAxvDThX+Xld6eSfjn3v0YtXpjeYQKXA2Xx6lJ0ebVkpwwTnFLXy I6PA== X-Gm-Message-State: ALKqPwd+y0t3TDmBVZE/ktRIMbL1T1Rf2z7hXXsXv3zsOeTG21xbpriI ApVhGveKuCAdV2xrGQvG32w6pA== X-Google-Smtp-Source: AB8JxZo8UFzbdESZhhkGM8GkyZ/qZqKOHAdwGct73k6CoTIH2kECCht8AUV1XTjyXNtfRJcj5QoaSA== X-Received: by 2002:a6b:1604:: with SMTP id 4-v6mr14016971iow.147.1526694595100; Fri, 18 May 2018 18:49:55 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id i133-v6sm5019078itf.15.2018.05.18.18.49.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 18 May 2018 18:49:54 -0700 (PDT) From: Noam Postavsky To: Andreas =?utf-8?Q?R=C3=B6hler?= Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <284fc235-3a11-32f5-1a66-19a54defcc65@easy-emacs.de> Date: Fri, 18 May 2018 21:49:53 -0400 In-Reply-To: <284fc235-3a11-32f5-1a66-19a54defcc65@easy-emacs.de> ("Andreas \=\?utf-8\?Q\?R\=C3\=B6hler\=22's\?\= message of "Fri, 18 May 2018 21:18:23 +0200") Message-ID: <87k1s0ifcu.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 30964 Cc: 30964@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.6 (-) Andreas R=C3=B6hler writes: > On 18.05.2018 17:46, Cl=C3=A9ment Pit-Claudel wrote: > >> This error triggers in the wild for me due to which-function-mode, which= calls python-info-current-defun. >> >> Cl=C3=A9ment. >> >> >> > > Can't reproduce with GNU Emacs 26.1 (build 1, i686-pc-linux-gnu, GTK+ > Version 3.14.5) of 2018-04-10 I can reproduce, if and only if I make sure to put a newline on the last line. From debbugs-submit-bounces@debbugs.gnu.org Sat May 19 02:48:21 2018 Received: (at 30964) by debbugs.gnu.org; 19 May 2018 06:48:21 +0000 Received: from localhost ([127.0.0.1]:40393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJvfB-0002lW-FI for submit@debbugs.gnu.org; Sat, 19 May 2018 02:48:21 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:53021) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fJvf7-0002lH-OC for 30964@debbugs.gnu.org; Sat, 19 May 2018 02:48:18 -0400 Received: from [192.168.178.35] ([188.106.76.94]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MCqZf-1fALGs2Y6t-009d5l; Sat, 19 May 2018 08:48:10 +0200 Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately To: Noam Postavsky References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <284fc235-3a11-32f5-1a66-19a54defcc65@easy-emacs.de> <87k1s0ifcu.fsf@gmail.com> From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Message-ID: <58c1334f-7497-e705-4d6e-5f7b361acec4@easy-emacs.de> Date: Sat, 19 May 2018 08:49:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <87k1s0ifcu.fsf@gmail.com> Content-Type: multipart/mixed; boundary="------------6620B85BC5313A89B6437083" Content-Language: en-US X-Provags-ID: V03:K1:ZlcxReYgQfFZPo6ROawrqHHUOdQM7SoTgSVBOjvqWY66NBNXZV2 js9JgnicjeFnN7ToyednQbRPgzWyWPoxb1qTxwAruKLZWe8RmsssvUda9WVysjhLlv/jPxW SOPYnejg4iBcBjkT7oeDmJWlgtA+OIH3nLP0RHFZuh6rYuDJC6d1svBQJDLZ6HeILJDQcvA bzHEuZtfIy5mXhQb6VOGQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:in3PQHrswjU=:8dYcsBYFlLhl7M214LwfXJ j2Zd6MWg5P+5S2IaA9NltLKzGw/Ngc/b4w1bmVknX9WfYfYj9drfD3Eq04j61FZS4hYvvv7RC wdl/9Cx6Nq2E2DrS6BFbyRYJF4ZysZF/UDWWcimWyVyFDifY+dTgUFOt2wPC7FYCDuOi6DgcD 1Ok7px8ZTZ3LDIUqfo1AseZqLnNdh94z2jVDfa5GHFQr3tCweEFL9af1WPIyF6qKgVMl+YlWc zCwKOn4txRjUIg0cUE4Sza6hlGHSiSNtKFkVmeeXn1dUUjGb4j+kQzC3tC4s8lfF8tBEk7XoM VThQDLFIJXzaaTFoNDUphy37c9MscK/C3aPy93pesdaI65Q1/p9OWJBAvjkGE1SZDHm35Ej0I M1pZgFZ8FXjQOPA8+ckPFeNKzaSJLipRDalEjWntAuQwuYV5E2zaSS4W+YeuNgztwwU3cc2Iw KYui+dzeS/Z3Pr/YjMT5V7k+jOX1UIIAGxPO+PrxEy2tOHtxubPxkNK95Ma5vJhvz32BAls9k qnW2XFK0uYHTimpHX6FHk58+nAU2eS84p6ynReCjAZGa3qEnlinWPH4WdQxyiDtU+FEG48ZAg 6HXvQnnZblqaA9pVJVMTzGsKz3tjCdYInNv3FlQ0b2LcEU/F9ipY7xeeP6jDuW/lAAFWsPixv u1dCeX5Ae38F8P79zQcL/ydx1vcKOMGJK1LDrhDvKD2RLsgMjGtEKbTN4It01TOGkHSQ= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30964 Cc: 30964@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------6620B85BC5313A89B6437083 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 19.05.2018 03:49, Noam Postavsky wrote: > Andreas Röhler writes: > >> On 18.05.2018 17:46, Clément Pit-Claudel wrote: >> >>> This error triggers in the wild for me due to which-function-mode, which calls python-info-current-defun. >>> >>> Clément. >>> >>> >>> >> >> Can't reproduce with GNU Emacs 26.1 (build 1, i686-pc-linux-gnu, GTK+ >> Version 3.14.5) of 2018-04-10 > > I can reproduce, if and only if I make sure to put a newline on the last > line. > Okay, got the error at some point when inserting a newline. However a newline must not trigger it - see attachment. Below some reports which might be of interest: Which-Function mode enabled next-line: End of buffer Which-Function mode disabled next-line: End of bufferError during redisplay: (jit-lock-function 3905) signaled (error "Overlapping strings detected") Error during redisplay: (jit-lock-function 3905) signaled (error "Overlapping strings detected") Which-Function mode enabled Error during redisplay: (jit-lock-function 3919) signaled (error "Overlapping strings detected") [2 times] Which-Function mode disabled Error during redisplay: (jit-lock-function 3905) signaled (error "Overlapping strings detected") [2 times] Which-Function mode enabled C-c e is undefined M-+ is undefined C-x c is undefined Which-Function mode disabled Which-Function mode enabled Mark set [4 times] scroll-up-command: End of buffer Mark set [2 times] Saved text from "Which-Function mode disabled next-line: " Auto-saving... Mark set [2 times] --------------6620B85BC5313A89B6437083 Content-Type: image/png; name="which-function-mode.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="which-function-mode.png" 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 mZmZuv3229WsWTOtWrXKaR0RERGSpM2bN7vUZkxMjCRp2bJlVY4XFhbqySefZK0+AAAAAMAp lgA00Msvv6z4+Hh9//336tmzp8aMGaPw8HDt379fH330kVJSUnTrrbeqf//+TsvffPPNWrJk iV5++WVt27ZNV1xxhWw2m5KSkpSRkVEtGBg2bJg+/fRTzZkzR7m5uRowYIDsdrtmzZqlgIAA DR48WN98841LewEAAAAAAMxBANBAYWFhWrdunZ599lnNnTtXTz31VMW5Fi1aaMqUKXr22Wcr pvr/1COPPKJDhw7pvffe09KlSyuO+/v7a9CgQdWuv/vuu/WXv/xF06ZN06JFi7Ro0SK5u7tr yJAhmjlzph566CFJks1ma+Q7BQAAAABcyixWq7XWR8WBgYFN1ZdLXmFhoQ4ePKjc3FyFh4cr Nja2xoH/T9ntdiUnJys/P1+hoaGKiIiotWxBQYH27dun0tJStWvXTqGhoY11GwAAAACACywn J6fW85mZmXWukwAAAAAAAICLzPkIANgEEAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAA AIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABg AAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAA AAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAA AAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAA ADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAM QAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAA AAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAA AAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAA AAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIAB CAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIA AAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAA AAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAA wAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAA AQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAA AAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAA AABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAA GIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYg AAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAA AAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAA AAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAA AxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAE AAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAA AAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAA AIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABg AAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAA AAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAA AAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAMQAAAAAAAAIABCAAAAAAA ADAAAQAAAAAAAAYgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAAAAxAAAAAAAABgAAIAAAAAAAAM QAAAAAAAAIABCAAAAAAAADAAAQAAAAAAAAYgAAAAAAAAwAAeF7oDAAAAAACgYXJycpV+8qQK Cwvl7e2tFs2bKzAwoMo1zAAAAAAAAOASZs3JUeKxY8q32VRSWqp8m02Jx44pJye3ynUEAAAA AAAAXMLST2bUcPxklT8TAAAAAAAAcAkrKChwetz2k+MEAAAAAAAAXMIcDodLxwkAAAAAAAAw AAEAAAAAAAAGIAAAAAAAAMAABAAAAAAAABiAAAAAAAAAAAMQAAAAAAAAYAACAAAAAAAADEAA AAAAAACAAQgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAMAABAAAAAAAABiAAAAAAAAAAAMQAAAA AAAAYAACAAAAAAAADEAAAAAAAACAAQgAAAAAAAAwAAEAAAAAAAAGIAAAAAAAAMAABAAAAAAA ABiAAAAAAAAAAAMQAAAAAAAAYAACAAAAAAAADEAAAAAAAACAAQgAAAAAAAAwAAEAAAAAAAAG IAAAAAAAAMAABAAAAAAAABiAAAAAAAAAAAMQAAAAAAAAYAACAAAAAAAADEAAAAAAAACAAQgA AAAAAAAwAAEAAAAAAAAGIAAAAAAAAMAABAAAAADA/7d332FRnPsewL9LL6I0ERQUFbHHHgsa xYYaC5bEFvXGqMnVk2hiSdForv0eyU9aBAAAIABJREFUNSdNvWJPNLZo9IgasaCJothQEcUC giCgKCK9v/cPzkxYd2mzC6j7/TwPzwMz885bZnfZ+c1biIgMAAMARERERERERAaAAQAiIiIi IiIiA8AAABEREREREZEBYACAiIiIiIiIyAAwAEBERERERERkABgAICIiIiIiIjIADAAQERER ERERGQAGAIiIiIiIiIgMAAMARERERERERAaAAQAiIiIiIiIiA8AAABEREREREZEBYACAiIiI iIiIyAAwAEBERERERERkABgAICIiIiIiIjIADAAQERERERERGQAGAIiIiIiIiIgMAAMARERE RERERAaAAQAiIiIiIiIiA8AAABEREREREZEBYACAiIiIiIiIyAAwAEBERERERERkABgAICIi IiIiIjIADAAQERERERERGQAGAIiIiIiIiIheYSqVqkzbGQAgIiIiIiIieoVZWlho3W5hYa72 NwMARERERERERK8wp5o1tW6v5eSk9jcDAERERERERESvMBubanCvWxeWlhYwNjKCpaUF3OvV hU21amrHmVRR+YiIiIiIiIhIT2xsqsHGplqJx7AHABEREREREZEBYACAiIiIiIiIyAAwAEBE RERERERkABgAICIiIiIiIjIADAAQERERERERGQAGAIiIiIiIiIgMAAMARERERERERAaAAQAi IiIiIiIiA8AAABEREREREZEBYACAiIiIiIiIyAAwAEBERERERERkABgAICIiIiIiIjIADAAQ ERERERERGQAGAIiIiIiIiIgMAAMARERERERERAaAAQAiIiIiIiIiA8AAABEREREREZEBYACA iIiIiIiIyAAwAEBERERERERkABgAICIiIiIiIjIADAAQERERERERGQAGAIiIiIiIiIgMAAMA RERERERERAZAJYQQ8fHxVV0OIiIiIiIiIqogLi4uUMXFxYnbt29XdVmIiIiIiIiIqIL4+/vD pKoLoQ/h4eGIjo6Gj49PpaQjIiLSNyEEjh8/jpycHLz55puoWbNmVRdJsb/++gspKSno0KED nJycqro4L5XAwEBkZGSobXNzc8Mbb7xRRSXSvxMnTiArKwtt27aFi4tLVReHiIiKeC0CAKdO ncLevXvLfSOvNB0RESmXk5MDMzOzqi7GS2fnzp3w8/NDmzZt0L9//6oujk42bdqEqKgoLF26 lAGAF6xbtw6PHj1S2+bj4/NaBQBycnKwcuVK1K9fH2vXroW5uXlVF4mIiP5D5wDA5cuXsXbt WtSoUQOrVq3Sesz+/fvh7++PFi1aYMaMGbpmCUD9C6S5uTksLS3lfXl5eTAx0V41pemI6PWX kpKCzz77TG2bSqWCubk57O3t4enpCW9vb9SpU0fved+9excfffQRFi1ahC5duuj9/JLIyEgs XboUAODn5wcjI2VzwSYmJuLrr79GXl4eVq5cCVtb2xKPT0pKwubNm3HmzBkkJyfD3NwcjRs3 xogRI9CtWze95/equXv3LjZu3Ahra2t89dVXWq+LttcnAJiYmMDGxgYeHh7o2bMnGjVqVCHl q4zX56uguOugTfv27fHRRx+pbZs3bx6ys7MBAMePH8cff/xRrvyMjIxgbW0NR0dHNGvWDN7e 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 --------------6620B85BC5313A89B6437083-- From debbugs-submit-bounces@debbugs.gnu.org Tue May 29 20:29:36 2018 Received: (at 30964) by debbugs.gnu.org; 30 May 2018 00:29:36 +0000 Received: from localhost ([127.0.0.1]:54465 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fNozg-0003Ho-K0 for submit@debbugs.gnu.org; Tue, 29 May 2018 20:29:36 -0400 Received: from mail-io0-f177.google.com ([209.85.223.177]:37003) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fNoze-0003Hb-E8 for 30964@debbugs.gnu.org; Tue, 29 May 2018 20:29:34 -0400 Received: by mail-io0-f177.google.com with SMTP id e20-v6so19618983iof.4 for <30964@debbugs.gnu.org>; Tue, 29 May 2018 17:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=qfrLRzvm5tucfdVSuQ4VHoEswAGt27xiqbFlAh696z8=; b=t1QHud8vxhcgW4gOBvC/ImSLPHWJrZUvpfrxTWgd11YhvipnQ+2VkJzrhPjri033uO xjX1iYcST8OJpHSx3Xqh/PuhuEfgrX+ijkrUntsyrue/oqwRLF4VO1izEHvEnLSg4e+5 3LHQvxND2w7Pwlay2q7rjBdZINfl542wqeis75vBAEopbgOPWMyLihD2g6D0Dh160V+6 v/lKr9it+A5JTlYr7EOyr1YfgjpjpuF+VNwHaaILTr650D4CkPMYZ2FPkSedP1E7Z63m ofnWet92wygrAR5SCrMFWAthCJGSHiFaFM0t5raLoaxdblTUH0YjX5h8AwyRUTWSMLbg gF+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=qfrLRzvm5tucfdVSuQ4VHoEswAGt27xiqbFlAh696z8=; b=We3Vx22PhSDnl9ztkKjz1/IC9SUbpTqSZbyodrauzEhMyzP+ZaARThfguBxWB31wCG SnVkij3ONofgzrubAiRrNYMANmrZ9Q9Kvhv9jgCqJ2tANeh7S0qXawAz33SABpHbptrj 439J1iu4H2zAppp6AxWra5Hj/XuSsDYYuJ6Su1mkd531VHmbPCH2+44GrIgchhJ5NZT7 33W8puGSYN3Wp1WkmweKra8GZqLdiY9V1wpBC2/jcFRKyGwwawLCuzHzWtAzR5888StG zBWWlPercCrarT7KhOlffWBWeB5c2w6klh3NwjzuftT2Xvk9/KHRVoo/n9+sLH5XsryG 9DbQ== X-Gm-Message-State: APt69E3EIQknnugwQiZctMFU+wSbwEEgayu5hUJUTs/9wIExLdXmEnJ0 ZDXui+5soMVyxgaWjIb8pvs= X-Google-Smtp-Source: ADUXVKL6/MyHk2veuAcaMK7ZYaQcNXWMQvycggKXe2b64RZFCuypK/lk/EwR57idb8NsaXWrUVS2fw== X-Received: by 2002:a6b:c986:: with SMTP id z128-v6mr521456iof.266.1527640168892; Tue, 29 May 2018 17:29:28 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id x189-v6sm8076808ite.2.2018.05.29.17.29.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 17:29:27 -0700 (PDT) From: Noam Postavsky To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> Date: Tue, 29 May 2018 20:29:26 -0400 In-Reply-To: (=?utf-8?Q?=22Cl=C3=A9ment?= Pit-Claudel"'s message of "Fri, 18 May 2018 11:46:26 -0400") Message-ID: <874liqc7fd.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -1.7 (-) X-Debbugs-Envelope-To: 30964 Cc: Philipp Stephani , 30964@debbugs.gnu.org, dancol@dancol.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.7 (--) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cl=C3=A9ment Pit-Claudel writes: > Here's a reliable repro: > > def f(): > " > > def g(): > """That's a docstring""" > return '' It can be reduced a bit: --=-=-= Content-Type: text/x-python Content-Disposition: inline; filename=bug-30964-py-assert.py Content-Description: bug reproducer ' docstring'' --=-=-= Content-Type: text/plain Debugger entered--Lisp error: (cl-assertion-failed ((> string-start last-string-end) "Overlapping strings detected" 13 13)) cl--assertion-failed((> string-start last-string-end) "Overlapping strings detected" (13 13) nil) python-nav-end-of-statement() python-info-end-of-statement-p() python-info-end-of-block-p() python-nav--forward-sexp(-1 nil nil) python-nav-forward-sexp(-1 nil nil) python-nav-backward-sexp() python-info-docstring-p((0 nil nil t nil nil 0 nil 1 nil nil)) python-font-lock-syntactic-face-function((0 nil nil t nil nil 0 nil 1 nil nil)) font-lock-fontify-syntactically-region(1 15 nil) font-lock-default-fontify-region(1 15 nil) font-lock-fontify-region(1 15) font-lock-fontify-block(nil) funcall-interactively(font-lock-fontify-block nil) call-interactively(font-lock-fontify-block nil nil) command-execute(font-lock-fontify-block) I think the problem is that the assertion is off by 1, it currently asserts that there is at least one space between strings (because the end position goes *after* the string, while the start position is part of the string). I see the assertion was added in [1: 4fbd330fae]. Phillip, does my proposed change make sense to you? ('make -C test python-tests' still passes.) --- i/lisp/progmodes/python.el +++ w/lisp/progmodes/python.el @@ -1506,7 +1506,7 @@ python-nav-end-of-statement ;; are somehow out of whack. This has been ;; observed when using `syntax-ppss' during ;; narrowing. - (cl-assert (> string-start last-string-end) + (cl-assert (>= string-start last-string-end) :show-args "Overlapping strings detected") (goto-char string-start) [1: 4fbd330fae]: 2017-03-23 23:05:19 +0100 Protect against an infloop in python-mode https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=4fbd330fae54a9c45d4a717127aa86d75e9938d5 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 02 15:03:31 2018 Received: (at 30964) by debbugs.gnu.org; 2 Jun 2018 19:03:31 +0000 Received: from localhost ([127.0.0.1]:59565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPBoJ-0001u0-Gg for submit@debbugs.gnu.org; Sat, 02 Jun 2018 15:03:31 -0400 Received: from mail-ot0-f169.google.com ([74.125.82.169]:34938) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPBoG-0001ti-AL for 30964@debbugs.gnu.org; Sat, 02 Jun 2018 15:03:29 -0400 Received: by mail-ot0-f169.google.com with SMTP id q17-v6so22467796otg.2 for <30964@debbugs.gnu.org>; Sat, 02 Jun 2018 12:03:28 -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=YI+G1fpXwdd4haWxACkw5QsCDsAcw7emYWWSb8ZdWN4=; b=KGT225KAnJWohEFPutbnJa6HcPZcIeohtzTg8NUwi3x7tpXnSShF+NqXzb4i3wC4AO QwDsyp6Zcvm9AXTfe6BQRXQ9of8ovZKs5J1HWe26Dsb+oGAjieE5ILoaPxuCSWt2TMzc uFvKC1SWIfFX5UhMCWD4+/qRtTzx/wKIrAh/skK8LrfxVdoXK2Qe+03BK6NMiIwLkNQB 3XfsxOkb6gPQ92qQHHJcQkyJiTphq76twwq64UvUy0ZegjotEb/kZm97k4mwHrjKYOxa tjP9aL4JdohGV+rVaRFqruQEZssxnXGaaFfx3NJb3rqLVBIhtXU/wWDvsa8xBOYHMY+f Kg6w== 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=YI+G1fpXwdd4haWxACkw5QsCDsAcw7emYWWSb8ZdWN4=; b=TujdfMjCZciCPMvpvVNIIez/j3NhPgkMBTpKFDOr3DHvQWVHHAiY38zuZ1XI+o03VX 1nm6VWNj4+hX4r4uhFqAhwUiDEmswMgxETzysVb8fTbytbIP4UxKA89TOY+Vf4KUuwWz ttuMesRX7N9vYmXEgUW4P2/IEDSNQUX8axPXtzcXgryrrbAsIQDpk8niTYGLP5/JGCPa 2/NWeEKNzT5p1Hkzr2xu+cEIp9Khvw9ImqqJqkbNURdQhnRtK1cq8Npt/PODIkT+ujyt lFDT+HwxaL3rNuIRHcLICNmxjUwEyv62KZ9jEysOO8/20q2FE90pdBa5eNpernDgzY32 QMew== X-Gm-Message-State: APt69E1tjo8ZrhPj3VLl5GNbt+Ii1QgLuQwF0PX0rWQOdQIAvXeMk1bh TREmNjrQHI6X9dfxHJBE4opEGyeZnGDNCuh4Xk0= X-Google-Smtp-Source: ADUXVKIZniTCAWOXS6bAUOB0mZ+HZAPWltlZ8+h6O5hNbmdLVZurPdum1XoDc45DPaj8tkrieYqNlk+eH13rfV5zSe4= X-Received: by 2002:a9d:282e:: with SMTP id m43-v6mr10682962otb.393.1527966202606; Sat, 02 Jun 2018 12:03:22 -0700 (PDT) MIME-Version: 1.0 References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <874liqc7fd.fsf@gmail.com> In-Reply-To: <874liqc7fd.fsf@gmail.com> From: Philipp Stephani Date: Sat, 2 Jun 2018 21:03:10 +0200 Message-ID: Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately To: Noam Postavsky Content-Type: multipart/alternative; boundary="000000000000bc3902056dad5a61" X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 30964 Cc: =?UTF-8?Q?Cl=C3=A9ment_Pit=2DClaudel?= , 30964@debbugs.gnu.org, dancol@dancol.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --000000000000bc3902056dad5a61 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Noam Postavsky schrieb am Mi., 30. Mai 2018 um 02:29 Uhr: > Cl=C3=A9ment Pit-Claudel writes: > > > Here's a reliable repro: > > > > def f(): > > " > > > > def g(): > > """That's a docstring""" > > return '' > > It can be reduced a bit: > > > Debugger entered--Lisp error: (cl-assertion-failed ((> string-start > last-string-end) "Overlapping strings detected" 13 13)) > cl--assertion-failed((> string-start last-string-end) "Overlapping > strings detected" (13 13) nil) > python-nav-end-of-statement() > python-info-end-of-statement-p() > python-info-end-of-block-p() > python-nav--forward-sexp(-1 nil nil) > python-nav-forward-sexp(-1 nil nil) > python-nav-backward-sexp() > python-info-docstring-p((0 nil nil t nil nil 0 nil 1 nil nil)) > python-font-lock-syntactic-face-function((0 nil nil t nil nil 0 nil 1 > nil nil)) > font-lock-fontify-syntactically-region(1 15 nil) > font-lock-default-fontify-region(1 15 nil) > font-lock-fontify-region(1 15) > font-lock-fontify-block(nil) > funcall-interactively(font-lock-fontify-block nil) > call-interactively(font-lock-fontify-block nil nil) > command-execute(font-lock-fontify-block) > > I think the problem is that the assertion is off by 1, it currently > asserts that there is at least one space between strings (because the > end position goes *after* the string, while the start position is part > of the string). > > I see the assertion was added in [1: 4fbd330fae]. Phillip, does my > proposed change make sense to you? Maybe :-) Off-by-one errors are always a bit subtle, so it might definitely be the case that there is one. If so, the problem could be further reduced to ' '' ' or similar. Could you add a unit test using such input and make sure that it breaks without your patch? > ('make -C test python-tests' still > passes.) > > --- i/lisp/progmodes/python.el > +++ w/lisp/progmodes/python.el > @@ -1506,7 +1506,7 @@ python-nav-end-of-statement > ;; are somehow out of whack. This has been > ;; observed when using `syntax-ppss' during > ;; narrowing. > - (cl-assert (> string-start last-string-end) > + (cl-assert (>=3D string-start last-string-end) > :show-args > "Overlapping strings detected") > (goto-char string-start) > > [1: 4fbd330fae]: 2017-03-23 23:05:19 +0100 > Protect against an infloop in python-mode > > https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3D4fbd330fae54a9c4= 5d4a717127aa86d75e9938d5 > > --000000000000bc3902056dad5a61 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Noam P= ostavsky <npostavs@gmail.com&g= t; schrieb am Mi., 30. Mai 2018 um 02:29=C2=A0Uhr:
Cl=C3=A9ment Pit-Claudel <clement.pitclaudel@live.com> writ= es:

> Here's a reliable repro:
>
> def f():
>=C2=A0 =C2=A0 =C2=A0"
>
> def g():
>=C2=A0 =C2=A0 =C2=A0"""That's a docstring""= ;"
>=C2=A0 =C2=A0 =C2=A0return ''

It can be reduced a bit:


Debugger entered--Lisp error: (cl-assertion-failed ((> string-start last= -string-end) "Overlapping strings detected" 13 13))
=C2=A0 cl--assertion-failed((> string-start last-string-end) "Overl= apping strings detected" (13 13) nil)
=C2=A0 python-nav-end-of-statement()
=C2=A0 python-info-end-of-statement-p()
=C2=A0 python-info-end-of-block-p()
=C2=A0 python-nav--forward-sexp(-1 nil nil)
=C2=A0 python-nav-forward-sexp(-1 nil nil)
=C2=A0 python-nav-backward-sexp()
=C2=A0 python-info-docstring-p((0 nil nil t nil nil 0 nil 1 nil nil))
=C2=A0 python-font-lock-syntactic-face-function((0 nil nil t nil nil 0 nil = 1 nil nil))
=C2=A0 font-lock-fontify-syntactically-region(1 15 nil)
=C2=A0 font-lock-default-fontify-region(1 15 nil)
=C2=A0 font-lock-fontify-region(1 15)
=C2=A0 font-lock-fontify-block(nil)
=C2=A0 funcall-interactively(font-lock-fontify-block nil)
=C2=A0 call-interactively(font-lock-fontify-block nil nil)
=C2=A0 command-execute(font-lock-fontify-block)

I think the problem is that the assertion is off by 1, it currently
asserts that there is at least one space between strings (because the
end position goes *after* the string, while the start position is part
of the string).

I see the assertion was added in [1: 4fbd330fae].=C2=A0 Phillip, does my proposed change make sense to you?

Maybe :-= )
Off-by-one errors are always a bit subtle, so it might definite= ly be the case that there is one. If so, the problem could be further reduc= ed to
' '' '
or similar. Could you add = a unit test using such input and make sure that it breaks without your patc= h?

=C2=A0
=C2= =A0 ('make -C test python-tests' still
passes.)

--- i/lisp/progmodes/python.el
+++ w/lisp/progmodes/python.el
@@ -1506,7 +1506,7 @@ python-nav-end-of-statement
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ;; are somehow out of whack.=C2=A0 This has been
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ;; observed when using `syntax-ppss' during
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ;; narrowing.
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(cl-assert (> string-start last-string-end)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(cl-assert (>=3D string-start last-string-end)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:show-args
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"Overlapping strin= gs detected")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (goto-char string-start)

[1: 4fbd330fae]: 2017-03-23 23:05:19 +0100
=C2=A0 Protect against an infloop in python-mode
=C2=A0 https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3D4fbd330fae54a9= c45d4a717127aa86d75e9938d5

--000000000000bc3902056dad5a61-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 02 16:36:03 2018 Received: (at 30964) by debbugs.gnu.org; 2 Jun 2018 20:36:03 +0000 Received: from localhost ([127.0.0.1]:59584 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPDFr-0004hp-98 for submit@debbugs.gnu.org; Sat, 02 Jun 2018 16:36:03 -0400 Received: from mail-io0-f175.google.com ([209.85.223.175]:43445) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPDFo-0004hD-9S for 30964@debbugs.gnu.org; Sat, 02 Jun 2018 16:36:01 -0400 Received: by mail-io0-f175.google.com with SMTP id t6-v6so15061675iob.10 for <30964@debbugs.gnu.org>; Sat, 02 Jun 2018 13:36:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=ozhTUMSM9pzABpCDoJxASRWgnnQon0Vr5ZHflkY5tA4=; b=bxVTz3o4B89WvKthCgCT7uEU+dSW4rd0clD+zLsyPlg9XIA0jJVg39S2/slTzDtl66 HVm+OnD0pRQylRc0uKjNjJQdWOn5OMJmXQFWliQa1XUAKFucRlK9z7Y+2NPLh0G7dBl8 StkeN3yBFxKOZWWpgEdvhw6rfhauhlsnELIlUC95MuDf1oGhAWaF+eDIn616hLU6eF8s poQJEVW2HU3UiDRZlTMaNpE/++iXo7cKb0+FZm2KDsFhsAkPkiKdrP3ckYinePTT0cU3 UtzpQFseOsj10dlwMhL0LCFvtA0BRzcxoYwrZU5l7jaCjINLidfIJX2IKSPYRaJvl9c/ MXRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=ozhTUMSM9pzABpCDoJxASRWgnnQon0Vr5ZHflkY5tA4=; b=hmwtEYyAvXzrxOt84s19bVrFls39Icbl8g5rFeNuds21KIw3xnCBbO89IcsxhTIbYd Jx34+cRBccNxPncjSOBMdCXZae/VCFpOxcDBpC1dCx5f2Z+Re1StwyKPjSJMng1qGG59 LzNruzF56UVQFh/YBOwH+D3WCnJ7sh3PA8vZRFK1mjU3yu0fjGUQBjECINGegZIiZsym FzM0A/hhQt1AxRwnuoxTLUZA1lTvlSNv5OeXzm+FZJXwRl90fn2b6VgUfYExZktZ7K/M i31aNnu8vRGmBP/A85jtsVv/++dUXhVT1gziRRGiqotU39cBU8xnQTaQjeqjZ8sq/w/Z PCvA== X-Gm-Message-State: APt69E2lFsASDO7YIafyTHMXLjxmMHq2tu7mVNNJ/Fu4w9f07HWOCZP+ nTATtuX0xh1ReRsG5L4TATk= X-Google-Smtp-Source: ADUXVKLqdU/9CAlxRNR8dMOkS1PqQ93ufTJCizCe2FWbc3aKaFOP1oy9ApK9OqNm5Z7yJePciqFHgA== X-Received: by 2002:a5e:9407:: with SMTP id q7-v6mr11380356ioj.268.1527971754803; Sat, 02 Jun 2018 13:35:54 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id g6-v6sm2299359iti.0.2018.06.02.13.35.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 02 Jun 2018 13:35:53 -0700 (PDT) From: Noam Postavsky To: Philipp Stephani Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <874liqc7fd.fsf@gmail.com> Date: Sat, 02 Jun 2018 16:35:50 -0400 In-Reply-To: (Philipp Stephani's message of "Sat, 2 Jun 2018 21:03:10 +0200") Message-ID: <87muwd9ba1.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30964 Cc: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel , 30964@debbugs.gnu.org, dancol@dancol.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Philipp Stephani writes: >> I think the problem is that the assertion is off by 1, it currently >> asserts that there is at least one space between strings (because the >> end position goes *after* the string, while the start position is part >> of the string). >> >> I see the assertion was added in [1: 4fbd330fae]. Phillip, does my >> proposed change make sense to you? > > > Maybe :-) > Off-by-one errors are always a bit subtle, so it might definitely be the > case that there is one. If so, the problem could be further reduced to > ' '' ' > or similar. Could you add a unit test using such input and make sure that > it breaks without your patch? Yeah, the newlines are the important part it seems. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Fix-off-by-one-error-in-python-mode-assertion-Bug-30.patch Content-Description: patch >From 209506955227d3b4de030f817c087bf27e5a7426 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 2 Jun 2018 16:22:17 -0400 Subject: [PATCH] Fix off by one error in python-mode assertion (Bug#30964) * lisp/progmodes/python.el (python-nav-end-of-statement): Don't assert that string-start is strictly greater than last-string-end, because the string end is a position outside of the string and may therefore be the same as the following string's start. * test/lisp/progmodes/python-tests.el (python-nav-end-of-statement-2): New test. --- lisp/progmodes/python.el | 2 +- test/lisp/progmodes/python-tests.el | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index c7bb2d97c8..87d2f08fee 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1506,7 +1506,7 @@ python-nav-end-of-statement ;; are somehow out of whack. This has been ;; observed when using `syntax-ppss' during ;; narrowing. - (cl-assert (> string-start last-string-end) + (cl-assert (>= string-start last-string-end) :show-args "Overlapping strings detected") (goto-char string-start) diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 4955da02a2..375bd9588d 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -2004,6 +2004,12 @@ python-tests-visible-string (python-util-forward-comment -1) (point)))))) +(ert-deftest python-nav-end-of-statement-2 () + "Test the string overlap assertion (Bug#30964)." + (python-tests-with-temp-buffer + "'\n''\n" + (python-nav-end-of-statement))) + (ert-deftest python-nav-forward-statement-1 () (python-tests-with-temp-buffer " -- 2.11.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 16 16:55:54 2018 Received: (at 30964) by debbugs.gnu.org; 16 Jun 2018 20:55:54 +0000 Received: from localhost ([127.0.0.1]:52133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIEk-0008EB-54 for submit@debbugs.gnu.org; Sat, 16 Jun 2018 16:55:54 -0400 Received: from dancol.org ([96.126.100.184]:35436) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIEi-0008E4-Qh for 30964@debbugs.gnu.org; Sat, 16 Jun 2018 16:55:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:To:From:Subject:Date:References:In-Reply-To:Message-ID; bh=e69fw4mCTPujyXLv5nOxZSbcAmhECBrE3E0yVNRTmtg=; b=ct2CvQUhOrMbqWbteSzJBuV6LzekzCtKc+YPhRr/ObJi6thryT7BLiLNTvViZxazKsdbHjBvgWESAzav9gS+dDnUa+VIU0T/YyPJdXcuKvyf2HeD9uIX+xBNRfHEJG71Hb41gfCaN4mRzHXH8SXKKumuJwwUm1CC0MdvIquomhV9eOEH6PAJBWg0aWz93LWOC7IJvf7wY1UiYktF/zVxX0/s4G50zWXQv59CtVVuwiyPRAmrn59DHf8+3KKmcqjzEJIJgjKK2DNCzwC03NkmRsdKSWV/RP7U2OB0plbDqyP+DcXI0v5DMtA9LdZWz3IyEvt9o6815zT5fL4+xU2hQA==; Received: from localhost ([127.0.0.1] helo=dancol.org) by dancol.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIEf-0003SF-Q1; Sat, 16 Jun 2018 13:55:49 -0700 Received: from 127.0.0.1 (SquirrelMail authenticated user dancol) by dancol.org with HTTP; Sat, 16 Jun 2018 13:55:49 -0700 Message-ID: <5481253d38230797b677df41cf507790.squirrel@dancol.org> In-Reply-To: <87muwd9ba1.fsf@gmail.com> References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <874liqc7fd.fsf@gmail.com> <87muwd9ba1.fsf@gmail.com> Date: Sat, 16 Jun 2018 13:55:49 -0700 Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately From: "Daniel Colascione" To: "Noam Postavsky" User-Agent: SquirrelMail/1.4.23 [SVN] MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30964 Cc: =?iso-8859-1?Q?=22Cl=C3=A9ment_Pit-Claudel=22?= , Philipp Stephani , 30964@debbugs.gnu.org, dancol@dancol.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) So it turns out that it wasn't an off-by-one problem at all. Instead, python was using (re-search-forward (rx (syntax string-delimiter))), which was matching incorrectly because re-search-forward didn't update syntax as it matched. It didn't do that because regex matching in general wasn't reentrant, and it wasn't reentrant because regex bytecode programs are self-modifying. I checked in some work that makes regex searching update syntax as needed. From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 16 16:56:46 2018 Received: (at control) by debbugs.gnu.org; 16 Jun 2018 20:56:46 +0000 Received: from localhost ([127.0.0.1]:52140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIFa-0008Fr-LK for submit@debbugs.gnu.org; Sat, 16 Jun 2018 16:56:46 -0400 Received: from dancol.org ([96.126.100.184]:35456) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIFZ-0008Fj-8n for control@debbugs.gnu.org; Sat, 16 Jun 2018 16:56:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version:To:From:Subject:Date:Message-ID; bh=0ZBv7i1vOIGcE/qWZNGJ2R/Ng6ZCuOD3es/otWiJknE=; b=dVAbis6o3DK09LpRHq4rP2xC3nfwmR3pE8341K7j6NK/vvbDu6cWdhTYN0+wb6QYlLg1Gd3t3gAdfCLt4SoZxcFSLX/W4etdFLT/HFdsnKWBRqhkmKZlIqFXrC2l9fsloSTIJWyaoOc0BjWv7vUeSdX872tF6sSdSimmNON5K9q6LZkIvymSYYsVDREmVTGQHnno9v+aAYQ7WCkwLZxVI3hTIZtP2SZsxRKPK6Faa7frMUj3hEVw8CjhpOljarevnSY/3yDRrgQNKebP7pp19kVf2PUhyqOZ+yFlWaUcHDzfq4H9GVR/c8NWwts+E0/8k3lTu5xPsoMvEHylwoi8Ww==; Received: from localhost ([127.0.0.1] helo=dancol.org) by dancol.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUIFY-0003Sn-P9 for control@debbugs.gnu.org; Sat, 16 Jun 2018 13:56:44 -0700 Received: from 127.0.0.1 (SquirrelMail authenticated user dancol) by dancol.org with HTTP; Sat, 16 Jun 2018 13:56:44 -0700 Message-ID: <45a30fb42093a8a01977b07ce89608fa.squirrel@dancol.org> Date: Sat, 16 Jun 2018 13:56:44 -0700 Subject: From: "Daniel Colascione" To: control@debbugs.gnu.org User-Agent: SquirrelMail/1.4.23 [SVN] MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: close 30964 [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 2.0 BLANK_SUBJECT Subject is present but empty 0.0 T_DKIM_INVALID DKIM-Signature header exists but is not valid 0.0 TVD_SPACE_RATIO No description available. X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) close 30964 From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 16 18:36:38 2018 Received: (at 30964) by debbugs.gnu.org; 16 Jun 2018 22:36:38 +0000 Received: from localhost ([127.0.0.1]:52241 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUJoE-0001dw-6J for submit@debbugs.gnu.org; Sat, 16 Jun 2018 18:36:38 -0400 Received: from mail-it0-f52.google.com ([209.85.214.52]:34930) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUJoC-0001dk-S1 for 30964@debbugs.gnu.org; Sat, 16 Jun 2018 18:36:37 -0400 Received: by mail-it0-f52.google.com with SMTP id a3-v6so7396761itd.0 for <30964@debbugs.gnu.org>; Sat, 16 Jun 2018 15:36:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=dtjnHDGm7zovj4Xvo1TrGxZzfF37ylNdRuLsV6hR0Os=; b=TB7mdL4uyXlFe7mAGiJht2NbqXrfogbIjeyQxv3QSoLvCmhz5zmu0ZQuMtzssMLdrv jb45F5RmIj4qQ2WO6XOYlY4SNMlKJSxSH5NPIUVby2y1OHzk2BD3FLWpcVBG59tEPcK5 OxUNf41zik96iBqV7nvCd/3qamRbKsubP6RT+MK3j7Ngp9YML1fmP+NFaImb5odhzX4e +1oACpx33ioUlZGLXvh1sljziDC1vrmNd1zyXZOGZjFBs9U2c0mumyLg2DMSFh6EyMo6 2MAHs0s6hC4DAkiJEy84IJnhCFrV/hNfVXKR59TRIqDurKfSfTyTrpr8jLSSVv+9qT9P 3s1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=dtjnHDGm7zovj4Xvo1TrGxZzfF37ylNdRuLsV6hR0Os=; b=MPJ7kkpRi9jvNJDJuyLhOpQePdqACH0uOglcXFVuvzQae8q0uJWzulSn9OncnrEoVC bceSoy9CFbB2q67lYPZ77Pt2QMZ8qvVwH2cKqYINqJN36f9hswTueSp+8SOEaVoSbYtB gPZgIcGRtX48sffOTRmTxa+SQ3C442pbNOa2vU8SUzbzNq0wqvsvEtCWF4oteyDl1lld jqHlq6yuV7zFg9oTgfFhC9rxPRgOBw9E171TI+m0G+CLrHq+tyo2oy2DGPi8RxtGa/U5 87XjCKxZsO5Gd5+tl+WSHHUKAHSIv+0i8xjjtCS8M8ZXP6suhvT+416AVPYiztFptm+k iaUg== X-Gm-Message-State: APt69E38JrqIpbdD7GDzluSPGNPx5J8KBGo2/IGW+Yo6jw33Gztf0lRP KTjM/ymvP3MsXPu17Z1ST00Kv29T X-Google-Smtp-Source: ADUXVKKpnSUnQdU5z5InehW8ml2vFMDkmM/s34FCxnWiEMD/JaPo6Gc1pNwRYYuJu0fuyY80NqARvA== X-Received: by 2002:a24:4516:: with SMTP id y22-v6mr5551112ita.109.1529188591208; Sat, 16 Jun 2018 15:36:31 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id x5-v6sm3942879ioa.65.2018.06.16.15.36.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 16 Jun 2018 15:36:30 -0700 (PDT) From: Noam Postavsky To: "Daniel Colascione" Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <874liqc7fd.fsf@gmail.com> <87muwd9ba1.fsf@gmail.com> <5481253d38230797b677df41cf507790.squirrel@dancol.org> Date: Sat, 16 Jun 2018 18:36:29 -0400 In-Reply-To: <5481253d38230797b677df41cf507790.squirrel@dancol.org> (Daniel Colascione's message of "Sat, 16 Jun 2018 13:55:49 -0700") Message-ID: <87wouytl3m.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 30964 Cc: =?utf-8?Q?Cl=C3=83=C2=A9ment_Pit-Claudel?= , Philipp Stephani , 30964@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) "Daniel Colascione" writes: > So it turns out that it wasn't an off-by-one problem at all. Instead, > python was using (re-search-forward (rx (syntax string-delimiter))), which > was matching incorrectly because re-search-forward didn't update syntax as > it matched. It didn't do that because regex matching in general wasn't > reentrant, and it wasn't reentrant because regex bytecode programs are > self-modifying. > > I checked in some work that makes regex searching update syntax as needed. It seems there were two separate problems. The off-by-one error still happens after your changes, so I pushed my patch to master. [1: 05345babc9]: 2018-06-16 18:34:19 -0400 Fix off by one error in python-mode assertion (Bug#30964) https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=05345babc988060cca540770599282102c34f2a7 From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 17 03:31:15 2018 Received: (at submit) by debbugs.gnu.org; 17 Jun 2018 07:31:15 +0000 Received: from localhost ([127.0.0.1]:52525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUS9b-0005HJ-Ez for submit@debbugs.gnu.org; Sun, 17 Jun 2018 03:31:15 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50070) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUS9Y-0005H4-H8 for submit@debbugs.gnu.org; Sun, 17 Jun 2018 03:31:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fUS9S-0002iX-7n for submit@debbugs.gnu.org; Sun, 17 Jun 2018 03:31:07 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:60111) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fUS9S-0002iQ-4R for submit@debbugs.gnu.org; Sun, 17 Jun 2018 03:31:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41017) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fUS9Q-0007Ds-NN for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 03:31:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fUS9M-0002f7-QE for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 03:31:04 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:57485) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fUS9M-0002eA-FK for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 03:31:00 -0400 Received: from [192.168.178.35] ([178.8.167.152]) by mrelayeu.kundenserver.de (mreue006 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LxHby-1gIkPL2t4s-016u9u for ; Sun, 17 Jun 2018 09:30:58 +0200 Subject: Re: bug#30964: python-mode failing "overlapping strings" assertion lately To: bug-gnu-emacs@gnu.org References: <5c3e75f096fae419224804c590805b9c.squirrel@dancol.org> <874liqc7fd.fsf@gmail.com> <87muwd9ba1.fsf@gmail.com> <5481253d38230797b677df41cf507790.squirrel@dancol.org> <87wouytl3m.fsf@gmail.com> From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Message-ID: <66d9224e-631e-8824-8e39-19f41bcdf29f@easy-emacs.de> Date: Sun, 17 Jun 2018 09:33:09 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <87wouytl3m.fsf@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:36PyxSaumdFdjdnDoPNR/s69njf89BN61uFk0FyWLF9BBM1eso3 e2MHtxfNazOm5UMsEJv07gqrzy3gt6nhgNzJhhyQOUiM7AI86lTSgTfSRWPxbK19wUzKJuq GxTDW6DBIVidK5u8RF1/BvA9KCO9qzyGYVaDDGp+L5QFNVQmaDe3kKQ+27SwCpB4ApcpdPG COmZ1ztEFMY8ONhc3X0tQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:DFYt4Miwass=:yazt+8QXxMb2jvA0kJ55cl nFo8969YKGNf+5CV/pl3n5ibNcOZ8Rnhnhyp2vKMUfLq2b6qP/L1MKEIJwD0DwJzDs37EAOVx 8N/jUhLgk1yOilcC+mEiCcD+hPragFfGjNsNFDKgDNrd4A1lIQjEUexykjYdPGDJhiHu8s2nj qds4MeYsrR0gPkSEpj369z6SVuIrhHgXHmYQmWbHEWaduwFm+vw2Mg78vHNXKsYWiMUNulCMu Tsks8dge2IBentOSFgpCIFdQabnVjTm8RTDewE+a1L+QrTLPzByWldKCezA6rgXCoA08qTeFA EXWojA1Uy08qGhBP/M04ApLDm1Rkg/9a4E0+GVLEB5HnkOojQO8hQ2iPQFB42dUnRatHS+2qL koi1GM2YXCN6c6fVkqyMOS2KoET6ulsh2e00WJOWPSx5TgWA7sI6waxBcR5Vxi8oVb9pSLsFX 7vu5WBGI8dAohro55yEpcE643WWGsmEt7fBVL1ZiGjo69SMzWegUPw0eeIHCNqosw+GM2RItD LaMKci3iKGM3iWf+eGdSN6v30yJOqkqe98ShqDLR4m9lXIP9iilljM3EAnRsTqqgfw2EDnHqU DmiYYC83/fHKxe6wKbNsH5CZVeT3vONOSUoGEeL+sxP+gWAlvJ2FOYjSkyG04SMDvr6Yh5f+D ClovO3YW4VEYd0zM5aUM+f2yuq8E63fWC5WDQY6QlLP02yR13hGMPXjE/Qrybd27xF9+ZGLgD bCHKEEPz/tevtOQU X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On 17.06.2018 00:36, Noam Postavsky wrote: > "Daniel Colascione" writes: > >> So it turns out that it wasn't an off-by-one problem at all. Instead, >> python was using (re-search-forward (rx (syntax string-delimiter))), which >> was matching incorrectly because re-search-forward didn't update syntax as >> it matched. It didn't do that because regex matching in general wasn't >> reentrant, and it wasn't reentrant because regex bytecode programs are >> self-modifying. >> >> I checked in some work that makes regex searching update syntax as needed. > > It seems there were two separate problems. The off-by-one error still > happens after your changes, so I pushed my patch to master. > > [1: 05345babc9]: 2018-06-16 18:34:19 -0400 > Fix off by one error in python-mode assertion (Bug#30964) > https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=05345babc988060cca540770599282102c34f2a7 > > > Hi folks, sorry, but as long as syntax-ppss has fundamentally issues, all fixing here will be vain. For the very same reason don't be surprised having not "found a reliable test case". Cheers, Andreas From unknown Mon Jun 23 18:28:32 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 16 Jul 2018 11:24:10 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator