From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#12447: 24.1.50; Stuck in garbage collection on OS X Date: Sun, 16 Sep 2012 18:25:50 +0400 Message-ID: <5055E16E.1070604@yandex.ru> References: <505598C8.8070904@yandex.ru> <834nmys1ht.fsf@gnu.org> <5055AD8E.5020309@yandex.ru> <83zk4qqj4d.fsf@gnu.org> <5055C0EB.3040908@yandex.ru> <83wqzuqgzr.fsf@gnu.org> <5055D34F.1040800@yandex.ru> <83txuyqdtv.fsf@gnu.org> NNTP-Posting-Host: plane.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 1347805621 1223 80.91.229.3 (16 Sep 2012 14:27:01 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 16 Sep 2012 14:27:01 +0000 (UTC) Cc: 12447@debbugs.gnu.org, hanche@math.ntnu.no To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Sep 16 16:27:03 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TDFoL-0003b4-8c for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 16:27:01 +0200 Original-Received: from localhost ([::1]:36137 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDFoH-0005hp-6l for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 10:26:57 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47943) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDFoE-0005hk-EG for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 10:26:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TDFoD-0001dY-9a for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 10:26:54 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:55968) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDFoD-0001dU-5w for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 10:26:53 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TDFpJ-0006X5-Qn for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 10:28:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 16 Sep 2012 14:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12447 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12447-submit@debbugs.gnu.org id=B12447.134780562425042 (code B ref 12447); Sun, 16 Sep 2012 14:28:01 +0000 Original-Received: (at 12447) by debbugs.gnu.org; 16 Sep 2012 14:27:04 +0000 Original-Received: from localhost ([127.0.0.1]:37281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDFoO-0006Vr-5H for submit@debbugs.gnu.org; Sun, 16 Sep 2012 10:27:04 -0400 Original-Received: from forward5.mail.yandex.net ([77.88.46.21]:45580) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDFoK-0006VN-8X for 12447@debbugs.gnu.org; Sun, 16 Sep 2012 10:27:02 -0400 Original-Received: from smtp1.mail.yandex.net (smtp1.mail.yandex.net [77.88.46.101]) by forward5.mail.yandex.net (Yandex) with ESMTP id AC7981200F00; Sun, 16 Sep 2012 18:25:49 +0400 (MSK) Original-Received: from smtp1.mail.yandex.net (localhost [127.0.0.1]) by smtp1.mail.yandex.net (Yandex) with ESMTP id 7A3D7AA03BC; Sun, 16 Sep 2012 18:25:49 +0400 (MSK) Original-Received: from 5x166x246x245.dynamic.spb.ertelecom.ru (5x166x246x245.dynamic.spb.ertelecom.ru [5.166.246.245]) by smtp1.mail.yandex.net (nwsmtp/Yandex) with ESMTP id PmNKEwkZ-PmNiU1Tq; Sun, 16 Sep 2012 18:25:48 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1347805549; bh=5dzx9z8aH26mkuQdPRzU4/FX1GwyRZpDP6q361c86uk=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=FOPiLpGMMGhT490ql+oMVV2AhGWz6yPQnED3GvWmG62mAbFQ5tCD0EgnPAotgI0VL v7GJnwtrkD1rsNVm0Kc+3w7WiJKQfz0UIqtxYSlCvX0zXtHhw77ukTNJhenQBK3lSp Ml7lSCkjbfyWOfTWWX24rDIwGfov4oQ5VPCu0YnA= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 In-Reply-To: <83txuyqdtv.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:64422 Archived-At: On 16.09.2012 17:47, Eli Zaretskii wrote: >> Date: Sun, 16 Sep 2012 17:25:35 +0400 >> From: Dmitry Gutov >> CC: hanche@math.ntnu.no, 12447@debbugs.gnu.org >> >>> idle_timers = Vtimer_idle_list; >> >> Done that, recompiled, no difference in the example a sent previously. >> Exactly because, I think, of the control flow you describe below: >> >>>> But no, it probably won't: the "guilty" commit made timer_check_2 >>>> actually return 0 after a timer fires (keeping true to the comment above >>>> it), so a local copy would serve no purpose. >>> >>> timer_check_2 indeed returns, but then timer_check will call it again, >>> because it continues calling timer_check_2 in a loop, until there's no >>> ripe timer. >> >> Each time timer_check_2 is called, a new copy would be made from the >> idle timers list, so the newly created timer would be reached during the >> same call to 'timer_check'. > > But the first time timer_check_2 encounters an un-ripe timer, or gets > to the end of the list of timers, it returns a non-zero 'nexttime' > value, which should break the loop in timer_check. Why isn't this > happening? Maybe because the new timer is at the top of the list, and it's considered ripe? > Perhaps the problem is that the value of 'difference' is not > initialized: > > while (CONSP (timers) || CONSP (idle_timers)) > { > Lisp_Object timer = Qnil, idle_timer = Qnil; > EMACS_TIME timer_time, idle_timer_time; > EMACS_TIME difference; <<<<<<<<<<<<<<<<<<<<<<<<<<<< > > and then never set to any specific value, until here: > > else > /* When we encounter a timer that is still waiting, > return the amount of time to wait before it is ripe. */ > { > UNGCPRO; > return difference; > } > > which causes us return garbage, potentially zero, to timer_check. It's assigned to, though. When we encounter a timer that's not yet ripe.