소스 검색

Kernel: Update registers in tracer when attaching to a stopped thread

Itamar 2 년 전
부모
커밋
7544b35694
1개의 변경된 파일3개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 1
      Kernel/Syscalls/ptrace.cpp

+ 3 - 1
Kernel/Syscalls/ptrace.cpp

@@ -56,7 +56,9 @@ static ErrorOr<FlatPtr> handle_ptrace(Kernel::Syscall::SC_ptrace_params const& p
         }
         TRY(peer_process.start_tracing_from(caller.pid()));
         SpinlockLocker lock(peer->get_lock());
-        if (peer->state() != Thread::State::Stopped) {
+        if (peer->state() == Thread::State::Stopped) {
+            peer_process.tracer()->set_regs(peer->get_register_dump_from_stack());
+        } else {
             peer->send_signal(SIGSTOP, &caller);
         }
         return 0;