From 069a1e5ece0ee1e13606a6fda8e8ad4331803b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 9 Aug 2023 16:07:47 +0200 Subject: [PATCH] runners: Write some debug timing information to stderr after forking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To aid in debugging weird timing issues after forking off a runner process, write a couple of debug lines to stderr after forking, but before exec'ing, so they will appear in the debug log files. This should otherwise be harmless as all of the parsers either ignore the error output completely, or filter out the lines they are interested in using regexes or prefix matching, and so will just skip over these debug lines. Signed-off-by: Toke Høiland-Jørgensen --- flent/runners.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flent/runners.py b/flent/runners.py index 94beb62e..c56e54aa 100644 --- a/flent/runners.py +++ b/flent/runners.py @@ -473,13 +473,16 @@ def fork(self): self.stdout.close() self.stderr.close() os.closerange(3, 65535) + pid = os.getpid() try: if self.start_event is not None: + os.write(2, f"{time.time()}: PID {pid} waiting for SIGUSR2\n".encode("utf-8")) signal.signal(signal.SIGUSR2, self.handle_usr2) self.start_event.wait() signal.signal(signal.SIGUSR2, signal.SIG_DFL) + os.write(2, f"{time.time()}: PID {pid} sleeping for {self.delay} seconds\n".encode("utf-8")) time.sleep(self.delay) except: os._exit(0) @@ -487,6 +490,7 @@ def fork(self): env = dict(os.environ) env.update(self._env) prog = self.args[0] + os.write(2, f"{time.time()}: PID {pid} running execvpe({' '.join(self.args)})\n".encode("utf-8")) os.execvpe(prog, self.args, env) else: self.debug("Forked %s as pid %d", self.args[0], pid)