<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>Hi,</div>
<div><br>
</div>
<div>I have an application that takes a snapshot of the scene using setPostDrawCallback(capture), which gets the image and writes it to a file but on completion setting setPostDrawCallback(NULL) crashes on the next expose.</div>
<div><br>
</div>
<pre>#4  0x00007f681bf08520 in <signal handler called> () at /lib/x86_64-linux-gnu/libc.so.6</pre>
<pre>#5  0x00007f681db87260 in osgUtil::RenderStage::draw(osg::RenderInfo&, osgUtil::RenderLeaf*&) () at /usr/local/lib/libosgUtil.so.161</pre>
<pre>#6  0x00007f681db92f2c in osgUtil::SceneView::draw() () at /usr/local/lib/libosgUtil.so.161</pre>
<pre>#7  0x00007f681d69b6b6 in osgViewer::Renderer::cull_draw() () at /usr/local/lib/libosgViewer.so.161</pre>
<pre>#8  0x00007f681edaa479 in osg::GraphicsContext::runOperations() () at /usr/local/lib/libosg.so.161</pre>
<pre>#9  0x00007f681d6d5bfd in osgViewer::ViewerBase::renderingTraversals() () at /usr/local/lib/libosgViewer.so.161</pre>
<pre>#10 0x00007f6835a03b37 in OSGGTKDrawingArea::_expose_event(_GtkGLArea*, _GdkGLContext*) (this=0x5575767c6450, area=0x557576c4c2e0, context=0x557576c50580) at osggtkdrawingarea.cpp:83</pre>
<div><br>
</div>
<div><br>
</div>
<div>Even if I do nothing in the capture callback it still crashes.</div>
<div><br>
</div>
<div>I've looked through the OSG examples but nothing sets the postdraw or finaldraw callbacks to NULL, both produce the same crash.</div>
<div><br>
</div>
<div>This code has remained unchanged for 10 years but wasn't being used so the crash only came to light recently.</div>
<div><br>
</div>
<div>I'm using OSG I built from source but I also tried it with libopenscenegraph161/jammy on Ubuntu and it still crashes - but strangely doesn't render an image but that's a problem for another day.</div>
<div><br>
</div>
<pre>ldd ./qd3d/nyb/.libs/nyb-2108.1.1 | grep osg</pre>
<pre>     libosg.so.161 => /usr/local/lib/libosg.so.161 (0x00007faab9200000)</pre>
<pre>     libosgDB.so.161 => /usr/local/lib/libosgDB.so.161 (0x00007faab8e00000)</pre>
<pre>     libosgGA.so.161 => /usr/local/lib/libosgGA.so.161 (0x00007faab8a00000)</pre>
<pre>     libosgText.so.161 => /usr/local/lib/libosgText.so.161 (0x00007faab8600000)</pre>
<pre>     libosgUtil.so.161 => /usr/local/lib/libosgUtil.so.161 (0x00007faab8000000)</pre>
<pre>     libosgViewer.so.161 => /usr/local/lib/libosgViewer.so.161 (0x00007faab7c00000)</pre>
<div><br>
</div>
<div>Any ideas?</div>
<div><br>
</div>
<div>Cheers,</div>
<div><br>
</div>
<div><span></span></div>
</body>
</html>