public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug threads/31602] New: Sporadic test failures in gdb.threads/signal-command-handle-nopass.exp
@ 2024-04-03 19:16 bernd.edlinger at hotmail dot de
  0 siblings, 0 replies; only message in thread
From: bernd.edlinger at hotmail dot de @ 2024-04-03 19:16 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=31602

            Bug ID: 31602
           Summary: Sporadic test failures in
                    gdb.threads/signal-command-handle-nopass.exp
           Product: gdb
           Version: HEAD
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: threads
          Assignee: unassigned at sourceware dot org
          Reporter: bernd.edlinger at hotmail dot de
  Target Milestone: ---

I observe a 1 out of 10-20 test failure in
gdb.threads/signal-command-handle-nopass.exp
on host system: devuan Daedalus with
Linux version 6.1.0-18-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian
12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01)
while make check-gdb
RUNTESTFLAGS="gdb.threads/signal-command-handle-nopass.exp"; do :; done
stops always after a few repeates with a failure break in the handler as
follows:

FAIL: gdb.threads/signal-command-handle-nopass.exp: step-over yes: signal
SIGUSR1

                === gdb Summary ===

# of expected passes            16
# of unexpected failures        1
/home/ed/gnu/gdb-build-1/gdb/gdb version  15.0.50.20240401-git -nw -nx -q -iex
"set height 0" -iex "set width 0" -data-directory
/home/ed/gnu/gdb-build-1/gdb/data-directory 

                === gdb Summary ===

# of expected passes            16
# of unexpected failures        1
/home/ed/gnu/gdb-build-1/gdb/gdb version  15.0.50.20240401-git -nw -nx -q -iex
"set height 0" -iex "set width 0" -data-directory
/home/ed/gnu/gdb-build-1/gdb/data-directory 

make[3]: *** [Makefile:226: do-check-single] Error 1
make[3]: Leaving directory '/home/ed/gnu/gdb-build-1/gdb/testsuite'
make[2]: *** [Makefile:161: check] Error 2
make[2]: Leaving directory '/home/ed/gnu/gdb-build-1/gdb/testsuite'
make[1]: *** [Makefile:1969: check] Error 2
make[1]: Leaving directory '/home/ed/gnu/gdb-build-1/gdb'
make: *** [Makefile:12412: check-gdb] Error 2

Failure happens both with step over and without.

log file shows this when the failure happens:

(gdb) PASS: gdb.threads/signal-command-handle-nopass.exp: step-over yes: thread
1 selected 
signal SIGUSR1^M 
Continuing with signal SIGUSR1.^M 
^M 
Thread 1 "signal-command-" received signal SIGUSR1, User defined signal 1.^M 
0x00007ffff7e59847 in pthread_create () from /lib/x86_64-linux-gnu/libc.so.6^M 
(gdb) FAIL: gdb.threads/signal-command-handle-nopass.exp: step-over yes: signal
SIGUSR1 
info threads^M 
  Id   Target Id                                           Frame ^M 
* 1    Thread 0x7ffff7dcd740 (LWP 28333) "signal-command-" 0x00007ffff7e59847
in pthread_create () from /lib/x86_64-linux-gnu/libc.so.6^M 
  2    Thread 0x7ffff7dcc6c0 (LWP 28336) "signal-command-" thread_function
(arg=0x0) at
/home/ed/gnu/gdb-build-1/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c:34^M 
(gdb) PASS: gdb.threads/signal-command-handle-nopass.exp: step-over yes: thread
1 got the signal 

Expected behavior would be break in handler, not in pthread_create.
Even if I modify the test case to continue there and wait for the breakpoint to
be hit later, that does not happen.  It looks like the pthread_create catches
the SIGUSR1.

The problem seems to go away if I change the test to allow the pthread_create
to complete before the first breakpoint is hit as follows:

diff --git a/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c
b/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c
index 6d82bd6f256..9e065ec5303 100644
--- a/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c
+++ b/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c
@@ -35,6 +35,13 @@ thread_function (void *arg)
     usleep (1);
 }

+void *
+thread_function1 (void *arg)
+{
+  usleep (10);
+  return thread_function (arg);
+}
+
 int
 main (void)
 {
@@ -42,7 +49,7 @@ main (void)
   int i;

   signal (SIGUSR1, handler);
-  pthread_create (&child_thread, NULL, thread_function, NULL);
+  pthread_create (&child_thread, NULL, thread_function1, NULL);
   pthread_join (child_thread, NULL);

   return 0;

Well it looks a bit as if the pthread_create is broken here.
And probably a KFAIL would be more appropriate?

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-04-03 19:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-03 19:16 [Bug threads/31602] New: Sporadic test failures in gdb.threads/signal-command-handle-nopass.exp bernd.edlinger at hotmail dot de

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).