Kernel: το kill δεν πιάνει αυτο

V13 v13 at priest.com
Sat Nov 30 19:41:02 EET 2002


On Saturday 30 November 2002 00:41, P. Christeas wrote:
> Συνάντησα πρόσφατα το εξής πρόβλημα με τον kernel μου (2.5.47):
> έχω μία δική μου εφαρμογή στο userland. Η εφαρμογή αυτή ακούει ένα TCP
> port. Μέσα στον κώδικά της έχει και signal handling για τα SIGINT, SIGHUP
> και SIGTERM.
> Μου έχει συμβεί αρκετές φορές να σταματήσει να αποκρίνεται η εφαρμογή, αφού
> της στείλω το SIGTERM. Η εφαρμογή περνάει σε stop ή zombie κατάσταση. Τότε,
> δίνω SIGCONT και SIGQUIT.
> Εδώ αρχίζει το bug. Το system load γίνεται 100% και η εφαρμογή δεν δέχεται
> κανένα signal (δοκίμασα και SIGABRT, SIGILL κλπ. κλπ.).
> Το μόνο που ξέρω να κάνω από εκεί και πέρα είναι να κατεβάσω όλο το
> σύστημα..

Exo tin ypopsia oti prokeitai gia 2-3 bug toy programmatos soy:

a) gia na ginetai zombie simainei oti to parent process den kanei wait(), kati 
poy dixnei oti to parent process einai mallon kapoio diko soy programma kai 
oxi to init h kapoio shell...

b) To oti soy troei 100% den einai epidi ginetai zombie, alla epidi mallon 
mpenei se kapoio atermono loop.. To poio pithano einai na xrisimopoieis 
select() se kapoio fd to opoio einai kleisto (mias kai aneferes tcp port). Se 
opoiadipote periptosi omos, kati tetoio den mporei na ginei an to process soy 
einai zombie.

c) To oti den dexetai signals *ypotheto* oti exei na kanei me ta eksis:

c.1) Xrisimopoieis SysV semantics, opote o signal handler enos signal 
epanerxetai sto SIG_DFL otan poiasei ena tetoio signal.

c.2) To programma soy den bgenei pote apo ton signal handler, opote den mporei 
na dextei alla idia signals (BSD semantics - glibc2 default). 

Se opoiadipote periptisi o kodikas tha boithoyse poly sto na se boithisoyme.

Poly kales endikseis (eidika gia to 100% load) mporeis na pareis an trekseis 
to programma me strace, oste na blepeis ti akribos ginetai.

<<V13>>




More information about the Linux-greek-users mailing list