def child_check_restart(self, sig=None, frm=None):
		if self._child_check: return # likely due to SIGCHLD from Popen
		self._child_check = True
		try:
			if self._child_gc: # these are cleaned-up just to avoid keeping zombies around
				for pid in list(self._child_gc):
					try: res = os.waitpid(pid, os.WNOHANG)
					except __HOLE__: res = pid, None
					if res and res[0]: self._child_gc.remove(pid)
			self.child_start()
			if not self._child: return # can't be started
			if self._child.poll() is not None:
				log.debug('glib/dbus child pid (%s) died. restarting it', self._child.pid)
				self.child_start(gc_old_one=True)
		finally: self._child_check = False
dataset/ETHPy150Open mk-fg/pulseaudio-mixer-cli/pa-mixer-mk2.py/PAMixerDBusBridge.child_check_restart