Windows timeout during ORB shutdown
Thomas Ives via omniORB-list <[email protected]> Tue, 20 Jan 2026 09:48:49 +0000
| Newsgroups | gmane.comp.corba.omniorb.user |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------vl0PwTy7UwyqyPFpyoNxhwGz
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Hello,
To speed up testing of Tango, I am trying to shutdown and restart
"Tango" (and thus the ORB) in a single process. I believe I have got
this (at least mostly) working on Linux, however, on Windows I run into
an assertion failure inside omniORB when I go to restart the ORB after
it has been destroyed. The assertion failure reports that the
`giopServer` singleton is in `ZOMBIE` state:
omniORB: (11) 2026-01-19 12:02:41.819000: Assertion failed. This
indicates a bug in the application
using omniORB, or maybe in omniORB itself.
file: giopServer.cc
line: 154
info: pd_state != ZOMBIE
When I set `ORBtraceLevel=25`, I can clearly see that we are timing out
during shutdown after the initial log line below has been emitted. This
marks where some thread (10) starts waiting for the dedicated threads
(6, 9), which themselves seem to run into `CommFailure` issues ~5
seconds later:
omniORB: (10) 2026-01-19 12:40:21.734000: Wait for 2 dedicated
threads to finish...
omniORB: (9) 2026-01-19 12:40:26.156000: Error in network receive
(start of message): giop:tcp:[::ffff:10.0.2.15]:50344
omniORB: (9) 2026-01-19 12:40:26.156000: throw
giopStream::CommFailure from
giopStream.cc:857(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (9) 2026-01-19 12:40:26.156000: Server connection
giop:tcp:[::ffff:10.0.2.15]:50344 refcount = 1
omniORB: (9) 2026-01-19 12:40:26.156000: removeConnectionAndWorker
for dedicated worker. 1 remaining.
omniORB: (9) 2026-01-19 12:40:26.156000: Server connection
giop:tcp:[::ffff:10.0.2.15]:50344 refcount = 0
omniORB: (9) 2026-01-19 12:40:26.156000: Server close connection
from giop:tcp:[::ffff:10.0.2.15]:50344
omniORB: (9) 2026-01-19 12:40:26.156000: AsyncInvoker: thread id 9
finished immediate server task.
omniORB: (10) 2026-01-19 12:40:26.734000: Timed out. 1 connection
and 1 dedicated worker remaining.
omniORB: (10) 2026-01-19 12:40:26.734000: Terminate rendezvousers...
omniORB: (10) 2026-01-19 12:40:26.734000: giopRendezvouser for
giop:tcp:10.0.2.15:54321 terminate...
omniORB: (6) 2026-01-19 12:40:26.734000: Error in network receive
(start of message): giop:tcp:[::1]:50343
omniORB: (6) 2026-01-19 12:40:26.734000: throw
giopStream::CommFailure from
giopStream.cc:857(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (6) 2026-01-19 12:40:26.734000: Server connection
giop:tcp:[::1]:50343 refcount = 1
omniORB: (6) 2026-01-19 12:40:26.734000: removeConnectionAndWorker
for dedicated worker. 0 remaining.
omniORB: (6) 2026-01-19 12:40:26.734000: Server connection
giop:tcp:[::1]:50343 refcount = 0
omniORB: (6) 2026-01-19 12:40:26.734000: Server close connection
from giop:tcp:[::1]:50343
omniORB: (3) 2026-01-19 12:40:26.734000: giopServer terminate
connection from giop:tcp:[::ffff:10.0.2.15]:50348.
omniORB: (6) 2026-01-19 12:40:26.734000: AsyncInvoker: thread id 6
finished immediate server task.
omniORB: (3) 2026-01-19 12:40:26.734000: giopRendezvouser for
endpoint giop:tcp:10.0.2.15:54321 exit.
omniORB: (3) 2026-01-19 12:40:26.734000: No remaining rendezvousers.
omniORB: (3) 2026-01-19 12:40:26.734000: AsyncInvoker: thread id 3
finished immediate general task.
omniORB: (10) 2026-01-19 12:40:26.734000: Rendezvousers terminated.
omniORB: (10) 2026-01-19 12:40:26.734000: giopServer deactivated.
omniORB: (10) 2026-01-19 12:40:26.734000: Destruction of
POA(RootPOA) complete.
From looking at giopServer.cc, I believe the timing out as we wait for
the dedicated threads is what puts us into the `ZOMBIE` state.
Unfortunately, I don't have the CORBA chops to easily create a simple
reproduction of this for you. The assertion failure occurs during a
call to `orb->resolve_initial_references("RootPOA")`, after we have
shutdown and destroyed the ORB previously with a call to `orb->destroy()`.
I have done some debugging with Visual Studio and I believe the issue is
that, unlike on Linux, the winsock2 socket implementation does not mark
the file descriptor as ready to read when `shutdown()` is called[1].
This means that the worker threads timeout from their `select()` call,
rather than being woken like they do on Linux, and then the thread
waiting for the workers also times out (as both timeouts come from
ORBscanGranularity).
I suspect that reason we are hitting the `ZOMBIE` state is related to
the fact that I am starting and stopping the server so quickly. The
worker thread starts its `select()` call at around the same time as the
shutdown occurs and we start trying to join the worker threads. This
means if the worker thread times out, then the "main" thread also times
out. In a more realistic scenario, you would expect these two events to
be more staggered, and the main thread would not time out (I think).
However, as I am interested in speeding up tests, I would also like to
avoid the timeout on the worker threads all together if possible, as
well as, avoiding the `ZOMBIE` state.
As per the assertion failure message, is there something I am doing
wrong here when cleaning up the ORB on Windows, or is this a bug in
omniORB itself?
Thanks for your help,
Thomas Ives
[1] I have attached a small C++ program (sock_timeout.cpp) that
approximates the situation I find when restarting Tango and demonstrates
the difference in socket behavior on Windows and Linux.
--------------vl0PwTy7UwyqyPFpyoNxhwGz
Content-Type: text/x-c++src; charset=UTF-8; name="sock_timeout.cpp"
Content-Disposition: attachment; filename="sock_timeout.cpp"
Content-Transfer-Encoding: base64
I2lmZGVmIF9XSU4zMgovLyBjbC5leGUgL3N0ZDpjKysxNyB0ZXN0LmNwcAoKI2RlZmluZSBX
SU4zMl9MRUFOX0FORF9NRUFOCiNkZWZpbmUgVU5JQ09ERQojaW5jbHVkZSA8d2luZG93cy5o
PgojaW5jbHVkZSA8d2luc29jazIuaD4KI2RlZmluZSBTSFVUX1JEV1IgU0RfQk9USAojcHJh
Z21hIGNvbW1lbnQobGliLCAid3MyXzMyLmxpYiIpCgojaW5jbHVkZSA8c3RyaW5nPgojZWxz
ZQovLyBnKysgLXN0ZD1jKysxNyB0ZXN0LmNwcAoKI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4K
I2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1
ZGUgPHVuaXN0ZC5oPgojZW5kaWYKCiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjc3Rk
bGliPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPHRocmVhZD4KCiNpZmRlZiBfV0lO
MzIKc3RkOjpzdHJpbmcgdG9fc3RyaW5nKHN0ZDo6d3N0cmluZ192aWV3IHdzdHIpIHsKICBz
aXplX3QgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAgICAgLy8gQ29kZVBh
Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgLy8g
ZHdGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdzdHIuZGF0YSgp
LCAvLyBscFdpZGVDaGFyU3RyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3N0ci5zaXplKCksIC8vIGNjaFdpZGVDaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwgICAgIC8vIGxwTXVsdGlCeXRlU3RyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgIC8vIGNiTXVsdGlCeXRlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgICAgIC8vIGxwRGVmYXVs
dENoYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyICAgICAg
Ly8gbHBVc2VkRGVmYXVsdENoYXIKICApOwogIHN0ZDo6c3RyaW5nIHJlc3VsdChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbiksICdcMCcpOwoKICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VU
RjgsICAgICAgIC8vIENvZGVQYWdlCiAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAg
ICAgICAvLyBkd0ZsYWdzCiAgICAgICAgICAgICAgICAgICAgICB3c3RyLmRhdGEoKSwgICAv
LyBscFdpZGVDaGFyU3RyCiAgICAgICAgICAgICAgICAgICAgICB3c3RyLnNpemUoKSwgICAv
LyBjY2hXaWRlQ2hhcgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEoKSwgLy8g
bHBNdWx0aUJ5dGVTdHIKICAgICAgICAgICAgICAgICAgICAgIGxlbiwgICAgICAgICAgIC8v
IGNiTXVsdGlCeXRlCiAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAgICAgICAvLyBs
cERlZmF1bHRDaGFyCiAgICAgICAgICAgICAgICAgICAgICBudWxscHRyICAgICAgICAvLyBs
cFVzZWREZWZhdWx0Q2hhcgogICk7CgogIHJldHVybiByZXN1bHQ7Cn0KCnZvaWQgcGVycnJv
cihjb25zdCBjaGFyICpjdHgpIHsKICBEV09SRCBsYXN0X2Vycm9yID0gV1NBR2V0TGFzdEVy
cm9yKCk7CiAgTFBUU1RSIGVycm9yX3RleHQgPSBudWxscHRyOwogIEZvcm1hdE1lc3NhZ2Uo
Rk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9C
VUZGRVIgfAogICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNF
UlRTLCAgICAgICAgIC8vIGR3RmxhZ3MKICAgICAgICAgICAgICAgIG51bGxwdHIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBscFNvdXJjZQogICAgICAgICAgICAg
ICAgbGFzdF9lcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR3TWVz
c2FnZUlkCiAgICAgICAgICAgICAgICBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFO
R19ERUZBVUxUKSwgLy8gZHdMYW5ndWFnZUlkCiAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PExQVFNUUj4oJmVycm9yX3RleHQpLCAgICAgLy8gbHBCdWZmZXIKICAgICAgICAg
ICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBu
U2l6ZQogICAgICAgICAgICAgICAgbnVsbHB0ciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEFyZ3VtZW50cwogICk7CgogIGlmIChlcnJvcl90ZXh0ICE9IG51bGxw
dHIpIHsKICAgIHN0ZDo6ZnByaW50ZihzdGRlcnIsICIlczogJXNcbiIsIGN0eCwgdG9fc3Ry
aW5nKGVycm9yX3RleHQpLmNfc3RyKCkpOwogICAgTG9jYWxGcmVlKGVycm9yX3RleHQpOwog
IH0gZWxzZSB7CiAgICBzdGQ6OmZwcmludGYoc3RkZXJyLCAiJXM6IFVua25vd24gZXJyb3Jc
biIsIGN0eCk7CiAgfQp9CiNlbHNlCnVzaW5nIHN0ZDo6cGVycm9yOwojZW5kaWYKCmludCBt
YWluKCkgewojaWZkZWYgX1dJTjMyCiAgV09SRCByZXF1ZXN0ZWQgPSBNQUtFV09SRCgyLCAy
KTsKICBXU0FEQVRBIGRhdGE7CiAgV1NBU3RhcnR1cChyZXF1ZXN0ZWQsICZkYXRhKTsKI2Vu
ZGlmCgogIGludCBzb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKICBp
ZiAoc29jayA8IDApIHsKICAgIHBlcnJvcigibWFpbjo6c29ja2V0Iik7CiAgICBzdGQ6OmV4
aXQoRVhJVF9GQUlMVVJFKTsKICB9CgogIGludCB2YWwgPSAxOwogIGlmIChzZXRzb2Nrb3B0
KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKGNvbnN0IGNoYXIgKikoJnZhbCks
CiAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhbCkpIDwgMCkgewogICAgcGVycm9yKCJtYWlu
OjpzZXRzb2Nrb3B0Iik7CiAgICBzdGQ6OmV4aXQoRVhJVF9GQUlMVVJFKTsKICB9CgogIHNv
Y2thZGRyX2luIGFkZHI7CiAgc3RkOjptZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7
CiAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMo
MTIzNDUpOwogIGFkZHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNL
KTsKCiAgaWYgKGJpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2Yo
YWRkcikpIDwgMCkgewogICAgcGVycm9yKCJtYWluOjpiaW5kIik7CiAgICBzdGQ6OmV4aXQo
RVhJVF9GQUlMVVJFKTsKICB9CgogIGlmIChsaXN0ZW4oc29jaywgMSkgPCAwKSB7CiAgICBw
ZXJyb3IoIm1haW46Omxpc3RlbiIpOwogICAgc3RkOjpleGl0KEVYSVRfRkFJTFVSRSk7CiAg
fQoKICBzdGQ6OnRocmVhZCBjbGllbnR7W2FkZHJdKCkgewogICAgaW50IGZkID0gc29ja2V0
KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKICAgIGlmIChjb25uZWN0KGZkLCAoc3RydWN0
IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSkgPCAwKSB7CiAgICAgIHBlcnJvcigi
Y2xpZW50Ojpjb25uZWN0Iik7CiAgICAgIHN0ZDo6ZXhpdChFWElUX0ZBSUxVUkUpOwogICAg
fQogICAgc3RkOjpwcmludGYoImNsaWVudDogY29ubmVjdGVkXG4iKTsKCiAgICBjaGFyIGJ1
ZlsxMjhdOwogICAgaW50IHJ4ID0gcmVjdihmZCwgYnVmLCAxMjgsIDApOwoKICAgIHN0ZDo6
cHJpbnRmKCJjbGllbnQ6IHJlY3YnZCAlZFxuIiwgcngpOwogICAgaWYgKHJ4IDwgLTEpIHsK
ICAgICAgcGVycm9yKCJjbGllbnQ6OnJlY3YiKTsKICAgIH0KICB9fTsKCiAgaW50IGZkID0g
YWNjZXB0KHNvY2ssIG51bGxwdHIsIG51bGxwdHIpOwogIHN0ZDo6cHJpbnRmKCJtYWluOiBh
Y2NlcHRlZFxuIik7CiAgaWYgKGZkIDwgLTEpIHsKICAgIHBlcnJvcigibWFpbjo6YWNjZXB0
Iik7CiAgICBzdGQ6OmV4aXQoRVhJVF9GQUlMVVJFKTsKICB9CgogIHN0ZDo6dGhyZWFkIHdv
cmtlcntbZmRdKCkgewogICAgdGltZXZhbCB0ID0gezB9OwogICAgdC50dl9zZWMgPSA1OwoK
ICAgIGZkX3NldCBmZHMsIGVmZHM7CiAgICBGRF9aRVJPKCZmZHMpOwogICAgRkRfWkVSTygm
ZWZkcyk7CiAgICBGRF9TRVQoZmQsICZmZHMpOwogICAgRkRfU0VUKGZkLCAmZWZkcyk7CiAg
ICBzdGQ6OnByaW50Zigid29ya2VyOiBzZWxlY3RpbmdcbiIpOwogICAgaW50IHJjID0gc2Vs
ZWN0KGZkICsgMSwgJmZkcywgbnVsbHB0ciwgJmVmZHMsICZ0KTsKICAgIHN0ZDo6cHJpbnRm
KCJ3b3JrZXI6IHNlbGVjdGVkICVkXG4iLCByYyk7CiAgICBpZiAocmMgPCAwKSB7CiAgICAg
IHBlcnJvcigid29ya2VyOjpzZWxlY3QiKTsKICAgIH0gZWxzZSBpZiAocmMgPiAxKSB7CiAg
ICAgIHN0ZDo6cHJpbnRmKCJ3b3JrZXI6IHJlYWQgcmVhZHk/ICVzXG4iLAogICAgICAgICAg
ICAgICAgICAoRkRfSVNTRVQoZmQsICZmZHMpID8gInllcyIgOiAibm8iKSk7CiAgICAgIHN0
ZDo6cHJpbnRmKCJ3b3JrZXI6IGV4Y2VwdCByZWFkeT8gJXNcbiIsCiAgICAgICAgICAgICAg
ICAgIChGRF9JU1NFVChmZCwgJmVmZHMpID8gInllcyIgOiAibm8iKSk7CiAgICB9CiAgfX07
CgogIHN0ZDo6cHJpbnRmKCJtYWluOiBzaHV0dGluZyBkb3duXG4iKTsKICBzaHV0ZG93bihm
ZCwgU0hVVF9SRFdSKTsKICBzdGQ6OnByaW50ZigibWFpbjogc2h1dGRvd25cbiIpOwoKICBp
ZiAoY2xpZW50LmpvaW5hYmxlKCkpIHsKICAgIGNsaWVudC5qb2luKCk7CiAgfQoKICBpZiAo
d29ya2VyLmpvaW5hYmxlKCkpIHsKICAgIHdvcmtlci5qb2luKCk7CiAgfQp9Cg==
--------------vl0PwTy7UwyqyPFpyoNxhwGz
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
omniORB-list mailing list
[email protected]
https://www.omniorb-support.com/mailman/listinfo/omniorb-list
--------------vl0PwTy7UwyqyPFpyoNxhwGz--