Hello Michael,
On 08/25/2011 08:21 AM, Michael Raab wrote:
> I think I solved this issue. Indeed the problem was that the OSGTreeRenderer
> calls win->frameInit() directly. In case of a ClusterWindow, frameInit means
> sending the sync packet from client to server. As ClusterWindow itself sends
> the packet before, the server is waiting for the swap command but receives
> the sync message. That caused the crash.
> As I derive from ClusterWindow I simply separated the sync code from the
> frameInit call and now it works. Nevertheless may be someone who knows the
> ShadowViewport code may have a look if directly calling win->frameInit()
> there is necessary.
glad to hear you found a solution/workaround. Sorry for being
unresponsive at the moment, but I have some work that is on a tight
deadline...
FWIW the frameInit call from the ShadowViewport looks suspicious,
normally it is a Window's responsibility to call frameInit before
passing control to the viewports - I'm not familiar enough with the
details of ShadowViewport to say if it needs special handling here.
> The bad news is I have another problem. I'm able turn on shadow rendering
> during run-time by creating new ShadowViewports. But when I try to turn
> shadow rendering off (by destroying the shadow viewports) the application
> crashes again. The crash arises when the sync arrives at the server side. The
> server tries to delete the appropriate shadow viewports. The shadow viewport
> destructor is called. The crash happens in function clearLights() line 1372
> (OSGShadowViewport.cpp)
>
> getRoot()->subChild(_lightCamBeacons[i]);
>
> Seems that either getRoot() or _lightCamBeacons[i] points to something wrong.
> Have someone ever tried to use ShadowViewports in cluster configurations (and
> tried to sync the destruction of such a viewport)?
my guess would be that root has already been set to NullFC by the sync,
it should be checked before being accessed in clearLights.
If _lightCamBeacons[i] does not point to something valid I'd say the
ShadowViewport is missing addRefCP calls when adding light beacons to
this vector.
Cheers,
Carsten
------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management
Up to 160% more powerful than alternatives and 25% more efficient.
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users