NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

toolchain/56155: gdb is broken for threaded application on powerpc



>Number:         56155
>Category:       toolchain
>Synopsis:       gdb is broken for threaded application on powerpc
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri May 07 13:25:00 +0000 2021
>Originator:     Rin Okuyama
>Release:        9.99.82
>Organization:
Department of Physics, Meiji University
>Environment:
NetBSD dht 9.99.82 NetBSD 9.99.82 (DHT) #205: Fri May  7 21:04:31 JST 2021  rin@latipes:/sys/arch/evbppc/compile/DHT evbppc
>Description:
usr.bin/gdb/t_regress:threads randomly fails on powerpc; It sometimes
passes, but mostly fails on all subarchs, i.e., oea, ibm4xx, and booke:

----
# cd /usr/tests/usr.bin/gdb && atf-run | atf-report
Tests root: /usr/tests/usr.bin/gdb

t_regress (1/1): 3 test cases
    pie: [29.047345s] Passed.
    threads: [ 460.0223181] sorry, pid 2008 was killed: orphaned traced process
[301.246749s] Failed: Test case timed out after 300 seconds
    xml: [2.279580s] Passed.
[332.641263s]

Failed test cases:
    t_regress:threads

Summary for 1 test programs:
    2 passed test cases.
    1 failed test cases.
    0 expected failed test cases.
    0 skipped test cases.
----

Manually running the testcase freezes gdb:

----
# gdb dig
GNU gdb (GDB) 11.0.50.20200914-git
...(snip)...
Reading symbols from dig...
Reading symbols from /usr/libdata/debug//usr/bin/dig.debug...
(gdb) run +time=1 +tries=1 @127.0.0.177
Starting program: /usr/bin/dig +time=1 +tries=1 @127.0.0.177

Program received signal SIGILL, Illegal instruction.
0xfd6aa660 in OPENSSL_altivec_probe () from /usr/lib/libcrypto.so.14
(gdb) c
Continuing.

Program received signal SIGILL, Illegal instruction.
0xfd6aa660 in OPENSSL_altivec_probe () from /usr/lib/libcrypto.so.14
(gdb) c
Continuing.

Program received signal SIGILL, Illegal instruction.
0xfd6aa6a4 in OPENSSL_madd300_probe () from /usr/lib/libcrypto.so.14
(gdb) c
Continuing.

Program received signal SIGILL, Illegal instruction.
0xfd6aa6a4 in OPENSSL_madd300_probe () from /usr/lib/libcrypto.so.14
(gdb) c
Continuing.
[New LWP 1522 of process 1982]
[New LWP 2136 of process 1982]
[New LWP 1685 of process 1982]
(freeze forever here)
----

Backtrace by another instance of gdb reads:

----
# gdb -p 2132
GNU gdb (GDB) 11.0.50.20200914-git
...(snip)...
Reading symbols from /usr/bin/gdb...
Reading symbols from /usr/libdata/debug//usr/bin/gdb.debug...
[New LWP 2132 of process 2132]
Reading symbols from /usr/lib/libterminfo.so.2...
Reading symbols from /usr/libdata/debug//usr/lib/libterminfo.so.2.0.debug...
Reading symbols from /usr/lib/libexpat.so.2...
Reading symbols from /usr/libdata/debug//usr/lib/libexpat.so.2.3.debug...
Reading symbols from /usr/lib/liblzma.so.2...
Reading symbols from /usr/libdata/debug//usr/lib/liblzma.so.2.0.debug...
Reading symbols from /usr/lib/libz.so.1...
Reading symbols from /usr/libdata/debug//usr/lib/libz.so.1.0.debug...
Reading symbols from /usr/lib/libcurses.so.9...
Reading symbols from /usr/libdata/debug//usr/lib/libcurses.so.9.0.debug...
Reading symbols from /usr/lib/libintl.so.1...
Reading symbols from /usr/libdata/debug//usr/lib/libintl.so.1.1.debug...
Reading symbols from /usr/lib/libkvm.so.6...
Reading symbols from /usr/libdata/debug//usr/lib/libkvm.so.6.0.debug...
Reading symbols from /usr/lib/libutil.so.7...
Reading symbols from /usr/libdata/debug//usr/lib/libutil.so.7.24.debug...
Reading symbols from /usr/lib/libpthread.so.1...
Reading symbols from /usr/libdata/debug//usr/lib/libpthread.so.1.4.debug...
Reading symbols from /usr/lib/libstdc++.so.9...
Reading symbols from /usr/libdata/debug//usr/lib/libstdc++.so.9.0.debug...
Reading symbols from /usr/lib/libm.so.0...
Reading symbols from /usr/libdata/debug//usr/lib/libm.so.0.12.debug...
Reading symbols from /usr/lib/libgcc_s.so.1...
Reading symbols from /usr/libdata/debug//usr/lib/libgcc_s.so.1.0.debug...
Reading symbols from /usr/lib/libc.so.12...
Reading symbols from /usr/libdata/debug//usr/lib/libc.so.12.218.debug...
Reading symbols from /usr/libexec/ld.elf_so...
Reading symbols from /usr/libdata/debug//usr/libexec/ld.elf_so.debug...
--Type <RET> for more, q to quit, c to continue without paging--
[Switching to LWP 935 of process 2132]
0xfd875ea4 in ___lwp_park60 () from /usr/lib/libc.so.12
(gdb) bt
#0  0xfd875ea4 in ___lwp_park60 () from /usr/lib/libc.so.12
#1  0xfdcdb71c in pthread_cond_timedwait (cond=0xfd75802c, mutex=0xfd758044,
    abstime=abstime@entry=0x0) at /usr/src/lib/libpthread/pthread_cond.c:167
#2  0xfdcdb9e4 in pthread_cond_wait (cond=<optimized out>,
    mutex=<optimized out>) at /usr/src/lib/libpthread/pthread_cond.c:221
#3  0xfdb3e040 in __gthread_cond_wait (__mutex=<optimized out>,
    __cond=__cond@entry=0xfdcc7cfc)
    at /build/dest/evbppc-powerpc/usr/include/g++/bits/gthr-posix.h:868
#4  std::condition_variable::wait (this=this@entry=0xfd75802c, __lock=...)
    at /usr/src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/condition_variable.cc:53
#5  0x01d90f48 in gdb::thread_pool::thread_function (this=0xfd758000)
    at /usr/src/external/gpl3/gdb/lib/libgdbsupport/../../dist/gdbsupport/thread-pool.cc:162
#6  0xfdb3be8c in std::execute_native_thread_routine (__p=0xfddc8d80)
    at /usr/src/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/thread.cc:80
#7  0xfdcddb08 in pthread__create_tramp (cookie=0xfd590000)
    at /usr/src/lib/libpthread/pthread.c:561
#8  0xfd85d300 in __mknod50 () from /usr/lib/libc.so.12
Backtrace stopped: frame did not save the PC
(gdb)
----

Note that I've never observed similar problems for gdb.old.
>How-To-Repeat:
Run tests/usr.bin/gdb/t_regress:threads on powerpc.
>Fix:
N/A



Home | Main Index | Thread Index | Old Index