diff mbox series

[3/3] testimage.bbclass: capture RuntimeError too

Message ID 20241111131604.364308-3-mikko.rapeli@linaro.org
State New
Headers show
Series [1/3] uki.bbclass: fix debug print logging level | expand

Commit Message

Mikko Rapeli Nov. 11, 2024, 1:16 p.m. UTC
runqemu can fail with RuntimeError exception. Non-cought exception
causes cooker process leaks which bind to successive bitbake command
line calls and that can cause really odd errors to users, e.g. when
build/tmp is wiped and cooker processes expect files to be there.

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
 meta/classes-recipe/testimage.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Purdie Nov. 12, 2024, 11:25 a.m. UTC | #1
On Mon, 2024-11-11 at 13:16 +0000, Mikko Rapeli via lists.openembedded.org wrote:
> runqemu can fail with RuntimeError exception. Non-cought exception
> causes cooker process leaks which bind to successive bitbake command
> line calls and that can cause really odd errors to users, e.g. when
> build/tmp is wiped and cooker processes expect files to be there.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> ---
>  meta/classes-recipe/testimage.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
> index 19075ce1f3..a9b031093a 100644
> --- a/meta/classes-recipe/testimage.bbclass
> +++ b/meta/classes-recipe/testimage.bbclass
> @@ -371,7 +371,7 @@ def testimage_main(d):
>          complete = True
>          if results.hasAnyFailingTest():
>              run_failed_tests_post_actions(d, tc)
> -    except (KeyboardInterrupt, BlockingIOError) as err:
> +    except (KeyboardInterrupt, BlockingIOError, RuntimeError) as err:
>          if isinstance(err, KeyboardInterrupt):
>              bb.error('testimage interrupted, shutting down...')
>          else:
> 

During review it is hard to understand what the real issue is from this
description. I don't like the sound of processes leaking and if that is
happening, adding another exception to this list doesn't feel correct.
I was going to ask for a better explanation but looking at the code,
perhaps this error handling path just needs rewriting/improving with
more of the code in the finally, conditionally?

I just want to make sure we fix the real bug here.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index 19075ce1f3..a9b031093a 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -371,7 +371,7 @@  def testimage_main(d):
         complete = True
         if results.hasAnyFailingTest():
             run_failed_tests_post_actions(d, tc)
-    except (KeyboardInterrupt, BlockingIOError) as err:
+    except (KeyboardInterrupt, BlockingIOError, RuntimeError) as err:
         if isinstance(err, KeyboardInterrupt):
             bb.error('testimage interrupted, shutting down...')
         else: