[lldb-dev] [Bug 40609] New: LLDB stops on every call to dlopen() when the process has additional threads running under kernel 4.20

via lldb-dev lldb-dev at lists.llvm.org
Tue Feb 5 08:41:03 PST 2019


https://bugs.llvm.org/show_bug.cgi?id=40609

            Bug ID: 40609
           Summary: LLDB stops on every call to dlopen() when the process
                    has additional threads running under kernel 4.20
           Product: lldb
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at lists.llvm.org
          Reporter: frank.praznik at gmail.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 21436
  --> https://bugs.llvm.org/attachment.cgi?id=21436&action=edit
Reproduction case that stops when calling dlopen()

Since updating to Linux kernel 4.20, if a program is run under LLDB and calls
dlopen() after spawning additional process threads LLDB will stop on every call
to dlopen() with the reason "shared-library-event", even though
target.process.stop-on-sharedlibrary-events is set to false.  Attempts to
continue results in additional stops with the reason being either additional
shared-library-events or SIGSTOP.  If halting on SIGSTOP is disabled in LLDB,
the program will eventually complete the dlopen() call successfully and run
normally.  Calling dlopen() from a single-threaded program results in no
issues.

This only occurs under kernel 4.20. When running the same program under kernel
4.19 no issues are exhibited.  GDB doesn't stop under the same conditions and
the test program shows no errors with the various Clang sanitizers or Valgrind.
 I've reproduced this on two separate machines with both the stable LLDB 7.0.1
as well as a recent build of the trunk.

The output of LLDB when running a small reproduction case (included as an
attachment), which spawns a single thread and loads a minimal shared library,
is as follows:

(lldb) target create "lldb_stop"
Current executable set to 'lldb_stop' (x86_64).
(lldb) settings show target.process.stop-on-sharedlibrary-events
target.process.stop-on-sharedlibrary-events (boolean) = false
(lldb) r
Process 11913 launched: '/home/franz/Documents/lldbrep/lldb_stop' (x86_64)
Creating thread...
Thread successfully created
Loading shared library...
Process 11913 stopped
* thread #1, name = 'lldb_stop', stop reason = shared-library-event
    frame #0: 0x00007ffff7fe23e0 ld-2.28.so`__GI__dl_debug_state
ld-2.28.so`__GI__dl_debug_state:
->  0x7ffff7fe23e0 <+0>: endbr64 
    0x7ffff7fe23e4 <+4>: retq   

ld-2.28.so`.annobin_dl_debug.c:
    0x7ffff7fe23e5 <+5>: nopw   %cs:(%rax,%rax)

ld-2.28.so`_dl_debug_initialize:
    0x7ffff7fe23f0 <+0>: endbr64 
  thread #2, name = 'lldb_stop', stop reason = signal SIGSTOP
    frame #0: 0x00007ffff7f920c6 libpthread.so.0`do_futex_wait.constprop.1 + 54
libpthread.so.0`do_futex_wait.constprop.1:
->  0x7ffff7f920c6 <+54>: cmpq   $-0x1000, %rax            ; imm = 0xF000 
    0x7ffff7f920cc <+60>: ja     0x7ffff7f920e8            ; <+88>
    0x7ffff7f920ce <+62>: movl   %r12d, %edi
    0x7ffff7f920d1 <+65>: callq  0x7ffff7f92aa0            ;
__pthread_disable_asynccancel

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20190205/28a25d2b/attachment.html>


More information about the lldb-dev mailing list