From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: transpose-regions Date: Fri, 23 Mar 2007 12:42:00 -0400 Message-ID: References: <46026277.7060305@gmx.at> <87zm64kau0.fsf@stupidchicken.com> <87ircst5jn.fsf@stupidchicken.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1174668139 27402 80.91.229.12 (23 Mar 2007 16:42:19 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 23 Mar 2007 16:42:19 +0000 (UTC) Cc: Andreas Schwab , Chong Yidong , emacs-devel , martin rudalics To: storm@cua.dk (Kim F. Storm) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Mar 23 17:42:11 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HUmq6-0001dF-V3 for ged-emacs-devel@m.gmane.org; Fri, 23 Mar 2007 17:42:07 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HUms1-0007ps-Ot for ged-emacs-devel@m.gmane.org; Fri, 23 Mar 2007 11:44:05 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HUmry-0007pm-TJ for emacs-devel@gnu.org; Fri, 23 Mar 2007 12:44:02 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HUmrx-0007pa-CT for emacs-devel@gnu.org; Fri, 23 Mar 2007 12:44:02 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HUmrx-0007pX-8u for emacs-devel@gnu.org; Fri, 23 Mar 2007 11:44:01 -0500 Original-Received: from tomts25.bellnexxia.net ([209.226.175.188] helo=tomts25-srv.bellnexxia.net) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HUmq1-0001M6-Hu for emacs-devel@gnu.org; Fri, 23 Mar 2007 12:42:01 -0400 Original-Received: from pastel.home ([70.55.83.113]) by tomts25-srv.bellnexxia.net (InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id <20070323164200.XZYZ1521.tomts25-srv.bellnexxia.net@pastel.home> for ; Fri, 23 Mar 2007 12:42:00 -0400 Original-Received: by pastel.home (Postfix, from userid 20848) id 465497F48; Fri, 23 Mar 2007 12:42:00 -0400 (EDT) In-Reply-To: (Kim F. Storm's message of "Fri\, 23 Mar 2007 16\:36\:00 +0100") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.95 (gnu/linux) X-detected-kernel: Solaris 8 (1) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:68412 Archived-At: >> I'm running on GNU/Linux with the latest CVS. > Which uses conservative stack marking too. > So it's definitely not "just" a missing GC pro somewhere. I think I see the problem: intervals are not Lisp objects and thus they are not detected by the conservative stack scanning (and they can't be GCPRO'd either). I.e. make_interval does: ... newi = (struct interval_block *) lisp_malloc (sizeof *newi, MEM_TYPE_NON_LISP); ... while mark_maybe_pointer does: ... switch (m->type) { case MEM_TYPE_NON_LISP: /* Nothing to do; not a pointer to Lisp memory. */ break; ... and m->type can probably never be MEM_TYPE_NON_LISP anyway, because lisp_malloc does: ... if (val && type != MEM_TYPE_NON_LISP) mem_insert (val, (char *) val + nbytes, type); ... so after the copy_intervals, if Fset_text_properties ends up calling the garbage collector (probably via some after-change-function) you're hosed. Personally, I think the best solution is to rewrite transpose-regions in Lisp. After all, it's only called from gnus/deuglify.el and from games/hanoi.el (and interactively as well, of course). Stefan