Description
When running a TAO-based CORBA server (e.g., SimStartup) as a Windows service under NT SERVICE\X (e.g., NT SERVICE\SimStartup), object registration with the TAO Naming Service fails silently. Specifically, the service calls bind_context() or rebind(), but no exception is logged and the registration never completes.
This was confirmed via:
TAO debug logging (resolve("DSS71") failed with CORBA::NamingContext::NotFound)
The same service succeeding when run under LocalSystem
Success after setting sc sidtype "SimStartup" unrestricted
Likely root cause: Windows restricts NT SERVICE\X privileges by default. TAO and ACE likely depend on:
SeImpersonatePrivilege
SeIncreaseQuotaPrivilege
SeCreateGlobalPrivilege
These are required during socket creation, IOR generation, or memory-mapped object handling.
Suggestion: Improve diagnostics around Naming Service registration failures, especially when bind_context() is called on a nil naming context or under privilege-restricted conditions.
Related documentation and investigation:
[TAO Naming_Client.cpp, Naming_Server.cpp]