Uncoupling "ti" from RPC?

Uncoupling "ti" from RPC?

Post by William Setze » Sat, 28 Aug 1999 04:00:00



I've recently been made aware of a problem with some applications on
the 2.6 boxes I've set up.  The programs hang, sometimes coming up
after a long wait (5 or 10 minutes).  Using truss, I think I've
narrowed the problem to the netconfig interface.

It appears that using entries in /etc/netconfig sometimes require
rpcbind, in particular /dev/ticlts and/or when the "timod" module gets
pushed.  (As soon as I run rpcbind, the programs start working fine).
I've hunted through docs.sun.com and done a few web searches, and what
I've seen seems to hint at this as well.

Is this true?  And if so, is there a way around it?  I'd really prefer
not to run rpcbind, especially just to run some apps.  (I've tried
various combinations of commenting out entries in /etc/netconfig and
zeroing out /etc/net/ti*/services, and neither seems to work for all
the apps.  Since I had no idea what I was breaking, this may be just
as well. :-)

Many thanks in advance for any answers.

William

 
 
 

Uncoupling "ti" from RPC?

Post by Mike Eisl » Wed, 01 Sep 1999 04:00:00




Quote:>I've recently been made aware of a problem with some applications on
>the 2.6 boxes I've set up.  The programs hang, sometimes coming up
>after a long wait (5 or 10 minutes).  Using truss, I think I've
>narrowed the problem to the netconfig interface.

>It appears that using entries in /etc/netconfig sometimes require
>rpcbind, in particular /dev/ticlts and/or when the "timod" module gets
>pushed.  (As soon as I run rpcbind, the programs start working fine).
>I've hunted through docs.sun.com and done a few web searches, and what
>I've seen seems to hint at this as well.

>Is this true?  And if so, is there a way around it?  I'd really prefer

Are these server side or client side programs? Normally servers need
rpcbind to be running to that they can register themselves and also
let rpcbind tell clients what ports the servers are listening on. Some server
listen on well known ports, but this is more work to implement on
the client and server.

If they are client side programs, I suspect that they are using genernic
interfaces that attempt to bind to server over the first available
transport, which may mean trying ticlts, ticots, ticotsord.

You might try setting the NETPATH environment varable to simply "tcp:udp"
to see if the programs work without rpcbind present on the same host.
Or, if you have source code to these programs, you can change them to
invoke clnt_create[_*]() with a specific transport, like "udp" or
"tcp". Or you can change them to use lower level interfaces like
clnt_dg_create(), clnt_tli_create(), clnt_tp_create, clnt_vc_create.

Another thing to look at is how is /etc/nsswitch.conf set up. Unless
all entries are files (or dns in the case of hosts), and unless the
necessary entries appear in /etc/hosts, /etc/services, etc., then hang
scenarios, such has ypbind trying to start, are possible. ypbind, even
though it is a client side thing, is actually an RPC server.

Quote:>not to run rpcbind, especially just to run some apps.  (I've tried
>various combinations of commenting out entries in /etc/netconfig and
>zeroing out /etc/net/ti*/services, and neither seems to work for all
>the apps.  Since I had no idea what I was breaking, this may be just
>as well. :-)

I'm curious though. Why don't you want to run rpcbind?

--
-Mike Eisler                    Solaris NFS group

remove the prefix 'NO_' and suffix '_SPAM' to reply.

 
 
 

Uncoupling "ti" from RPC?

Post by William Setze » Thu, 02 Sep 1999 04:00:00




: >
: >It appears that using entries in /etc/netconfig sometimes require
: >rpcbind, in particular /dev/ticlts and/or when the "timod" module gets
: >pushed.  (As soon as I run rpcbind, the programs start working fine).
: >I've hunted through docs.sun.com and done a few web searches, and what
: >I've seen seems to hint at this as well.
: >
: >Is this true?  And if so, is there a way around it?  I'd really prefer
:
: Are these server side or client side programs?

They're client side, `matlab' and `proengineer'.

: You might try setting the NETPATH environment varable to simply "tcp:udp"
: to see if the programs work without rpcbind present on the same host.

I tested this with matlab, but unfortunately, this does not work.  It
still tries to open /dev/ticlts:

  21104:  open("/dev/ticlts", O_RDWR)                     = 8
  21104:  ioctl(8, I_FIND, "timod")                       = 0
  21104:  ioctl(8, I_PUSH, "timod")                       = 0
  [...]
  21104:  putmsg(8, 0xEFFFEAAC, 0xEFFFEBEC, 0)            = 0
  21104:  poll(0x0028FB1C, 1, 15000)                      = 1
  21104:  getmsg(8, 0xEFFFEAA8, 0x00286BD0, 0xEFFFEAD4)   = 0
  21104:  poll(0x0028FB1C, 1, 15000)      (sleeping...)
  21104:  poll(0x0028FB1C, 1, 15000)                      = 0
  21104:  poll(0x0028FB1C, 1, 2)                          = 0
  21104:  putmsg(8, 0xEFFFEAAC, 0xEFFFEBEC, 0)            = 0
  21104:  poll(0x0028FB1C, 1, 30000)                      = 1
  21104:  getmsg(8, 0xEFFFEAA8, 0x00286BD0, 0xEFFFEAD4)   = 0
  21104:  poll(0x0028FB1C, 1, 30000)      (sleeping...)

(Were I to comment the ticlts line out of /etc/netconfig, matlab would
run.)  I suspect the "timod" module is the real culprit, as with
proengineer I get an alarm loop hang after an open of /dev/tcp with
the "timod" module pushed on it.

: Or, if you have source code to these programs

I wish. :)

: Another thing to look at is how is /etc/nsswitch.conf set up. Unless
: all entries are files (or dns in the case of hosts), and unless the
: necessary entries appear in /etc/hosts, /etc/services, etc.

This is the case, ie, they are simply "files", except for hosts being
"dns files".  No RPC service is running or AFAICT trying to run.

: I'm curious though. Why don't you want to run rpcbind?

It can't be exploited if it isn't running[*], and RPC daemons in
general haven't had the best track record.  If I can get away with not
running a daemon, I want to try.

I'm being particularly hardheaded in this case because requiring
rpcbind to run in order to execute `matlab' Just Doesn't Make Sense.

Thanks for the help!

William

[*] So to speak.