From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 12447@debbugs.gnu.org, hanche@math.ntnu.no
Subject: bug#12447: 24.1.50; Stuck in garbage collection on OS X
Date: Sun, 16 Sep 2012 14:44:30 +0400 [thread overview]
Message-ID: <5055AD8E.5020309@yandex.ru> (raw)
In-Reply-To: <834nmys1ht.fsf@gnu.org>
On 16.09.2012 14:31, Eli Zaretskii wrote:
>> Date: Sun, 16 Sep 2012 13:15:52 +0400
>> From: Dmitry Gutov <dgutov@yandex.ru>
>> CC: hanche@math.ntnu.no, 12447@debbugs.gnu.org
>>
>> Eli Zaretskii <eliz@gnu.org> 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 <hanche@math.ntnu.no>
>> >>
>> >> 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.
next prev parent reply other threads:[~2012-09-16 10:44 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-14 21:08 bug#12447: 24.1.50; Stuck in garbage collection on OS X Harald Hanche-Olsen
2012-09-15 9:55 ` Jan Djärv
2012-09-15 11:07 ` Harald Hanche-Olsen
2012-09-15 12:31 ` Eli Zaretskii
2012-09-15 13:19 ` Harald Hanche-Olsen
2012-09-15 13:56 ` Eli Zaretskii
2012-09-15 14:23 ` Harald Hanche-Olsen
2012-09-15 14:37 ` Eli Zaretskii
2012-09-15 18:59 ` Jan Djärv
2012-09-16 9:15 ` Dmitry Gutov
2012-09-16 10:31 ` Eli Zaretskii
2012-09-16 10:44 ` Dmitry Gutov [this message]
2012-09-16 11:53 ` Eli Zaretskii
2012-09-16 12:07 ` Dmitry Gutov
2012-09-16 12:39 ` Eli Zaretskii
2012-09-16 13:25 ` Dmitry Gutov
2012-09-16 13:47 ` Eli Zaretskii
2012-09-16 14:25 ` Dmitry Gutov
2012-09-16 14:54 ` Eli Zaretskii
2012-09-16 15:56 ` Dmitry Gutov
2012-09-18 15:05 ` Eli Zaretskii
2012-09-18 17:29 ` Jan Djärv
2012-09-18 20:08 ` Eli Zaretskii
2012-09-19 0:27 ` Dmitry Gutov
2012-09-19 2:54 ` Eli Zaretskii
2012-09-19 7:41 ` Harald Hanche-Olsen
2012-09-19 15:21 ` Eli Zaretskii
2012-09-19 9:54 ` Dmitry Gutov
2012-09-19 15:24 ` Eli Zaretskii
2012-09-19 16:21 ` Dmitry Gutov
2012-09-19 16:38 ` Eli Zaretskii
2012-09-19 18:29 ` Dmitry Gutov
2012-09-20 4:04 ` Chong Yidong
2012-09-20 16:01 ` Eli Zaretskii
2012-09-21 3:31 ` Chong Yidong
2012-09-21 7:14 ` Eli Zaretskii
2012-09-21 9:09 ` Chong Yidong
2012-09-21 9:54 ` Eli Zaretskii
2012-09-21 14:26 ` Chong Yidong
2012-09-22 13:18 ` Eli Zaretskii
2012-09-21 10:49 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5055AD8E.5020309@yandex.ru \
--to=dgutov@yandex.ru \
--cc=12447@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=hanche@math.ntnu.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.