| The user buffer unavailable is just a symptom. DTSS uses DECdns to read
the global directory to get the global time servers. If DECdns is just
starting up and not fully operational, then DTSS is probably going to
"hang" with a single threak stalled inside the DNS rtl directory lookup code.
There are a lot of rtl calls that appear to be too infrequently used and
often time very complex that don't get aggressively designed to support
multithreaded use. One example would be a protected rtl which executes
in exec mode and does network calls; the "correct way is to do all calls
asynchronously, even in a routine that doesn't return until the results are
returned, and then wait in user mode for the network I/O to complete. The
reason that is desirable is that this allows a user mode AST to run while
the exec mode library routine is executing. However, this turns a simple
straight line module into an obscure one, and when the logic is already
complicated for the straight line code, few people can comprehend the
result of allowing it to be interrupted.
Now what might be happening is that you are running into a DNS design bug
which is really obscure. Something about the server trying to lookup its
own addresses and the code that connects to the server tried to lookup its
address which then connects to the server and needs to lookup its address,
and so on.
Take a look in the sys$manager:DNS$CHFAIL.LOG and see what it says right
after the system has booted up. My guess it that you'll see some lookup
errors in there that have timestamps that correspond to when DTSS is
trying to startup.
|