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 lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev