Hi, we are confronted to a deadlock situation when doing native validation on armv8l target.
When gcc/testsuite/gcc.dg/guality/example.c is executed it spawns gdb, and makes it attach to his parent, but during the test execution, gdb receives a SIGSEGV, which is handled as a stop signal. Then the test timeouts and dejagnu tries to terminate it, but doesn't manage to do it, this was raised and discussed on dejagnu list. https://lists.gnu.org/archive/html/dejagnu/2016-03/msg00048.html Dejagnu cleanup mechanism needs to be enhanced, but I think that it would also be better if guality tests don't get stuck and/or can be killed easily. This patch changes GDB signals handling to nostop for SIGSEGV, SIGINT, SIGTERM and SIGBUS. I am not sure if we need to increase the list of signals to all the stop ones (which are not used by GDB) or to restrict it just to SIGSEGV. Tested without regression on native x86_64, i386, aarch64 targets and unleash native armv8l one. Is it OK for trunk ? (I don't know the rules for that kind of testsuite fix during stage 4). Cheers, Yvan 2016-04-06 Yvan Roux <yvan.r...@linaro.org> Pedro Alves <pal...@redhat.com> * gcc.dg/guality/guality.h (main): Avoid GDB being blocked on signals.
diff --git a/gcc/testsuite/gcc.dg/guality/guality.h b/gcc/testsuite/gcc.dg/guality/guality.h index 52fa706..d5867d8 100644 --- a/gcc/testsuite/gcc.dg/guality/guality.h +++ b/gcc/testsuite/gcc.dg/guality/guality.h @@ -252,6 +252,10 @@ main (int argc, char *argv[]) if (!guality_gdb_input || fprintf (guality_gdb_input, "\ set height 0\n\ +handle SIGINT pass nostop\n\ +handle SIGTERM pass nostop\n\ +handle SIGSEGV pass nostop\n\ +handle SIGBUS pass nostop\n\ attach %i\n\ set guality_attached = 1\n\ b %i\n\