[PING] [PATCH] Handle glibc's thread cancellation signal (SIG32) in gdb.threads/create-fail.exp
Luis Machado
luis.machado@linaro.org
Mon Feb 1 19:15:58 GMT 2021
On 1/22/21 11:00 AM, Luis Machado wrote:
> When I switched to Ubuntu 20.04, I noticed gdb.threads/create-fail.exp started
> failing. Instead of running to completion, it always ran into a SIG32 during
> the final pthread_create call.
>
> Reading about this a little, it seems SIG32 is used by glibc for thread
> cancellation purposes. I'm not sure why this didn't show up in Ubuntu 18.04.
> It may be related to the glibc version.
>
> In any case, handle this by making GDB ignore SIG32, but still pass the signal
> to the inferior.
>
> With this change, I get full passes for this testcase on aarch64-linux
> Ubuntu 20.04 and Ubuntu 18.04.
>
> gdb/testsuite/ChangeLog:
>
> YYYY-MM-DD Luis Machado <luis.machado@linaro.org>
>
> * gdb.threads/create-fail.exp: Handle SIG32.
> ---
> gdb/testsuite/gdb.threads/create-fail.exp | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/gdb/testsuite/gdb.threads/create-fail.exp b/gdb/testsuite/gdb.threads/create-fail.exp
> index 51f3ab0feb4..d5986578fd5 100644
> --- a/gdb/testsuite/gdb.threads/create-fail.exp
> +++ b/gdb/testsuite/gdb.threads/create-fail.exp
> @@ -37,6 +37,14 @@ for {set i 1} {$i <= $iterations} {incr i} {
> return -1
> }
>
> + # glibc uses SIG32 for thread cancellation. Make sure GDB does not
> + # try to handle it and that it gets passed to the inferior.
> + gdb_test "handle SIG32 nostop noprint pass" \
> + [multi_line \
> + "Signal Stop\tPrint\tPass to program\tDescription" \
> + "SIG32 No\tNo\tYes\t\tReal-time event 32" ] \
> + "ignore thread cancellation signal"
> +
> set test "run till end"
> gdb_test_multiple "continue" "$test" {
> -re "exited with code 01.*$gdb_prompt $" {
>
More information about the Gdb-patches
mailing list