<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - thread step-out -m all-threads failing on FreeBSD"
   href="http://llvm.org/bugs/show_bug.cgi?id=19347">19347</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>thread step-out -m all-threads failing on FreeBSD
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lldb
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>FreeBSD
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>All Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>lldb-dev@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>emaste@freebsd.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>FAIL: test_step_all_threads_with_dwarf
(TestThreadStepOut.ThreadStepOutTestCase)

1. one thread stops at a breakpoint
2. "bt all" shows the other thread with an IP of the breakpoint + 1
3. execute "thread step-out -m all-threads"
4. selected thread executes "step over breakpoint trap" with other threads
suspended
5. execution stops at the breakpoint in the other thread





feynman% bin/lldb
/tank/emaste/src/llvm//tools/lldb/test/functionalities/thread/step_out/a.out
Current executable set to
'/tank/emaste/src/llvm//tools/lldb/test/functionalities/thread/step_out/a.out'
(x86_64).
(lldb) b 33
Breakpoint 1: where = a.out`step_out_of_here() + 4 at main.cpp:33, address =
0x0000000000400754
(lldb) run
Process 59762 launching
Process 59762 stopped
Process 59762 launched:
'/tank/emaste/src/llvm//tools/lldb/test/functionalities/thread/step_out/a.out'
(x86_64)
Process 59762 stopped
* thread #2: tid = 101824, 0x0000000000400754 a.out`step_out_of_here() + 4 at
main.cpp:33, stop reason = breakpoint 1.1
    frame #0: 0x0000000000400754 a.out`step_out_of_here() + 4 at main.cpp:33
   30   volatile int g_test = 0;
   31  
   32   void step_out_of_here() {
-> 33     g_test += 5; // Set breakpoint here
   34   }
   35  
   36   void *
(lldb) bt all
* thread #2: tid = 101824, 0x0000000000400754 a.out`step_out_of_here() + 4 at
main.cpp:33, stop reason = breakpoint 1.1
  * frame #0: 0x0000000000400754 a.out`step_out_of_here() + 4 at main.cpp:33
    frame #1: 0x00000000004008bb a.out`thread_func(input=0x0000000000000000) +
331 at main.cpp:43
    frame #2: 0x0000000800822dc4
libthr.so.3`thread_start(curthread=0x0000000801807c00) + 260 at
thr_create.c:284

  thread #3: tid = 101583, 0x0000000000400755 a.out`step_out_of_here() + 5 at
main.cpp:33
    frame #0: 0x0000000000400755 a.out`step_out_of_here() + 5 at main.cpp:33
    frame #1: 0x00000000004008bb a.out`thread_func(input=0x0000000000000000) +
331 at main.cpp:43
    frame #2: 0x0000000800822dc4
libthr.so.3`thread_start(curthread=0x0000000801807800) + 260 at
thr_create.c:284

  thread #1: tid = 102182, 0x000000080082a59c libthr.so.3 at _umtx_op_err.S:37
    frame #0: 0x000000080082a59c libthr.so.3 at _umtx_op_err.S:37
(lldb) thread step-out -m all-threads
Process 59762 stopped
* thread #3: tid = 101583, 0x0000000000400754 a.out`step_out_of_here() + 4 at
main.cpp:33, stop reason = breakpoint 1.1
    frame #0: 0x0000000000400754 a.out`step_out_of_here() + 4 at main.cpp:33
   30   volatile int g_test = 0;
   31  
   32   void step_out_of_here() {
-> 33     g_test += 5; // Set breakpoint here
   34   }
   35  
   36   void *

with step logging:

(lldb) thread step-out -m all-threads
Thread::PushPlan(0x0x80f88e800): "Stepping out from address 0x400754 to return
address 0x4008bb using breakpoint site -6", tid = 0x1908f.
Process::PrivateResume() m_stop_id = 4, public state: stopped private state:
stopped
Thread::PushPlan(0x0x80f88e800): "Single stepping past breakpoint site 6 at
0x400754", tid = 0x1908f.
WillResume Thread #2 (0x0x80f88e600): tid = 0x190a9, pc = 0x00400755, sp =
0x7fffff9fcf50, fp = 0x7fffff9fcf50, plan = 'base plan', state = suspended,
stop others = 0
WillResume Thread #3 (0x0x80f88e800): tid = 0x1908f, pc = 0x00400754, sp =
0x7fffffbfdf50, fp = 0x7fffffbfdf50, plan = 'Step over breakpoint trap', state
= stepping, stop others = 1
WillResume Thread #1 (0x0x808f4ac00): tid = 0x1955b, pc = 0x80082a59c, sp =
0x7fffffffd3a8, fp = 0x801807400, plan = 'base plan', state = suspended, stop
others = 0
Process thinks the process has resumed.
Current Plan for thread 2(0x80f88e600) (0x190a9, suspended): base plan being
asked whether we should report run.
Current Plan for thread 3(0x80f88e800) (0x1908f, stepping): Step over
breakpoint trap being asked whether we should report run.
Current Plan for thread 1(0x808f4ac00) (0x1955b, suspended): base plan being
asked whether we should report run.
(lldb) 
ThreadList::ShouldStop: 3 threads
Thread::ShouldStop for tid = 0x190a9 0x190a9, should_stop = 0 (ignore since
thread was suspended)
Thread::ShouldStop(0x80f88e800) for tid = 0x1908f 0x1908f, pc =
0x000000000040075b
^^^^^^^^ Thread::ShouldStop Begin ^^^^^^^^
Plan stack initial state:
  Plan Stack for thread #3: tid = 0x1908f, stack_size = 3
    Element 2: Single stepping past breakpoint site 6 at 0x400754
    Element 1: Stepping out from address 0x400754 to return address 0x4008bb
