Go to file
Aditya Vidyadhar Kamath 414aa6987f Fix Segmentation Fault in AIX during multi process debugging.
Due to the recent commit in aix-thread.c, we see a segmentation fault
in AIX while debugging multiple process involving multiple threads.

One example is a thread that can fork. The GDB output in AIX for the same is

Reading symbols from //gdb_tests/multi-thread-fork...
(gdb) set detach-on-fork off
(gdb) r
Starting program: /gdb_tests/multi-thread-fork
[New Thread 258 (tid 67110997)]
[New Thread 515 (tid 127404289)]
[New inferior 2 (process 16580940)]
Hello from Parent!
[process 16580940 exited]
[New inferior 3 (process 14549318)]
Hello from Parent!
[process 14549318 exited]
Fatal signal: Segmentation fault
----- Backtrace -----

This is because in sync_threadlists () in aix-thread.c there when we
delete threads in unknown state we iterate through all the threads.

When we have one or more threads with the same user thread ID but of different
process then we delete a wrong thread. Since we just check only the pdtid
in in_queue_threads.count (priv->pdtid) == 0 this happened.

This patch is a fix for the same.

The output after we apply this patch is:
Reading symbols from //gdb_tests/multi-thread-fork...
(gdb) set detach-on-fork off
(gdb) r
Starting program: /gdb_tests/multi-thread-fork
[New Thread 258 (tid 75565441)]
[New Thread 515 (tid 63244397)]
[New inferior 2 (process 10813892)]
Hello from Parent!
[New inferior 3 (process 19005888)]
Hello from Parent!

Thread 1.1 received signal SIGINT, Interrupt.
0xd0611d70 in _p_nsleep () from /usr/lib/libpthread.a(_shr_xpg5.o)
(gdb) info threads
  Id   Target Id                             Frame
* 1.1  Thread 1 (tid 66062355) ([running])   0xd0611d70 in _p_nsleep () from /usr/lib/libpthread.a(_shr_xpg5.o)
  1.2  Thread 258 (tid 75565441) ([running]) thread_function (arg=0x0) at //gdb_tests/multi-thread-fork.c:50
  1.3  Thread 515 (tid 63244397) ([running]) thread_function (arg=0x0) at //gdb_tests/multi-thread-fork.c:50
2.1  Thread 515 (tid 32113089) ([running]) 0xd0610df0 in _sigsetmask () from /usr/lib/libpthread.a(_shr_xpg5.o)
  3.1  Thread 258 (tid 64489699) ([running]) 0xd0610df0 in _sigsetmask () from /usr/lib/libpthread.a(_shr_xpg5.o)
(gdb) q
A debugging session is active.
2024-05-14 12:02:31 +02:00
bfd arm: remove Maverick support from BFD. 2024-05-14 10:56:58 +01:00
binutils arm: update documentation for removal of the Maverick extension 2024-05-14 10:56:58 +01:00
config mmap: Avoid the sanitizer configure check failure 2024-04-10 03:57:02 -07:00
contrib contrib: sync dg-extract-results.sh with GCC 2024-03-12 15:49:25 +00:00
cpu PR21739, Inconsistent diagnostics 2024-02-29 21:07:04 +10:30
elfcpp
etc
gas arm: update documentation for removal of the Maverick extension 2024-05-14 10:56:58 +01:00
gdb Fix Segmentation Fault in AIX during multi process debugging. 2024-05-14 12:02:31 +02:00
gdbserver gdbserver: convert have_ptrace_getregset to a tribool 2024-05-07 16:26:43 +01:00
gdbsupport Fix build issues with mingw toolchain 2024-05-06 18:44:54 +02:00
gnulib gnulib: re-generate build files 2024-03-11 22:42:56 -04:00
gold Add missing install-dvi and install-ps Makefie targets. 2024-04-05 07:02:56 +00:00
gprof Add missing install-dvi and install-ps Makefie targets. 2024-04-05 07:02:56 +00:00
gprofng Fix hard-coded bash path in gprofng 2024-05-08 22:18:24 -07:00
include arm: remove Maverick support from BFD. 2024-05-14 10:56:58 +01:00
ld Add --section-ordering command line option to the bfd linker. 2024-05-10 16:59:05 +01:00
libbacktrace Sync libbacktrace from gcc [PR31327] 2024-03-11 23:10:33 +00:00
libctf buffer overflow in libctf tests 2024-04-24 09:33:03 +09:30
libdecnumber
libiberty mmap: Avoid the sanitizer configure check failure 2024-04-10 03:57:02 -07:00
libsframe mmap: Avoid the sanitizer configure check failure 2024-04-10 03:57:46 -07:00
opcodes arm: opcodes: remove Maverick disassembly. 2024-05-14 10:56:58 +01:00
readline
sim sim: riscv: Fix build issue due to recent binutils commit 2024-05-09 17:04:14 +02:00
texinfo
zlib mmap: Avoid the sanitizer configure check failure 2024-04-10 03:57:02 -07:00
.cvsignore
.editorconfig
.gitattributes
.gitignore
.pre-commit-config.yaml gdb: bump black version to 24.4.0 2024-04-23 09:20:42 -04:00
ar-lib
ChangeLog .pre-commit-config.yaml: bump black hook to 24.3.0 2024-03-20 14:44:16 -04:00
compile
config-ml.in
config.guess
config.rpath
config.sub
configure
configure.ac
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Fix compiling bfd/vms-lib.c for a 32-bit host. 2024-03-18 10:26:16 +00:00
Makefile.def Revert "Pass GUILE down to subdirectories" 2024-03-22 11:07:28 -06:00
Makefile.in Revert "Pass GUILE down to subdirectories" 2024-03-22 11:07:28 -06:00
Makefile.tpl Revert "Pass GUILE down to subdirectories" 2024-03-22 11:07:28 -06:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
SECURITY.txt
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.