mirror of
https://github.com/RGBCube/serenity
synced 2026-01-12 23:41:00 +00:00
Kernel: Make sure threads which don't do any syscalls are terminated
Steps to reproduce:
$ cat loop.c
int main() { for (;;); }
$ gcc -o loop loop.c
$ ./loop
Terminating this process wasn't previously possible because we only
checked whether the thread should be terminated on syscall exit.
This commit is contained in:
parent
c980a51776
commit
3c3a1726df
3 changed files with 20 additions and 0 deletions
|
|
@ -1134,6 +1134,9 @@ public:
|
|||
bool is_profiling_suppressed() const { return m_is_profiling_suppressed; }
|
||||
void set_profiling_suppressed() { m_is_profiling_suppressed = true; }
|
||||
|
||||
bool may_die_immediately() const { return m_may_die_immediately; }
|
||||
void set_may_die_immediately(bool flag) { m_may_die_immediately = flag; }
|
||||
|
||||
private:
|
||||
Thread(NonnullRefPtr<Process>, NonnullOwnPtr<Region>, NonnullRefPtr<Timer>);
|
||||
|
||||
|
|
@ -1227,6 +1230,7 @@ private:
|
|||
Optional<Range> m_thread_specific_range;
|
||||
Array<SignalActionData, NSIG> m_signal_action_data;
|
||||
Blocker* m_blocker { nullptr };
|
||||
bool m_may_die_immediately { true };
|
||||
|
||||
#if LOCK_DEBUG
|
||||
struct HoldingLockInfo {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue