[omniORB] Still having activated object problems...

Marcus MacWilliam marcusma@lsl.co.uk
Fri Oct 4 15:24:00 2002


All,

OK I am using OmniORB v4.0.0, NT v4.0 (SP5) and VC++ V5.

I am getting the following messages appearing, from OmniORB in
my server output;

omniORB: ERROR -- A servant has been deleted that is still activated.
      id: root/oo-toolkit<637599744> (deactivating)
omniORB: ERROR -- A servant has been deleted that is still activated.
      id: root/oo-toolkit<788594688> (deactivating)
omniORB: ERROR -- A servant has been deleted that is still activated.
      id: root/oo-toolkit<1258356736> (deactivating)

However I have added code to check that objects are allready
deactivated before I delete them, thus;

// Sanity check, if the object is still active, deactivate it.
try
{
    // Deactivate the object, using its unique object id.
    m_poa->deactivate_object( m_pLastObject->m_object_id );

    // Value to hold temporary string.
    GOTH_VALUE temp = constructEntry(
m_pLastObject->getWrappedClassName(), m_lastObjectKey );

    // Output that we had to deactivate object.
    (void) goth_printf( goth_stdout, "DEBUG>\t\t\t\t\t[D] - Deactivating
object %s.\n", temp.string );

    // Free the assigned temporary string.
    (void) goth_value_free( temp, DT_STRING );
}
catch ( ... ) {}

// Delete the object.
delete m_pLastObject;

I do not get any messages telling me that an object was deactivated, and

my shutdown() method for my server is successfully called.

My problem is that orb->run() never finishes, after orb->shutdown(FALSE)

is called, as I would expect it to do.

Can anyone suggest any solutions as to how to get my server to shut down

correctly.

Cheers,
--
 Marcus A.T MacWilliam, MSc, CEng, MBCS, BSc(Hons).
 Senior Software Engineer, Laser-Scan Ltd, Cambridge, CB4 0FY.
 Tel: +44 (0)1223 420414 x213. Mobile: +44 (0)7803 706597.
 Fax: +44 (0)1223 420044. Web: http://www.laser-scan.co.uk/