/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-monitor

  • Committer: Teddy Hogeborn
  • Date: 2019-07-30 17:03:57 UTC
  • Revision ID: teddy@recompile.se-20190730170357-jte0piul5mq7j5pr
Server: Reap zombies created by multiprocessing.Process()

When creating checkers as multiprocessing.Process() objects, the
multiprocessing module also creates a parent process (for the
call_pipe() function) to call the actual checker process, but this
parent process is not reaped.  This is not a huge problem, since the
zombie is always reaped automatically the next time the multiprocess
starts a new process, but the zombies can be up to as many as there
have ever been simultaneous checker processes.  To fix this, the
process object must be join():ed when they report completion of the
child checker process.

* mandos (Client): Fix doc string to correctly state that
                   Client.checker is a multiprocess.Process() and not
                   a subprocess.Popen() object.
  (Client.checker_callback): After the returncode of the checker
                             process has been read, wait for the
                             self.checker Process object to finish by
                             calling join() on it.

Reported-by: Peter Palfrader <weasel@debian.org>

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
#
4
4
# Mandos Monitor - Control and monitor the Mandos server
5
5
#
6
 
# Copyright © 2009-2018 Teddy Hogeborn
7
 
# Copyright © 2009-2018 Björn Påhlsson
 
6
# Copyright © 2009-2019 Teddy Hogeborn
 
7
# Copyright © 2009-2019 Björn Påhlsson
8
8
#
9
9
# This file is part of Mandos.
10
10
#
59
59
domain = 'se.recompile'
60
60
server_interface = domain + '.Mandos'
61
61
client_interface = domain + '.Mandos.Client'
62
 
version = "1.7.20"
 
62
version = "1.8.4"
63
63
 
64
64
try:
65
65
    dbus.OBJECT_MANAGER_IFACE
444
444
        self.clients_dict = {}
445
445
 
446
446
        # We will add Text widgets to this list
447
 
        self.log = []
 
447
        self.log = urwid.SimpleListWalker([])
448
448
        self.max_log_length = max_log_length
449
449
 
450
450
        self.log_level = log_level
503
503
        if self.max_log_length:
504
504
            if len(self.log) > self.max_log_length:
505
505
                del self.log[0:len(self.log)-self.max_log_length-1]
506
 
        self.logbox.set_focus(len(self.logbox.body.contents),
 
506
        self.logbox.set_focus(len(self.logbox.body.contents)-1,
507
507
                              coming_from="above")
508
508
        self.refresh()
509
509