[Ace-users] [tao-bugs] Notify_Service Ctrl-C hangs

Hans Utz hans.utz at nasa.gov
Fri Aug 17 16:28:41 CDT 2007


Hi

      TAO VERSION: 1.5.10
      ACE VERSION: 5.5.10

      HOST MACHINE and OPERATING SYSTEM: Linux RH WS 4
      COMPILER NAME AND VERSION (AND PATCHLEVEL): gcc 3.4.6

      THE $ACE_ROOT/ace/config.h FILE:
        config-linux.h
      THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
        platform_linux.GNU

      AREA/CLASS/EXAMPLE AFFECTED: Notification Service

      DOES THE PROBLEM AFFECT:
           EXECUTION

      SYNOPSIS:

When running Notify_Service with asynchronous dispatching (as enabled in 
the svc.conf file in TAO/orbsvcs/Notify_Service) Ctrl-C will hang, if 
there is still a consumer registered at the service.

      SAMPLE FIX/WORKAROUND:

The root problem is, that the Notify_Service_Driver::run() blocks on 
worker_thr_mgr()->wait(). Notify_Service_Driver::shutdown() calls 
orb_->shutdown(), but does not cancel the dispatching threads, which 
seem to be managed under the same thread manager.

Consumers can not disconnect after Ctrl-C anymore either, as the orb 
event loop is already down.

Workaround: Initializing -ORBRunThreads 0 causes ::run() to end up in 
orb_->run() instead of ...->wait(). This at least works for the "single 
threaded orb" configuration.

Cheers,
Hans


-- 
Hans Utz - USRA/RIACS at NASA Ames
I do not speak for NASA, and NASA does not speak for me.



More information about the Ace-users mailing list