[Ace-users] [tao-bugs] Notify_Service Ctrl-C hangs
hans.utz at nasa.gov
Fri Aug 17 16:28:41 CDT 2007
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:
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
AREA/CLASS/EXAMPLE AFFECTED: Notification Service
DOES THE PROBLEM AFFECT:
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.
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.
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