mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-11 10:18:15 +09:00
Thread: Set m_blocker to null in Thread::unblock()
Before this commit, m_blocker was only set to null in Thread::block, after the thread has been unblocked. Starting with this commit, m_blocker is also set to null in Thread::unblock. This change will allow us to implement a missing feature of the PT_TRACE command of the ptrace syscall - stopping the traced thread when it exits the execve syscall. That feature will be implemented by sending a blocking SIGSTOP to the traced thread after it has executed the execve logic and before it starts executing the new program in userspace. However, since Process::exec arranges the tss to return to userspace (the so-called "yield-teleport"), the code in Thread::block that should be run after the thread unblocks, and sets m_blocker to null, never actually runs. Setting m_blocker to null in Thread::unblock allows us to avoid an incorrect state where the thread is in a Running state but conatins a pointer to a Blocker.
This commit is contained in:
parent
b306ac9b2b
commit
4568a628f9
Notes:
sideshowbarker
2024-07-19 07:39:12 +09:00
Author: https://github.com/itamar8910
Commit: 4568a628f9
Pull-request: https://github.com/SerenityOS/serenity/pull/1745
Reviewed-by: https://github.com/ADKaster
Reviewed-by: https://github.com/awesomekling
1 changed files with 1 additions and 0 deletions
|
@ -163,6 +163,7 @@ Thread::~Thread()
|
|||
|
||||
void Thread::unblock()
|
||||
{
|
||||
m_blocker = nullptr;
|
||||
if (current == this) {
|
||||
if (m_should_die)
|
||||
set_state(Thread::Dying);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue