Shell exit from viewer and editor fixed


The bug with MC hanging with 100% CPU utilization on exit from shell while
in internal editor of viewer has been fixed.

The fix is two-fold.

view_other_cmd() shuts down all extra channels for select() in
get_event(), just like edition_pre_exec().  view_other_cmd() and
edition_{pre,post}_exec() should be more similar now, which will enable
some code sharing between them.  When the shell exists, the channels are
not restored.  This prevents get_event() from waiting on closed channels.

quit_cmd_internal() now stops not only the top-level dialog, but also the
current dialog if it exists.  This causes a fast exit from both dialogs
without waiting for any more events.

The bug with 100% CPU utilization on "TMOUT=1 mc" is not fixed yet.
The real fix probably belongs to get_event(), which should check error 
conditions and maybe respect the "quit" variable.  Alternatively, the 
SIGCHLD handler for subshell should unregister the select() channel for 
the subshell.

Pavel Roskin

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