jarin added a comment. In D74398#1939372 <https://reviews.llvm.org/D74398#1939372>, @jarin wrote:
> In D74398#1935438 <https://reviews.llvm.org/D74398#1935438>, @jasonmolenda > wrote: > > > (and if you're still seeing mystery reads, put a breakpoint on > > ProcessGDBRemote::DoReadMemory and see who is doing it) > > > Thanks for the great explanations! I did put a breakpoint into DoReadMemory, > and the unwinder doing the reads for each thread (called from > https://github.com/llvm/llvm-project/blob/master/lldb/source/Target/ThreadList.cpp#L349). > If I understand correctly, the Thread::WillStop/SelectMostRelevantFrame > should care only about the current PC of each thread, but not about the stack > contents. Let me double check that. Looking at this in more detail, Thread::WillStop will unwind more than one frame (for each thread), the stack trace is below. I guess the surprising bit is that UnwindLLDB::UpdateUnwindPlanForFirstFrameIfInvalid (frame #11) always unwinds one more frame. Is that expected? #0: process_gdb_remote::ProcessGDBRemote::DoReadMemory() at ProcessGDBRemote.cpp:2694:54 #1: Process::ReadMemoryFromInferior() at Process.cpp:2092:21 #2: Process::ReadMemoryFromInferior() at Process.cpp:2081 #3: MemoryCache::Read() at Memory.cpp:229:69 #4: RegisterContext::ReadRegisterValueFromMemory() at RegisterContext.cpp:337:31 #5: RegisterContextUnwind::ReadRegisterValueFromRegisterLocation() at RegisterContextUnwind.cpp:1040:15 #6: RegisterContextUnwind::ReadGPRValue() at RegisterContextUnwind.cpp:2008:44 #7: RegisterContextUnwind::InitializeNonZerothFrame() at RegisterContextUnwind.cpp:287:20 #8: RegisterContextUnwind::RegisterContextUnwind() at RegisterContextUnwind.cpp:70:29 #9: UnwindLLDB::GetOneMoreFrame() at UnwindLLDB.cpp:129:77 #10: UnwindLLDB::AddOneMoreFrame() at UnwindLLDB.cpp:332:32 #11: UnwindLLDB::UpdateUnwindPlanForFirstFrameIfInvalid() at UnwindLLDB.cpp:305:18 #12: UnwindLLDB::AddFirstFrame() at UnwindLLDB.cpp:99:41 #13: UnwindLLDB::AddFirstFrame() at UnwindLLDB.cpp:70 #14: UnwindLLDB::DoGetFrameInfoAtIndex() at UnwindLLDB.cpp:395:23 #15: StackFrameList::GetFramesUpTo() at Unwind.h:53:33 #16: StackFrameList::GetFrameAtIndex() at StackFrameList.cpp:660:16 #17: Thread::SelectMostRelevantFrame() at Thread.cpp:612:52 #18: Thread::WillStop() at Thread.cpp:634:26 #19: ThreadList::ShouldStop() at ThreadList.cpp:349:26 #20: Process::ShouldBroadcastEvent() at Process.cpp:3427:50 #21: Process::HandlePrivateEvent() at Process.cpp:3652:53 #22: Process::RunPrivateStateThread() at Process.cpp:3846:25 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74398/new/ https://reviews.llvm.org/D74398 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits