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 14:44:30 +0400 Message-ID: <5055AD8E.5020309@yandex.ru> References: <505598C8.8070904@yandex.ru> <834nmys1ht.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 1347792302 5139 80.91.229.3 (16 Sep 2012 10:45:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 16 Sep 2012 10:45:02 +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 12:45:05 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 1TDCLV-0003E7-Vb for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 12:45:02 +0200 Original-Received: from localhost ([::1]:38637 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDCLS-0007HF-2h for geb-bug-gnu-emacs@m.gmane.org; Sun, 16 Sep 2012 06:44:58 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:46372) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDCLP-0007Gr-Uw for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 06:44:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TDCLO-00011L-Ip for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 06:44:55 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:55218) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TDCLO-00011E-Ew for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 06:44:54 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TDCMU-0000YY-86 for bug-gnu-emacs@gnu.org; Sun, 16 Sep 2012 06:46:02 -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 10:46:02 +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.13477923452116 (code B ref 12447); Sun, 16 Sep 2012 10:46:02 +0000 Original-Received: (at 12447) by debbugs.gnu.org; 16 Sep 2012 10:45:45 +0000 Original-Received: from localhost ([127.0.0.1]:36531 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDCMC-0000Y5-Kj for submit@debbugs.gnu.org; Sun, 16 Sep 2012 06:45:44 -0400 Original-Received: from forward16.mail.yandex.net ([95.108.253.141]:52087) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TDCM8-0000Xu-Te for 12447@debbugs.gnu.org; Sun, 16 Sep 2012 06:45:43 -0400 Original-Received: from smtp16.mail.yandex.net (smtp16.mail.yandex.net [95.108.252.16]) by forward16.mail.yandex.net (Yandex) with ESMTP id 39E71D212E2; Sun, 16 Sep 2012 14:44:31 +0400 (MSK) Original-Received: from smtp16.mail.yandex.net (localhost [127.0.0.1]) by smtp16.mail.yandex.net (Yandex) with ESMTP id 051776A030D; Sun, 16 Sep 2012 14:44:30 +0400 (MSK) Original-Received: from 5x166x246x245.dynamic.spb.ertelecom.ru (5x166x246x245.dynamic.spb.ertelecom.ru [5.166.246.245]) by smtp16.mail.yandex.net (nwsmtp/Yandex) with ESMTP id iTb0kSE2-iUbaiAiP; Sun, 16 Sep 2012 14:44:30 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1347792270; bh=ifu8136F56J0mg7Qy0g7EFt0rLsyRrKv8cL035xXnu0=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=i+4WjRMglAfyowxM3FBGTSqSPzKlpX1ZeZlQ1uQWXow3w/4tk8a+X95i+l48bD9xQ Vsgw+r4e+LrGewyBss0n/hU71UgpPXAJsRRIdYo+YdFlgocqJyVartezRzlaArm08F VOmh+zFsnI4z6rywb9BflxfH5OEpYXddYTDpQm6Q= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 In-Reply-To: <834nmys1ht.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:64412 Archived-At: On 16.09.2012 14:31, Eli Zaretskii wrote: >> Date: Sun, 16 Sep 2012 13:15:52 +0400 >> From: Dmitry Gutov >> CC: hanche@math.ntnu.no, 12447@debbugs.gnu.org >> >> Eli Zaretskii writes: >> >> >> Date: Sat, 15 Sep 2012 16:23:53 +0200 (CEST) >> >> Cc: jan.h.d@swipnet.se, 12447@debbugs.gnu.org >> >> From: Harald Hanche-Olsen >> >> >> >> For example: Is it okay to set a timer in a timer callback? >> > >> > I don't see why not. Setting up a timer just creates a Lisp object >> > and adds it to the list of timers. The timer will be run the next >> > time the low-level mechanism, which is part of the Emacs exec loop, >> > determines that it's ripe. >> >> In js2-mode's case, the problem is that 'run-with-idle-timer' makes the >> created timer run now, not the "next time". Here's an example: >> >> (defvar counter 0) >> >> (defun foo () >> (message (format "foo %s" counter)) >> (incf counter) >> (run-with-idle-timer 1 nil #'foo)) >> >> (foo) > > The code above does not run the timer, it just schedules it to run > after at least 1 sec of idleness time. Yes. And 1 second later, Emacs effectively freezes (while still continuing to show the increasing counter in the message area). >> I'd expect that either timer would fire once every second (as long as >> I'm not touching my keyboard), or at least stop firing when I do touch >> my keyboard (seeing as otherwise Emacs is idle), but instead I just see >> the timer firing many times a second, the counter runs in the message >> area, and Emacs doesn't respond to any commands. > > Then there's a bug, because an idle timer should only fire when > there's no other input. If there's keyboard input, Emacs should > process it first. > > I don't think the bug is related to the fact that the timer handler > re-schedules itself. That is something many timers do. There's > something else at work here, and that something is most probably on > the C level. Like I wrote in 12326, AFAICT, the problem is that timer_check_2 doesn't at any point check that Emacs is still idle. When run-with-idle-timer calls (timer-activate-when-idle timer t), the new timer is added to the list, timer_check_2 reaches is and runs it immediately because 'timer_idleness_start_time' still has the same value.