From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jason Rumney Newsgroups: gmane.emacs.bugs Subject: bug#716: Bug in buffer-swap-text Date: Wed, 24 Dec 2008 07:15:26 +0800 Message-ID: <4951710E.2080407@f2s.com> References: <4950DD60.4080202@gnu.org> <4950FAF6.808@f2s.com> <49510053.6020805@f2s.com> Reply-To: Jason Rumney , 716@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1230074622 21588 80.91.229.12 (23 Dec 2008 23:23:42 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 23 Dec 2008 23:23:42 +0000 (UTC) Cc: 716@emacsbugs.donarmstrong.com To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Dec 24 00:24:47 2008 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1LFGcH-0004Dz-RH for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Dec 2008 00:24:46 +0100 Original-Received: from localhost ([127.0.0.1]:37868 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LFGb4-0008Kr-Rj for geb-bug-gnu-emacs@m.gmane.org; Tue, 23 Dec 2008 18:23:30 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LFGb0-0008Ka-Te for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2008 18:23:26 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LFGay-0008K7-5K for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2008 18:23:26 -0500 Original-Received: from [199.232.76.173] (port=49157 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LFGax-0008K4-Pl for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2008 18:23:23 -0500 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:42598) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LFGax-0006Na-CA for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2008 18:23:23 -0500 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBNNNKZC000662; Tue, 23 Dec 2008 15:23:20 -0800 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id mBNNK3on031641; Tue, 23 Dec 2008 15:20:03 -0800 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: Jason Rumney Original-Sender: Jason Rumney Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs , owner@emacsbugs.donarmstrong.com Resent-Date: Tue, 23 Dec 2008 23:20:03 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: followup 716 X-Emacs-PR-Package: emacs,w32 X-Emacs-PR-Keywords: Original-Received: via spool by 716-submit@emacsbugs.donarmstrong.com id=B716.123007416131239 (code B ref 716); Tue, 23 Dec 2008 23:20:03 +0000 Original-Received: (at 716) by emacsbugs.donarmstrong.com; 23 Dec 2008 23:16:01 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.186]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBNNFvxf031232 for <716@emacsbugs.donarmstrong.com>; Tue, 23 Dec 2008 15:15:58 -0800 Original-Received: by ti-out-0910.google.com with SMTP id b6so1915938tic.1 for <716@emacsbugs.donarmstrong.com>; Tue, 23 Dec 2008 15:15:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=hElpO/+PpCkOz07LLCSCUE23kih1Se4HIrj+aSz92Jk=; b=kHl+075kfmbGFwd6N0lREuH7O/bXl503koTo4GRfJFFNh5OOw3CjH44v2ix/AN0IqK U3nm4bJyad5AlqN5kDSK3P+ARnQVPLqCmtRQa50li1Enbe44R5MtdtcWiQB/IHaLXs/3 wINz5zHDEZ6CTdl/eIYgITksfhZvAyeYWhZlo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=rFFPZHS9ps1MAML3IgPE7EWkE7WVCaymK6SZGAo74Dtl9tZHOftis4drTqbmPjSwCQ 9WnFrpG+Eh1Hhwoe0UXIQiu7dTQylSxcWAFm8rA487/+QWekcGcIfYPOgJo3KZTjYsrC C4IvC/H4mMoEH2vNMXHSRuid1UPUoG28nhNyc= Original-Received: by 10.110.57.6 with SMTP id f6mr7621569tia.51.1230074156876; Tue, 23 Dec 2008 15:15:56 -0800 (PST) Original-Received: from ?192.168.1.2? ([118.101.181.97]) by mx.google.com with ESMTPS id a14sm2426161tia.32.2008.12.23.15.15.54 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 23 Dec 2008 15:15:55 -0800 (PST) User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Resent-Date: Tue, 23 Dec 2008 18:23:26 -0500 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:23456 Archived-At: Stefan Monnier wrote: > Your analysis sounds right, thank you. I'd suggest to use another > r_alloc primitve, something like r_alloc_reset_variable, so you could do > > r_alloc_reset_variable(¤t_buffer->own_text.beg); > r_alloc_reset_variable(&other_buffer->own_text.beg); > > after the swap. It could use the untested patch below. WDYT? > > > === modified file 'src/ralloc.c' > --- src/ralloc.c 2008-11-21 19:14:07 +0000 > +++ src/ralloc.c 2008-12-23 17:23:02 +0000 > @@ -402,7 +402,7 @@ > > while (p != NIL_BLOC) > { > - if (p->variable == ptr && p->data == *ptr) > + if (p->data == *ptr) > return p; > > p = p->next; > This removes the consistency check, without which we would have taken much longer to find this problem, as Emacs would not have aborted when no bloc could be found, and the problem would have been memory corruption later when that bloc of memory was moved and the wrong pointer updated.