[PATCH] Fix WAIT_FOR_DEBUGGER for container tests.

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Tue Oct 3 18:12:10 GMT 2023



On 28/09/23 07:50, Stefan Liebler wrote:
> For container tests, gdb needs to set the sysroot to the corresponding
> testroot.root directory.  The assumption was that PIDs < 3 means that
> we are running within a container.
> 
> Starting with commit 2fe64148a81f0d78050c302f34a6853d21f7cae4
> "Allow for unpriviledged nested containers", the default is to use
> the PID namespace of the parent.  Thus support_test_main.c does not
> recognize our container anymore.
> 
> This patch now assumes that we are running inside a container if
> test-container.c has set PID_OUTSIDE_CONTAINER and always uses this
> PID independent of having a new PID namespace or not.

Do you have a scenario where debugglibc is failing to attach to a container
test? I am trying to see if something it broken, but it does seems to be
working.

> ---
>  support/support_test_main.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/support/support_test_main.c b/support/support_test_main.c
> index c20c19e774..f19fce5644 100644
> --- a/support/support_test_main.c
> +++ b/support/support_test_main.c
> @@ -195,16 +195,14 @@ run_test_function (int argc, char **argv, const struct test_config *config)
>        char *gdb_script_name;
>        int inside_container = 0;
>  
> -      mypid = getpid();
> -      if (mypid < 3)
> +      const char *outside_pid = getenv("PID_OUTSIDE_CONTAINER");
> +      if (outside_pid)
>  	{
> -	  const char *outside_pid = getenv("PID_OUTSIDE_CONTAINER");
> -	  if (outside_pid)
> -	    {
> -	      mypid = atoi (outside_pid);
> -	      inside_container = 1;
> -	    }
> +	  mypid = atoi (outside_pid);
> +	  inside_container = 1;
>  	}
> +      else
> +	mypid = getpid();
>  
>        gdb_script_name = (char *) xmalloc (strlen (argv[0]) + strlen (".gdb") + 1);
>        sprintf (gdb_script_name, "%s.gdb", argv[0]);


More information about the Libc-alpha mailing list