using breakpoint site -6
    Element 0: Base thread plan.

Plan Step over breakpoint trap explains stop, auto-continue 1.
Plan Step over breakpoint trap should stop: 0.
Completed step over breakpoint plan.
Popping plan: "Step over breakpoint trap", tid = 0x1908f.
Plan Step out should stop: 0.
Plan stack final state:
  Plan Stack for thread #3: tid = 0x1908f, stack_size = 2
    Element 1: Stepping out from address 0x400754 to return address 0x4008bb
using breakpoint site -6
    Element 0: Base thread plan.
  Completed Plan Stack: 1 elements.
    Element 0: Single stepping past breakpoint site 6 at 0x400754

vvvvvvvv Thread::ShouldStop End (returning 0) vvvvvvvv
Thread::ShouldStop for tid = 0x1955b 0x1955b, should_stop = 0 (ignore since
thread was suspended)
ThreadList::ShouldStop overall should_stop = 0
ThreadList::ShouldReportStop 3 threads
Thread::ShouldReportStop() tid = 0x190a9: returning vote 0 (temporary state was
suspended or invalid)
Thread::ShouldReportStop() tid = 0x1908f: returning vote  for complete stack's
back plan
ThreadPlan::ShouldReportStop() returning vote: no
Thread::ShouldReportStop() tid = 0x1955b: returning vote 0 (temporary state was
suspended or invalid)
ThreadList::ShouldReportStop returning no
Process::PrivateResume() m_stop_id = 5, public state: running private state:
stopped
WillResume Thread #2 (0x0x80f88e600): tid = 0x190a9, pc = 0x00400755, sp =
0x7fffff9fcf50, fp = 0x7fffff9fcf50, plan = 'base plan', state = running, stop
others = 0
WillResume Thread #3 (0x0x80f88e800): tid = 0x1908f, pc = 0x0040075b, sp =
0x7fffffbfdf50, fp = 0x7fffffbfdf50, plan = 'Step out', state = running, stop
others = 0
WillResume Thread #1 (0x0x808f4ac00): tid = 0x1955b, pc = 0x80082a59c, sp =
0x7fffffffd3a8, fp = 0x801807400, plan = 'base plan', state = running, stop
others = 0
Process thinks the process has resumed.

ThreadList::ShouldStop: 3 threads
Thread::ShouldStop(0x80f88e600) for tid = 0x190a9 0x190a9, pc =
0x0000000000400754
^^^^^^^^ Thread::ShouldStop Begin ^^^^^^^^
Plan stack initial state:
  Plan Stack for thread #2: tid = 0x190a9, stack_size = 1
    Element 0: Base thread plan.

Plan base plan explains stop, auto-continue 0.
Base plan discarding thread plans for thread tid = 0x190a9 (breakpoint hit.)
Discarding thread plans for thread (tid = 0x190a9, force 0)
Base plan says should stop: 1.
Plan stack final state:
  Plan Stack for thread #2: tid = 0x190a9, stack_size = 1
    Element 0: Base thread plan.

vvvvvvvv Thread::ShouldStop End (returning 1) vvvvvvvv
Thread::ShouldStop for tid = 0x1908f 0x1908f, pc = 0x000000000040075b,
should_stop = 0 (ignore since no stop reason)
Thread::ShouldStop for tid = 0x1955b 0x1955b, pc = 0x000000080082a59c,
should_stop = 0 (ignore since no stop reason)
ThreadList::ShouldStop overall should_stop = 1
Process 59766 stopped
* thread #2: tid = 102569, 0x0000000000400754 a.out`step_out_of_here() + 4 at
main.cpp:33, stop reason = breakpoint 1.1
    frame #0: 0x0000000000400754 a.out`step_out_of_here() + 4 at main.cpp:33
   30   volatile int g_test = 0;
   31  
   32   void step_out_of_here() {
-> 33     g_test += 5; // Set breakpoint here
   34   }
   35  
   36   void *</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>