<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi<br>
<br>
I have been using omniORB 4.2.3 and recently while running my
application under valgrind<br>
I have observed the error which suggests that under some conditions
the giopServer class <br>
uses the "pd_dying" attribute of the connection object that has
already been deleted.<br>
Did anyone see that behaviour already? Any ideas on how that could
be fixed?<br>
<br>
Cheers,<br>
Serguei<br>
<br>
Here is the valgrind report:<br>
<blockquote>==32583== Thread 3:<br>
==32583== Invalid read of size 1<br>
==32583== at 0x7A3ABDA:
omni::giopServer::notifyRzReadable(omni::giopConnection*, bool)
(giopServer.cc:990)<br>
==32583== by 0x7A975B8:
omni::tcpEndpoint::notifyReadable(omni::SocketHolder*)
(tcpEndpoint.cc:373)<br>
==32583== by 0x79F9DBC: sendNotifications
(SocketCollection.h:244)<br>
==32583== by 0x79F9DBC: omni::SocketCollection::Select()
(SocketCollection.cc:347)<br>
==32583== by 0x7A97520:
omni::tcpEndpoint::AcceptAndMonitor(void (*)(void*,
omni::giopConnection*), void*) (tcpEndpoint.cc:314)<br>
==32583== by 0x7A375A8: omni::giopRendezvouser::execute()
(giopRendezvouser.cc:58)<br>
==32583== by 0x7A4AFEF: omniAsyncWorker::real_run()
(invoker.cc:578)<br>
==32583== by 0x7A4ABA8: omniAsyncWorker::mid_run()
(invoker.cc:511)<br>
==32583== by 0x7A4BF5E: omniAsyncWorker::run(void*)
(invoker.cc:126)<br>
==32583== by 0x7D04A87: omni_thread_wrapper (posix.cc:459)<br>
==32583== by 0x7F0FE24: start_thread (in
/usr/lib64/libpthread-2.17.so)<br>
==32583== by 0x9986BAC: clone (in /usr/lib64/libc-2.17.so)<br>
==32583== Address 0x2846060c is 12 bytes inside a block of size
112 free'd<br>
==32583== at 0x4C2B1CD: operator delete(void*)
(vg_replace_malloc.c:576)<br>
==32583== by 0x7A251E5:
omni::giopConnection::decrRefCount(bool) (giopEndpoint.cc:241)<br>
==32583== by 0x7A3E146:
omni::giopStrand::deleteStrandAndConnection(bool)
(giopStrand.cc:264)<br>
==32583== by 0x7A3AD23:
omni::giopServer::connectionState::~connectionState()
(giopServer.cc:702)<br>
==32583== by 0x7A3BEAE:
omni::giopServer::removeConnectionAndWorker(omni::giopWorker*)
(giopServer.cc:1090<br>
==32583== by 0x7A3C134:
omni::giopServer::notifyWkDone(omni::giopWorker*, bool)
(giopServer.cc:1102)<br>
==32583== by 0x7A43FC4: omni::giopWorker::execute()
(giopWorker.cc:83)<br>
==32583== by 0x7A4AFEF: omniAsyncWorker::real_run()
(invoker.cc:578)<br>
==32583== by 0x7A4BFBF:
omniAsyncPoolServer::workerRun(omniAsyncWorker*) (invoker.cc:328)<br>
==32583== by 0x7A4ABA8: omniAsyncWorker::mid_run()
(invoker.cc:511)<br>
==32583== by 0x7A4BF5E: omniAsyncWorker::run(void*)
(invoker.cc:126)<br>
==32583== by 0x7D04A87: omni_thread_wrapper (posix.cc:459)<br>
==32583== by 0x7F0FE24: start_thread (in
/usr/lib64/libpthread-2.17.so)<br>
==32583== by 0x9986BAC: clone (in /usr/lib64/libc-2.17.so)<br>
==32583== Block was alloc'd at<br>
==32583== at 0x4C2A243: operator new(unsigned long)
(vg_replace_malloc.c:334)<br>
==32583== by 0x7A97539:
omni::tcpEndpoint::AcceptAndMonitor(void (*)(void*,
omni::giopConnection*), void*) (tcpEndpoint.cc:316)<br>
==32583== by 0x7A375A8: omni::giopRendezvouser::execute()
(giopRendezvouser.cc:58)<br>
==32583== by 0x7A4AFEF: omniAsyncWorker::real_run()
(invoker.cc:578)<br>
==32583== by 0x7A4ABA8: omniAsyncWorker::mid_run()
(invoker.cc:511)<br>
==32583== by 0x7A4BF5E: omniAsyncWorker::run(void*)
(invoker.cc:126)<br>
==32583== by 0x7D04A87: omni_thread_wrapper (posix.cc:459)<br>
==32583== by 0x7F0FE24: start_thread (in
/usr/lib64/libpthread-2.17.so)<br>
==32583== by 0x9986BAC: clone (in /usr/lib64/libc-2.17.so)<br>
</blockquote>
</body>
</html>