Hi,

On Mon, Jan 30, 2023 at 11:11:25PM +0100, Alexander Kanavin wrote:
> This does not actually guarantee that the child runqemu process has 
> completely exited:
> poll() may return prematurely while the SIGTERM handler in runqemu is still 
> running.
> This thwarts the rest of the processing, and may terminate the handler before
> it completes.
> 
> Use Popen.communicate() instead: this is what python documentation recommends 
> as well:
> https://docs.python.org/3/library/subprocess.html#subprocess.Popen.communicate

Was I trying to solve the same problem in
https://lists.openembedded.org/g/openembedded-core/message/176203 ?

I think so.

Cheers,

-Mikko

> Signed-off-by: Alexander Kanavin <[email protected]>
> ---
>  meta/lib/oeqa/utils/qemurunner.py | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/lib/oeqa/utils/qemurunner.py 
> b/meta/lib/oeqa/utils/qemurunner.py
> index b5fed6c9fe..8b893601d4 100644
> --- a/meta/lib/oeqa/utils/qemurunner.py
> +++ b/meta/lib/oeqa/utils/qemurunner.py
> @@ -543,10 +543,13 @@ class QemuRunner:
>                  except OSError as e:
>                      if e.errno != errno.ESRCH:
>                          raise
> -            endtime = time.time() + self.runqemutime
> -            while self.runqemu.poll() is None and time.time() < endtime:
> -                time.sleep(1)
> -            if self.runqemu.poll() is None:
> +            try:
> +                outs, errs = self.runqemu.communicate(timeout = 
> self.runqemutime)
> +                if outs:
> +                    self.logger.info("Output from runqemu:\n%s", 
> outs.decode("utf-8"))
> +                if errs:
> +                    self.logger.info("Stderr from runqemu:\n%s", 
> errs.decode("utf-8"))
> +            except TimeoutExpired:
>                  self.logger.debug("Sending SIGKILL to runqemu")
>                  os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
>              if not self.runqemu.stdout.closed:
> -- 
> 2.30.2
> 

> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#176507): 
https://lists.openembedded.org/g/openembedded-core/message/176507
Mute This Topic: https://lists.openembedded.org/mt/96639889/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to