Re: Constant Use of 100% CPU

Sebastian Miele <[email protected]>
Newsgroups gmane.editors.texmacs.devel
Message-ID <[email protected]>
Applying

  diff --git a/src/Plugins/Qt/qt_gui.cpp b/src/Plugins/Qt/qt_gui.cpp
  index 22b21d2cd..5fcb0fb26 100644
  --- a/src/Plugins/Qt/qt_gui.cpp
  +++ b/src/Plugins/Qt/qt_gui.cpp
  @@ -836,7 +836,10 @@ qt_gui_rep::update () {
     if (interrupted)               needing_update = true;
     if (nr_windows == 0)           qApp->quit();

  -  time_t delay = delayed_commands.lapse - texmacs_time();
  +  time_t delay = (0 < N(delayed_commands.q))
  +               ? (delayed_commands.lapse - texmacs_time())
  +               : std_delay;
  +
     if (needing_update) delay = 0;
     else                delay = max (0, min (std_delay, delay));
     if (postpone_treatment) delay= 100; // NOTE: force occasional display

seems to produce no problems and solves the bug. (At least the bug that
I experienced and debugged. I do not know whether there are more 100%
CPU bugs.) I found it with:

  diff --git a/src/Plugins/Qt/qt_gui.cpp b/src/Plugins/Qt/qt_gui.cpp
  index 22b21d2cd..b3a0d9102 100644
  --- a/src/Plugins/Qt/qt_gui.cpp
  +++ b/src/Plugins/Qt/qt_gui.cpp
  @@ -836,10 +836,26 @@ qt_gui_rep::update () {
     if (interrupted)               needing_update = true;
     if (nr_windows == 0)           qApp->quit();

  -  time_t delay = delayed_commands.lapse - texmacs_time();
  +  time_t now_1 = texmacs_time();
  +  time_t lapse = delayed_commands.lapse;
  +  time_t delay = lapse - now_1;
  +
     if (needing_update) delay = 0;
     else                delay = max (0, min (std_delay, delay));
     if (postpone_treatment) delay= 100; // NOTE: force occasional display
  +
  +  if( delay <= 0 )
  +    {
  +      const command_queue& q = delayed_commands;
  +      cout << '\n'
  +           << "         now_1: " << now_1          << '\n'
  +           << " lapse - now_1: " << lapse - now_1  << '\n'
  +           << "needing_update: " << needing_update << '\n'
  +           << "         delay: " << delay          << '\n'
  +           << "        q.wait: " << q.wait         << '\n'
  +           << "       q.lapse: " << q.lapse        << '\n'
  +           << " q.start_times: " << q.start_times  << LF;
  +    }

     updatetimer->start (delay);
     updating = false;

When the bug appears, that procudes a lot of

           now_1: 46233
   lapse - now_1: -41
  needing_update: false
           delay: 0
          q.wait: false
         q.lapse: 46192
   q.start_times: [ ]

where q.lapse and q.start_times stay constant, now_1 increases, and
lapse - now_1 decreases. The lapse is used without checking whether the
queue is empty. I do not understand command_queue. But if the queue is
empty, a lapse (other than +inf) probably does not make sense.

_______________________________________________
Texmacs-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/texmacs-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.