On my Grid Control management-server (Suse Linux, OMS version 10.2.0.4) a very large number of <defunct> processes arose what eventually caused the OMS not to respond anymore.

Looked like this:
oracle   16932 15961  0 Mar03 ?        00:00:00 [perl] <defunct>
oracle   16987 15961  0 Mar03 ?        00:00:00 [perl] <defunct>
oracle   17027 15961  0 Mar03 ?        00:00:00 [perl] <defunct>

… etc.

The process what caused this appeared to be the iasconsole:

oracle   15961     1  0 Mar03 ?        00:05:10 /software/oracle/product/GC10g/oms10g/perl/bin/perl /software/oracle/product/GC10g/oms10g/bin/emwd.pl iasconsole /software/oracle/product/GC10g/oms10g/sysman/log/em.nohup

Stopping and starting did clean up the defunct-processes, but only temporarily.

Two solutions

1. Not supported by Oracle :-) , solution contributed by a guy called Seb on the forums (but it works!):
Stop the iasconsole.
- Edit $ORACLE_HOME/bin/IASConsole.pm
- Modify the following line:
from #my $ua = LWP::UserAgent->new(keep_alive=>1);
to my $ua = LWP::UserAgent->new;
- Start the iasconsole.

2. Follow the note 391894.1
- It’s the bug 5504078 Abstract: EMWD.PL SPWANS DEFUNCT PERL PROCESSES AFTER OMS PATCH 10.2.0.2:
The script attempts to locate a file called WINDOWS_NT which on Unix of course does not exist. Consequently a defunct process is created.
- Stop the iasconsole:
emctl stop iasconsole
- cd $ORACLE_HOME/bin
touch Windows_NT
chmod 544 Windows_NT
- Start the iasconsole:
emctl start iasconsole