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