signal: check for parent when sending SIGCHLD

This commit is contained in:
Matheus
2024-05-26 20:50:32 -03:00
parent 890f6ba3ac
commit 1dba3534c4
+3 -2
View File
@@ -218,7 +218,8 @@ void signal_signalproc(struct proc_t *proc, int signal) {
proc->status = 0x7f;
proc->status |= signal << 8;
proc->signals.stopunwaited = true;
if ((proc->parent->signals.actions[SIGCHLD].flags & SA_NOCLDSTOP) == 0) {
if (proc->parent && (proc->parent->signals.actions[SIGCHLD].flags & SA_NOCLDSTOP) == 0) {
signal_signalproc(proc->parent, SIGCHLD);
}
semaphore_signal(&proc->parent->waitsem);
@@ -228,7 +229,7 @@ void signal_signalproc(struct proc_t *proc, int signal) {
if (threadcontinued) {
proc->status = 0xffff;
proc->signals.continueunwaited = true;
if ((proc->parent->signals.actions[SIGCHLD].flags & SA_NOCLDSTOP) == 0) {
if (proc->parent && (proc->parent->signals.actions[SIGCHLD].flags & SA_NOCLDSTOP) == 0) {
signal_signalproc(proc->parent, SIGCHLD);
}
semaphore_signal(&proc->parent->waitsem);