I've stumbled upon a bug (Using the most recent ArcGIS SDK 200.5) which is very easy to reproduce.
Create a polyline / polygon, add it to a graphics overlay. After a few seconds, change the graphic's zIndex -> Crash.
// Add Scene
m_sceneView = findChild<SceneQuickView*>("sceneView");
Scene* scene = new Scene(BasemapStyle::ArcGISTopographic, this);
m_sceneView->setArcGISScene(scene);
// Add Graphics Overlay
auto graphicsOverlay = new GraphicsOverlay(this);
LayerSceneProperties props{SurfacePlacement::DrapedFlat};
graphicsOverlay->setSceneProperties(props);
m_sceneView->graphicsOverlays()->append(graphicsOverlay);
// Add Simple Polyline
SimpleLineSymbol* simpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle::Solid, QColor("blue"), 3.0f, this);
const SpatialReference spatialRef(SpatialReference::wgs84());
PolylineBuilder polylineBuilder(spatialRef);
polylineBuilder.addPoint(8.5417, 47.3769);
polylineBuilder.addPoint(8.4920, 47.3495);
auto line = new Graphic(polylineBuilder.toGeometry(), simpleLineSymbol, this);
graphicsOverlay->graphics()->append(line);
// After some seconds set Z Index of graphic
QTimer::singleShot(5000, this, [line]() {
line->setZIndex(1);
// EXCEPTION
});The call stack of the exception (Polyline):
runtimecore.dll!esri::map_renderer_3d::Polyline_sequence3d::update_vertex_origin(class std::shared_ptr<class esri::hal_3d::Vertex_datastore> const &,class osg::Vector3d const &,class osg::Vector3d const &)
runtimecore.dll!esri::map_renderer_3d::Sequence3d_group::finalize(void)
runtimecore.dll!std::_Func_impl_no_alloc<<lambda_2dee8c25f9c57f9a5ef5822a08bc3cf4>,void>::_Do_call()
runtimecore.dll!std::_Func_impl_no_alloc<<lambda_3fd62d7055a6d88d598cbfa1725bfcb4>,unsigned char,unsigned char>::_Do_call()
runtimecore.dll!pplx::details::_PPLTaskHandle<unsigned char,pplx::task<unsigned char>::_InitialTaskHandle<void,<lambda_2dee8c25f9c57f9a5ef5822a08bc3cf4>,pplx::details::_TypeSelectorNoAsync>,pplx::details::_TaskProcHandle>::invoke()
runtimecore.dll!pplx::details::_TaskProcHandle::_RunChoreBridge(void *)
runtimecore.dll!esri::common::concurrency::Core_scheduler::invoke_(struct esri::common::concurrency::Core_scheduler::Queued_proc *)
runtimecore.dll!esri::common::concurrency::Core_scheduler::bridge_proc_(void *)
runtimecore.dll!esri::common::concurrency::`anonymous namespace'::Scheduler_param::work_callback()
ntdll.dll!00007ff90f473730()
ntdll.dll!00007ff90f45d79a()
kernel32.dll!00007ff90e317344()
ntdll.dll!00007ff90f45cc91()
The call stack of the exception (Polygon)
runtimecore.dll!esri::map_renderer_3d::Polygon_base_sequence3d::update_vertex_origin(class std::shared_ptr<class esri::hal_3d::Vertex_datastore> const &,class osg::Vector3d const &,class osg::Vector3d const &)
runtimecore.dll!esri::map_renderer_3d::Sequence3d_group::finalize(void)
runtimecore.dll!std::_Func_impl_no_alloc<<lambda_2dee8c25f9c57f9a5ef5822a08bc3cf4>,void>::_Do_call()
runtimecore.dll!std::_Func_impl_no_alloc<<lambda_3fd62d7055a6d88d598cbfa1725bfcb4>,unsigned char,unsigned char>::_Do_call()
runtimecore.dll!pplx::details::_PPLTaskHandle<unsigned char,pplx::task<unsigned char>::_InitialTaskHandle<void,<lambda_2dee8c25f9c57f9a5ef5822a08bc3cf4>,pplx::details::_TypeSelectorNoAsync>,pplx::details::_TaskProcHandle>::invoke()
runtimecore.dll!pplx::details::_TaskProcHandle::_RunChoreBridge(void *)
runtimecore.dll!esri::common::concurrency::Core_scheduler::invoke_(struct esri::common::concurrency::Core_scheduler::Queued_proc *)
runtimecore.dll!esri::common::concurrency::Core_scheduler::bridge_proc_(void *)
runtimecore.dll!esri::common::concurrency::`anonymous namespace'::Scheduler_param::work_callback()
ntdll.dll!00007ff90f473730()
ntdll.dll!00007ff90f45d79a()
kernel32.dll!00007ff90e317344()
ntdll.dll!00007ff90f45cc91()