public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb/gdb-7.11-branch] Fix PR gdb/19828: gdb -p <process from a container>: internal error
@ 2016-05-25 18:48 sergiodj+buildbot
  2016-05-25 18:50 ` Failures on AIX-POWER7-plain, branch gdb-7.11-branch sergiodj+buildbot
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: sergiodj+buildbot @ 2016-05-25 18:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 136613ef0c6850427317e57be1b644080ff6decb ***

Author: Pedro Alves <palves@redhat.com>
Branch: gdb-7.11-branch
Commit: 136613ef0c6850427317e57be1b644080ff6decb

Fix PR gdb/19828: gdb -p <process from a container>: internal error

When GDB attaches to a process, it looks at the /proc/PID/task/ dir
for all clone threads of that process, and attaches to each of them.

Usually, if there is more than one clone thread, it means the program
is multi threaded and linked with pthreads.  Thus when GDB soon after
attaching finds and loads a libthread_db matching the process, it'll
add a thread to the thread list for each of the initially found
lower-level LWPs.

If, however, GDB fails to find/load a matching libthread_db, nothing
is adding the LWPs to the thread list.  And because of that, "detach"
hits an internal error:

  (gdb) PASS: gdb.threads/clone-attach-detach.exp: fg attach 1: attach
  info threads
    Id   Target Id         Frame
  * 1    LWP 6891 "clone-attach-de" 0x00007f87e5fd0790 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:84
  (gdb) FAIL: gdb.threads/clone-attach-detach.exp: fg attach 1: info threads shows two LWPs
  detach
  .../src/gdb/thread.c:1010: internal-error: is_executing: Assertion `tp' failed.
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n)
  FAIL: gdb.threads/clone-attach-detach.exp: fg attach 1: detach (GDB internal error)

>From here:

  ...
  #8  0x00000000007ba7cc in internal_error (file=0x98ea68 ".../src/gdb/thread.c", line=1010, fmt=0x98ea30 "%s: Assertion `%s' failed.")
      at .../src/gdb/common/errors.c:55
  #9  0x000000000064bb83 in is_executing (ptid=...) at .../src/gdb/thread.c:1010
  #10 0x00000000004c23bb in get_pending_status (lp=0x12c5cc0, status=0x7fffffffdc0c) at .../src/gdb/linux-nat.c:1235
  #11 0x00000000004c2738 in detach_callback (lp=0x12c5cc0, data=0x0) at .../src/gdb/linux-nat.c:1317
  #12 0x00000000004c1a2a in iterate_over_lwps (filter=..., callback=0x4c2599 <detach_callback>, data=0x0) at .../src/gdb/linux-nat.c:899
  #13 0x00000000004c295c in linux_nat_detach (ops=0xe7bd30, args=0x0, from_tty=1) at .../src/gdb/linux-nat.c:1358
  #14 0x000000000068284d in delegate_detach (self=0xe7bd30, arg1=0x0, arg2=1) at .../src/gdb/target-delegates.c:34
  #15 0x0000000000694141 in target_detach (args=0x0, from_tty=1) at .../src/gdb/target.c:2241
  #16 0x0000000000630582 in detach_command (args=0x0, from_tty=1) at .../src/gdb/infcmd.c:2975
  ...

Tested on x86-64 Fedora 23.  Also confirmed the test passes against
gdbserver with "maint set target-non-stop".

Unfortunately, making GDB add LWPs to the thread list sooner exposes
inefficiencies that in turn result in
gdb.threads/attach-many-short-lived-threads.exp timing out frequently.
Since that testcase is really a contrived use case designed to stress
some aspects of attach/detach and thread listing, not really
representative of real programs, this commit disables the test.

gdb/ChangeLog:
2016-05-25  Pedro Alves  <palves@redhat.com>

	PR gdb/19828
	* linux-nat.c (attach_proc_task_lwp_callback): Mark the lwp
	resumed, and add the thread to GDB's thread list.

testsuite/ChangeLog:
2016-05-25  Pedro Alves  <palves@redhat.com>

	PR gdb/19828
	* gdb.threads/clone-attach-detach.c: New file.
	* gdb.threads/clone-attach-detach.exp: New file.
	* gdb.threads/attach-many-short-lived-threads.exp: Skip.


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-05-26 23:45 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-25 18:48 [binutils-gdb/gdb-7.11-branch] Fix PR gdb/19828: gdb -p <process from a container>: internal error sergiodj+buildbot
2016-05-25 18:50 ` Failures on AIX-POWER7-plain, branch gdb-7.11-branch sergiodj+buildbot
2016-05-25 19:10 ` Failures on Fedora-x86_64-native-gdbserver-m64, " sergiodj+buildbot
2016-05-25 19:11 ` Failures on Fedora-x86_64-native-gdbserver-m32, " sergiodj+buildbot
2016-05-25 19:18 ` Failures on Fedora-i686, " sergiodj+buildbot
2016-05-25 19:23 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " sergiodj+buildbot
2016-05-25 19:23 ` Failures on Fedora-x86_64-m32, " sergiodj+buildbot
2016-05-25 20:44 ` Failures on Debian-i686-native-extended-gdbserver, " sergiodj+buildbot
2016-05-25 20:54 ` Failures on Fedora-s390x-m64, " sergiodj+buildbot
2016-05-25 21:01 ` Failures on Debian-i686, " sergiodj+buildbot
2016-05-26  0:18 ` Failures on Debian-s390x-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-05-26 17:08 ` Failures on Fedora-ppc64be-cc-with-index, " sergiodj+buildbot
2016-05-26 17:12 ` Failures on Fedora-ppc64be-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-05-26 23:32 ` Failures on Fedora-ppc64le-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-05-27  0:21 ` Failures on Fedora-ppc64le-native-gdbserver-m64, " sergiodj+buildbot

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).