Re: !!!HELP!!! Zombies claim Sparc 2 running Solaris 2.5

From: Thomas Kyte <tkyte_at_us.oracle.com>
Date: 1997/06/12
Message-ID: <33a00e27.28272253_at_newshost>#1/1


On 12 Jun 1997 13:48:33 GMT, "Bert Lee Medley" <medleyb_at_logica.com> wrote:

>We have a continuously running process, written in C, that connects to an
>ORACLE database, performs a set of tasks, disconnects, and then sleeps a
>while using the Solaris C sleep function. No special accommodations are
>made for sleep. The machine is filling up with <defunct> processes as a
>result of this code!
>
>Doea anyone have any ideas why the <defunct> processes are created and how
>to prevent them from birthing?
>
>

They are the child processes generated when you connect to the database (dedicate servers)... You can either:

  • use sql*net to connect to the database. Then the listener will be responsible for cleaning up the zombies.
  • wait on the child processes yourself. Here is a snippet of code that does that:

    { int rc;

      int   StatusLocation;
        for( rc = 1; rc>0; rc = waitpid(-1,&StatusLocation,WNOHANG) )
        {
            printf( "Rc = %d from waitpid", rc );
        }

    }

It finds any child that is zombied, cleans em out and throughs away the return code. Put this after your EXEC SQL COMMIT WORK RELEASE;

>--
>Bert Lee Medley, III
>medleyb_at_logica.com work
>medleyb_at_flash.net home

Thomas Kyte
tkyte_at_us.oracle.com
Oracle Government
Bethesda MD

http://govt.us.oracle.com/ -- downloadable utilities



Opinions are mine and do not necessarily reflect those of Oracle Corporation Received on Thu Jun 12 1997 - 00:00:00 CEST

Original text of this message