Hello Carsten,

the current approach in general seems to work well with StreamSock connection 
between client and servers.
The difficulties seem to appear when using Multicast. I was able to fix the 
problem of the server shutdown when trying to close the (Mcast) connection. The 
patch is attached, please have a look. Thanks.

So for now the server side seems to connect, run and close stable, but I still 
have a deadlock on client side after disconnecting a single server.

This is what I'm doing in the client:

VDTClusterWindow::frameInit()
{
   // local view
   osg::Window::frameInit();

   // sync remote aspects
   doSync();

   // remove useless render channels
   if(getNetwork()->getMainConnection())
   {
      while(!_channelsToDisconnect.empty())
      {
         VDTRenderChannelPtr c = _channelsToDisconnect.front();
         _channelsToDisconnect.pop_front();

        if(c->_conChannelId > -1)
        {
((GroupConnection*)getNetwork()->getMainConnection())->disconnect(c->_conChannelId);
              c->_conChannelId = -1;
        }
      }
        
      if(getChannels().empty())
         clearNetwork();
    }
}

I'm disconnecting all unnecessary render channels after syncing all changes to 
the servers. Then the frame becomes rendered. After that I try to swap in sync 
with the servers but the connection waits forever for the server signals. I 
have looked at the code for a long time but I have no clue why it should. May 
be it waits for the disconnected server...
This is the stack were all gets stuck:

        ntdll.dll!76f4f8c1()    
        [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder 
fehlen, keine Symbole geladen für ntdll.dll]        
        ntdll.dll!76f4f8c1()    
        mswsock.dll!74506f0f()  
        mswsock.dll!74506d30()  
        ntdll.dll!76f63ca3()    
        OSGSystem.dll!osg::DrawActionBase::stop(osg::Action::ResultE 
res=Continue)  Zeile 259   C++
        msvcp80.dll!std::basic_filebuf<char,std::char_traits<char> 
>::overflow(int _Meta=64)  Zeile 304 + 0x5 Bytes     C++
        ws2_32.dll!74c76a28()   
        OSGBase.dll!osg::SocketSelection::select(double 
duration=-1.0000000000000000)  Zeile 236        C++
        OSGBase.dll!osg::SocketSelection::select(double 
duration=-1.0000000000000000, osg::SocketSelection & result={...})  Zeile 265 + 
0x2d Bytes      C++
        OSGBase.dll!osg::GroupSockConnection::wait(double 
timeout=-1.0000000000000000)  Zeile 336 + 0x15 Bytes  C++
>       OSGBase.dll!osg::GroupMCastConnection::wait(double 
> timeout=-1.0000000000000000)  Zeile 205      C++
        OSGExt.dll!osg::VDTMultiDisplayWindow::clientSwap()  Zeile 546  C++
        OSGExt.dll!osg::VDTMultiDisplayWindow::render(osg::RenderActionBase * 
action=0x0c6b7958)  Zeile 303     C++

I don't know how the DrawAction stuff comes into the stack, maybe its a 
visualization bug in VS...

Best regards,
Michael
 
-------- Original-Nachricht --------
> Datum: Thu, 08 Sep 2011 10:18:16 -0500
> Von: Carsten Neumann <carsten_neum...@gmx.net>
> An: opensg-users@lists.sourceforge.net
> Betreff: Re: [Opensg-users]   OpenSG1.8       -       Disconnecting   
> ClusterWindow   and     ClusterServer

>       Hello Michael,
> 
> On 09/08/2011 10:01 AM, Michael Raab wrote:
> > when shutting down the server using multicast communication the app
> seems to stuck in the destructor of PointMCastConnection in line
> >
> > BaseThread::join(_recvQueueThread);
> >
> > When debugging, the recvThread of PointMCastConnection seems to be
> running when I try to stop the server. Somehow the join&  shutdown of this
> thread seems not to work as expected.
> 
> looking at PointMCastConnection::recvQueue() it should regularly test if 
> _recvQueueThreadStop is set and then leave the thread - can you check 
> if/were it blocks or why it does not reach that test?
> 
>       Cheers,
>               Carsten
> 
> ------------------------------------------------------------------------------
> Doing More with Less: The Next Generation Virtual Desktop 
> What are the key obstacles that have prevented many mid-market businesses
> from deploying virtual desktops?   How do next-generation virtual desktops
> provide companies an easier-to-deploy, easier-to-manage and more
> affordable
> virtual desktop model.http://www.accelacomm.com/jaw/sfnl/114/51426474/
> _______________________________________________
> Opensg-users mailing list
> Opensg-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensg-users

-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de

Attachment: OSGPointMCastConnection.cpp.patch
Description: Binary data

------------------------------------------------------------------------------
Why Cloud-Based Security and Archiving Make Sense
Osterman Research conducted this study that outlines how and why cloud
computing security and archiving is rapidly being adopted across the IT 
space for its ease of implementation, lower cost, and increased 
reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to