On Fri, 2023-07-28 at 08:02 -0600, Joshua Watt wrote: > On Fri, Jul 28, 2023 at 8:01 AM Joshua Watt <jpewhac...@gmail.com> wrote: > > > > On Fri, Jul 28, 2023 at 5:13 AM Richard Purdie > > <richard.pur...@linuxfoundation.org> wrote: > > > > > > As spotted by Joshua Watt, the returncode isn't set until .poll() or > > > .wait() > > > is called so we need to call this after the .kill() call. > > > > > > This fixes return code reporting so that timeouts for example now return > > > an > > > exit code when they didn't before. > > > > > > Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> > > > --- > > > meta/lib/oeqa/core/target/ssh.py | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/meta/lib/oeqa/core/target/ssh.py > > > b/meta/lib/oeqa/core/target/ssh.py > > > index 243e45dd99e..72ed1adbf89 100644 > > > --- a/meta/lib/oeqa/core/target/ssh.py > > > +++ b/meta/lib/oeqa/core/target/ssh.py > > > @@ -265,6 +265,7 @@ def SSHCall(command, logger, timeout=None, **opts): > > > time.sleep(5) > > > try: > > > process.kill() > > > + process.wait() > > > > I think this can still result in a orphaned process; if the > > process.terminate() on the line above is successful, the process will > > exit and then process.kill() here will raise an exception and will > > call wait. This is true generally everywhere; wait() must be called > > "will _not_ call wait" - Need to proofread better > > > regardless of if kill() successed, because kill() will fail if the > > process is already dead. It's a little tricky because > > process.commuinicate() calls wait(), so you can't unconditionally call > > wait(), but my solution was to remove all the kill() and wait() calls > > that already exist and add: > > > > try: > > run() > > except: > > logger.debug(....) > > raise > > finally: > > if process.returncode is None: > > try: > > process.wait(timeout=5) > > except TimeoutExpired: > > try: > > process.kill() > > except OSError: > > pass > > process.wait() > > > >
I think I'll probably merge this as it does work better than the existing code and lets me clean up the ltp test results but I'd take a further patch... Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#185049): https://lists.openembedded.org/g/openembedded-core/message/185049 Mute This Topic: https://lists.openembedded.org/mt/100408183/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-