bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12447: 24.1.50; Stuck in garbage collection on OS X


From: Dmitry Gutov
Subject: bug#12447: 24.1.50; Stuck in garbage collection on OS X
Date: Sun, 16 Sep 2012 19:56:11 +0400
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1

On 16.09.2012 18:54, Eli Zaretskii wrote:
Date: Sun, 16 Sep 2012 18:25:50 +0400
From: Dmitry Gutov <dgutov@yandex.ru>
CC: hanche@math.ntnu.no, 12447@debbugs.gnu.org

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.

What if all of them are ripe?

I don't see the problem. The first timer is ripe? Fire it and return 'nexttime'. Otherwise, return 'difference', which now has been assigned a value. If we've reached the end of the list, again return 'nexttime', which is initialized with invalid_emacs_time () at the beginning of timer_check_2.

Anyway, I think the immediate problem is that the newly created timer can be considered ripe.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]