[omniORB] omniORB possibly looping
Kelly Burkhart
kburk@sky.net
Thu, 25 Feb 1999 21:29:47 -0600 (CST)
Ralf Walther writes:
>
> Hi Kelly,
>
> you're right, I actually run into the same problem on HPUX10.20.
> Are you using the environment ORACLE_SID to specify the database?
> Unfortunately the only thing to do is, AVOID A FORK/EXEC IN CORBA
> servers.
> In your case, try to connect to the Oracle database via the listener
> process. This will
> let the listener start your db client process.
Thank you this worked perfectly. (why didn't I think of that ;-)
>
> So what is the problem of a fork/exec? It's not garanteed, that a
process
> sets the
> close-on-exec flag of its acquired file descriptors. This effects the
> state of the forked process, ...
> you see, ... the ORACLE client process inherits all open descriptors,
> which confuse the CORBA
> server. I recognized, that the server waits for a socket resource
> in tcpSocketRendezvouser::run_undetached, but there were enough free
> sockets available.
>
> On my search for solutions I've found similar problems described for
> orbix as well. In orbix it's
> recommended to let the daemon start server and to avoid forks in server
> processes.
>
Judy had some interesting info in her message about signal handlers.
That may be more in line with what I'm seeing.
I originally thought that the process was looping in libtcpwrapGK, I
don't think that is the case now. It appears to be suspended waiting
on a signal in libc. Prior to that it seems to loop calling setenv() and
putenv() alternately around 65000 times. I'm not particularly worried
about this now since I can connect through the listener, but I do find
it curious.
The stack trace looks like this (I added \ linebreak on some long lines):
(gdb) where
#0 0x40593bf4 in __syscall_sigsuspend () at soinit.c:27
#1 0x405b7ea0 in __DTOR_END__ ()
#2 0x404bcb99 in __pthread_mutex_lock (mutex=0xbfa00754) at restart.h:32
#3 0x404be15c in __flockfile (stream=0xbfa0076c) at lockfile.c:32
#4 0x4054ecfa in _IO_vfprintf (s=0xbfa0076c, format=0x404b03c2 \
"%s=%s", ap=0xbfa007ec) at vfprintf.c:906
#5 0x4055a5a3 in _IO_vsprintf (string=0x81efb90 "", format= \
0x404b03c2"%s=%s", args=0xbfa007ec) at iovsprintf.c:48
#6 0x40555a41 in sprintf (s=0x81efb90 "", format=0x404b03c2 \
"%s=%s") at sprintf.c:33
#7 0x404af970 in setenv ()
#8 0x4053d5c5 in putenv (string=0x81efb78 "ORA_NET2_DESC=3,6") \
at ../sysdeps/generic/putenv.c:63
#9 0x404af976 in setenv ()
#10 0x4053d5c5 in putenv (string=0x81efb60 "ORA_NET2_DESC=3,6") \
at ../sysdeps/generic/putenv.c:63
#11 0x404af976 in setenv ()
...
#130634 0x4053d5c5 in putenv (string=0x8071060 "ORA_NET2_DESC=3,6") \
at ../sysdeps/generic/putenv.c:63
#130635 0x404af976 in setenv ()
#130636 0x4053d5c5 in putenv (string=0x8071048 "ORA_NET2_DESC=3,6") \
at ../sysdeps/generic/putenv.c:63
#130637 0x404af976 in setenv ()
#130638 0x4053d5c5 in putenv (string=0x8070388 "ORA_NET2_DESC=3,6") \
at ../sysdeps/generic/putenv.c:63
#130639 0x401591cf in sntpcall ()
#130640 0x40157311 in ntpcon ()
#130641 0x401559eb in ntconn ()
#130642 0x401460bf in nsopen ()
#130643 0x4013935c in nscall1 ()
#130644 0x40138d26 in nscall ()
#130645 0x4013566f in nricdt ()
#130646 0x401351cf in nricall ()
#130647 0x4011b432 in niotns ()
#130648 0x40117ae9 in nigcall ()
#130649 0x40117957 in osncon ()
#130650 0x400f9fa7 in upiini ()
#130651 0x400eed9e in upiahm ()
#130652 0x400cb34d in kpuatch ()
#130653 0x400ead1f in OCIServerAttach ()
#130654 0x804946e in main () at omnioracle.C:33
(gdb)