While operating on a breakpoints, is it correct to use 'breakpoint delete'
without
previous 'breakpoint disable'? With this scenario, I'm observing 6.0.0-rc2
crash with:
$ /home/dantipov/.local/llvm-6.0.0/bin/lldb t-thread2
(lldb) target create "t-thread2"
Current executable set to 't-thread2' (x86_64).
(lldb) breakpoint set -n g
Breakpoint 1: where = t-thread2`g(int) + 7 at t-thread2.cc:9, address =
0x0000000000400d0e
(lldb) run
Process 19195 launched: '/home/dantipov/tmp/t-thread2' (x86_64)
Process 19195 stopped
* thread #2, name = 't-thread2', stop reason = breakpoint 1.1
frame #0: 0x0000000000400d0e t-thread2`g(v=0) at t-thread2.cc:9
6 g (int v)
7 {
8 (void) v;
-> 9 }
10
11 void
12 f (int v)
(lldb) process continue
Process 19195 resuming
Process 19195 stopped
* thread #3, name = 't-thread2', stop reason = breakpoint 1.1
frame #0: 0x0000000000400d0e t-thread2`g(v=1) at t-thread2.cc:9
6 g (int v)
7 {
8 (void) v;
-> 9 }
10
11 void
12 f (int v)
(lldb) process continue
Process 19195 resuming
Process 19195 stopped
* thread #2, name = 't-thread2', stop reason = breakpoint 1.1
frame #0: 0x0000000000400d0e t-thread2`g(v=0) at t-thread2.cc:9
6 g (int v)
7 {
8 (void) v;
-> 9 }
10
11 void
12 f (int v)
(lldb) breakpoint delete
About to delete all breakpoints, do you want to do that?: [Y/n] Y
All breakpoints removed. (1 breakpoint)
(lldb) process continue
Process 19195 resuming
Segmentation fault (core dumped)
There is no crash if 'breakpoint disable' was issued before 'breakpoint delete'.
Sample program attached.
Dmitry
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may
contain
confidential information. Any unauthorized review, use, disclosure or
distribution
is prohibited. If you are not the intended recipient, please contact the
sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
#include <vector>
#include <chrono>
#include <thread>
void
g (int v)
{
(void) v;
}
void
f (int v)
{
while (true)
{
g (v);
std::this_thread::sleep_for (std::chrono::milliseconds (100 + std::rand () % 100));
}
}
int
main (int argc, char *argv[])
{
auto max = argc > 1 ? std::atoi (argv[1]) : 2;
std::vector<std::thread *> T;
for (auto i = 0; i < max; i++)
T.push_back (new std::thread (f, i));
for (auto &t: T)
t->join ();
return 0;
}
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev