certi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [certi-dev] REGISTER_FEDERATION_SYNCHRONIZATION_POINT


From: Eric Noulard
Subject: Re: [certi-dev] REGISTER_FEDERATION_SYNCHRONIZATION_POINT
Date: Fri, 13 Nov 2009 18:02:32 +0100

2009/11/13 Yaomin Fu <address@hidden>:
> Hi,

Hi Yaomin,

> I have recently entered the CERti world but unfortunately fall into a pitfall 
> at
> the first step. Here is the story:
>
> I have downloaded the windows version 3.3.3 of CERti and then installed/built 
> it
> on a windows xp machine. I have coded a test driver to study how the certi
> works. What I did are:
>
> 1. Open a cmd window and launched the rtig
> 2. Open a second window and launched the test driver. I have noticed a rtia
> process is running.
> When invoking "Register Federation Synchronization Point" service call for a
> second federate, the service failed and kills the rtia process, disabling the
> communicatiaon between the federate and rti.

This is an error, the
"Register Federation Synchronization Point" should only be called by a SINGLE
federate. Then all federate will receive RTI  "Announce
Synchronization Point" callback.

> cause
> in rtig, upon receiving a REGISTER_FEDERATION_SYNCHRONIZATION_POINT message 
> the
> method invoking chain is:
> RTIG::processIncomingMessage()->RTIG::chooseProcessimgMethod()->RTIG::processRegisterSynchronization()->FederationList::manageSynchronization()->Federation::registerSynchronization()
>
> at the ending of the chain exception raised because of the synchronization 
> label
> already exists
> upon catching the exception the begining method of the chain, it echos back to
> rtia the message with the same type of the incomming message, that is
> REGISTER_FEDERATION_SYNCHRONIZATION_POINT

This path seems correct, it's the way error occuring on RTIg side goes
back to RTIA and
then Federate....

> in rtia, upon receiving the echo backed message from rtig, in the listening 
> loop
> in RTIA::execute() method, it is processed by
> RTIA::execute()->RTIA::processNetworkMessage().
> However, since the REGISTER_FEDERATION_SYNCHRONIZATION_POINT as a 
> NetworkMessage
> message is not handled in this method, an exception is raised to 
> RTIA::execute()
> which escalates the exception to RTIG::main(), leading to the end of the rtia
> process.

This is a real bug.
Would you be kind enough to file a bug report to
https://savannah.nongnu.org/bugs/?group=certi

(do not forget to register+login into Savannah [it's free] in order
have automatic follow-up)

> To me, anyone wants to use the REGISTER_FEDERATION_SYNCHRONIZATION_POINT 
> message
> for more than one federate will encounter the problem,

Nope because the error is raised because you misuse the corresponding
HLA service.
You may have a look at
http://cvs.savannah.gnu.org/viewvc/applications/HLA_TestsSuite/test_Sync.cc?root=certi&view=markup
which is an hopefully correct example of synchronization point usage.

> and wonder how comes this bug can survive till now?

May be because our test suite is not good enough :-)
For sure CERTI is "research" project so robust error handling wasn't a priority,
but for sure we will fix this (or integrate appropriate patch proposal).

The more bug report we have the less bugs will remain in next release.

Thank you very much for your report.


-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]