From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.bugs Subject: bug#34525: replace-regexp missing some matches Date: Tue, 26 Feb 2019 18:00:59 -0500 Message-ID: References: <20190220170722.GA9655@ACM> <83sgwigwxm.fsf@gnu.org> <20190220185850.GB9655@ACM> <83lg2agt0j.fsf@gnu.org> <20190220213003.GC9655@ACM> <83bm35hkqo.fsf@gnu.org> <20190224173746.GA21808@ACM> <83mumlnk8y.fsf@gnu.org> <20190224210058.GB21808@ACM> <83mumjmxv6.fsf@gnu.org> <20190226135048.GA19653@ACM> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="48800"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: daniel.lopez999@gmail.com, 34525@debbugs.gnu.org To: Alan Mackenzie Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Feb 27 00:02:16 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.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gyljr-000CZi-W9 for geb-bug-gnu-emacs@m.gmane.org; Wed, 27 Feb 2019 00:02:16 +0100 Original-Received: from localhost ([127.0.0.1]:34361 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gyljr-0007bL-1H for geb-bug-gnu-emacs@m.gmane.org; Tue, 26 Feb 2019 18:02:15 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:56126) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gyljh-0007ZP-2F for bug-gnu-emacs@gnu.org; Tue, 26 Feb 2019 18:02:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gyljg-0005lj-AH for bug-gnu-emacs@gnu.org; Tue, 26 Feb 2019 18:02:05 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:39834) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gyljf-0005lK-UF; Tue, 26 Feb 2019 18:02:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gylje-0000Yz-I0; Tue, 26 Feb 2019 18:02:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org, bug-cc-mode@gnu.org Resent-Date: Tue, 26 Feb 2019 23:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 34525 X-GNU-PR-Package: emacs,cc-mode Original-Received: via spool by 34525-submit@debbugs.gnu.org id=B34525.15512220642020 (code B ref 34525); Tue, 26 Feb 2019 23:02:02 +0000 Original-Received: (at 34525) by debbugs.gnu.org; 26 Feb 2019 23:01:04 +0000 Original-Received: from localhost ([127.0.0.1]:53378 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gylii-0000WV-DR for submit@debbugs.gnu.org; Tue, 26 Feb 2019 18:01:04 -0500 Original-Received: from chene.dit.umontreal.ca ([132.204.246.20]:53952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gylif-0000Vs-G1 for 34525@debbugs.gnu.org; Tue, 26 Feb 2019 18:01:03 -0500 Original-Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id x1QN0xTa019866; Tue, 26 Feb 2019 18:01:00 -0500 Original-Received: by pastel.home (Postfix, from userid 20848) id 90ED069F65; Tue, 26 Feb 2019 18:00:59 -0500 (EST) In-Reply-To: <20190226135048.GA19653@ACM> (Alan Mackenzie's message of "Tue, 26 Feb 2019 13:50:48 +0000") X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6491=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6491> : inlines <7024> : streams <1814196> : uri <2802783> 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:155831 Archived-At: > After this buffer change, adjust_intervals_for_insertion gets called. > This adds 6 onto the ->position field of each interval "adjusting all of > its ancestors by adding LENGTH to them", according to the comment at the > head of adjust_intervals_for_insertion. > > Note this only adjusts the ancestors of that interval early in the .h > file, not all intervals in the tree. Maybe the problem comes from here. The lazy adjustment of ->position may be too lazy here. This is a fairly delicate/brittle part of intervals.c > I'm reasonably sure this is what's happening: > adjust_intervals_for_insertion is failing to adjust the cached intervals > in gl_state. It's a nasty cache invalidation problem. As mentioned earlier, I think gl_state should be sufficiently transient that this scenario can't happen. Elsewhere you send a sample patch and Eli asks "Does that slow down the search in any significant way?". The answer should be "yes!" because this patch pretty much defeats the purpose of the gl_state cache, recomputing the current interval (O(logN)) every time we move from one character to the next. Maybe another way to catch the problem is: at the end of upate_syntax_table, call `interval_of (charpos, object)` and verify that the returned interval is the same as the one we had selected, plus verify that the call to `interval_of` has not modified the value of ->position. Stefan