[omniORB] nameservice as NT-service and NT alpha port

Sai-Lai Lo S.Lo@orl.co.uk
Tue, 7 Apr 1998 16:03:44 +0100


>>>>> Roland Kopetzky writes:

> for our projects we had to set up the omniORB nameservice as nt-service.

> The nameservice itself seems to run quite stable now and works fine.

> The current problem is, that the check (all 15 minutes) doesn't work,
> but we hope
> to fix this the next weeks.
> It seems, that it's a problem of the different thread-model of an
> nt-service.
> Each call to omni_thread::self() (e.g. in the readerIn-function in
> ReadersWritersLock.h)
> throws an exception. It seems, that the omni_thread::init_t-function,
> which sets the variable self_tls_index, never get called ...

By coincidence, a colleague of mine has a similar problem when he tries to
make a program using omnithread to be a nt-service. The problem seems to be
that when a program is running as a nt-service, the thread that calls
main() is not really the main thread but another thread created by NT.
As this thread is not a omni_thread and tries to do all sorts of
omni_thread things, it goes horribly wrong.

I suggest you try this with omniNames:

- Put everything in main() into a different function (f). In main, create a
  new thread (a omni_thread) and use that thread to call into f().


> Another problem is the port to NT 4.0 on alpha with VC++ 5.0.
> After finding all the Gnu-Tools (esp. install.exe) the compilation of
> the
> libraries and executables has been no problem. Even the first
> echo-example works.
> But if the nameservice try to start, we get an "abnormal program
> termination".
> The same with echo 2 and 3 examples, the same with the nameservice
> running on NT (intel).

Just a hunch, may be it 'dump core' in LibcWrapper::gethostbyname()?


Regards,

Sai-Lai