doruceni signalu KILL procesu ktery neprerusitelne spi

Divacky Roman xdivac02 at stud.fit.vutbr.cz
Mon Sep 8 10:50:14 CEST 2003


Zdravim

muze se stat (a parkrat se mi to i stalo) ze proces usne pri cekani na
nejakou HW udalost, ktera se proste nestane (HW porucha -  u mne konkretne
dosluhujici cdromka) a tak zustane vyset... neprisel jsem na zpusob jak
ten proces "odstrelit" (pokud ot nejak jde uvitam radu!), pze kdyz mu
poslu signal KILL tak ten se zpracuje az po dokonceni te udalosti na
kterou ceka ten  sleep (tj. po ubehnuti timeoutu nebo nikdy)

napadlo mne jedine reseni - zaridit aby KILL prerusil ten tsleep() a
zpracoval se normalne... 
treba takhle:
--- src/sys/kern/kern_sig.c	2003-05-16 18:34:34.000000000 +0200
+++ kern_sig.c	2003-09-08 12:47:18.000000000 +0200
@@ -1079,8 +1079,11 @@
 		 * be noticed when the process returns through
 		 * trap() or syscall().
 		 */
-		if ((p->p_flag & P_SINTR) == 0)
-			goto out;
+		if ((p->p_flag & P_SINTR) == 0) {
+		   	if (sig == SIGKILL)
+	                	endtsleep(p);
+     			else goto out;
+		}
 		/*
 		 * Process is sleeping and traced... make it runnable
 		 * so it can discover the signal in issignal() and stop

nemuzu na tom najit nic spatneho (na te myslence) a tak by mne zajimalo
jestli nekoho neco napadne... tj. napada nekoho proc by se nemelo tomu
KILLu dovolit prerusit ten sleep

diki za pripadne napady

r.d.



More information about the Users-l mailing list