RenderKit / ospray

An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
http://ospray.org
Apache License 2.0
997 stars 182 forks source link

Segfault related to bsdf #403

Closed paulmelis closed 4 years ago

paulmelis commented 4 years ago

This looks similar to what 8e3f9a661b18c0ad9fdfaf304a0f4492adfc94ae fixed, a segfault deep in the shading code:

0x00007ffff715a1f7 in getN___un_3C_s_5B__c_vyBSDF_5D__3E_avx2 (bsdf=<optimized out>) at /home/paulm/c/ospray-git/ospray/render/pathtracer/bsdfs//BSDF.ih:84
84    return bsdf->frame->vz;
(gdb) bt
#0  0x00007ffff715a1f7 in getN___un_3C_s_5B__c_vyBSDF_5D__3E_avx2 (bsdf=<optimized out>) at /home/paulm/c/ospray-git/ospray/render/pathtracer/bsdfs//BSDF.ih:84
#1  updateAuxilliaryData___REFs_5B_vyPathState_5D_REFs_5B__c_vyPathVertex_5D_REFs_5B_vyScreenSample_5D_avx2 (pathState=..., pathVertex=..., sample=...) at PathTracerUtil.ih:45
#2  samplePath___REFs_5B__c_vyPathContext_5D_REFs_5B_vyPathState_5D_REFs_5B_vyRay_5D_REFs_5B_vyScreenSample_5D_avx2 (pathContext=..., pathState=..., ray=..., sample=...) at PathSampler.ispc:211
#3  0x00007ffff712f95a in PathTraceIntegrator_Li___un_3C_s_5B__c_unPathTracer_5D__3E_un_3C_s_5B__c_unWorld_5D__3E_un_3C_s_5B_unFrameBuffer_5D__3E_CvyuCvyuREFs_5B__c_vyvec2f_5D_REFs_5B_vyRay_5D_un_3C_s_5B_vyLDSampler_5D__3E_un_3C_s_5B_vyRandomSampler_5D__3E_avx2 (self=<optimized out>, world=<optimized out>, fb=<optimized out>, ix=..., iy=..., pixel=..., ray=..., ldSampler=0x7fffeafab480, randomSampler=0x7fffeafab040) at PathTracer.ispc:64
#4  0x00007ffff713196d in PathTracer_renderPixel___un_3C_s_5B_unPathTracer_5D__3E_un_3C_s_5B_unFrameBuffer_5D__3E_un_3C_s_5B_unCamera_5D__3E_un_3C_s_5B_unWorld_5D__3E_CvyuCvyuCvyuavx2 (self=<optimized out>, 
    fb=<optimized out>, camera=<optimized out>, world=<optimized out>, ix=..., iy=..., accumID=...) at PathTracer.ispc:113
#5  PathTracer_renderTileJob___un_3C_s_5B_unPathTracer_5D__3E_un_3C_s_5B_unFrameBuffer_5D__3E_un_3C_s_5B_unCamera_5D__3E_un_3C_s_5B_unWorld_5D__3E_REFs_5B_unTile_5D_uniavx2 (self=<optimized out>, fb=<optimized out>, 
    camera=<optimized out>, world=<optimized out>, tile=..., taskIndex=<optimized out>) at PathTracer.ispc:157
#6  0x00007ffff70ac8bb in Renderer_renderTile () from /home/paulm/software/ospray-superbuild-debug-git/lib/libospray_module_ispc.so
#7  0x00007ffff6fe77fe in ospray::Renderer::renderTile (this=0x5555555941b0, fb=0x555555596990, camera=0x555555596680, world=0x555555597300, perFrameData=0x0, tile=..., jobID=33)
    at /home/paulm/c/ospray-git/ospray/render/Renderer.cpp:82
#8  0x00007ffff6fe462f in ospray::LocalTiledLoadBalancer::<lambda(int)>::<lambda(size_t)>::operator()(size_t) const (__closure=0x7fffeafacad0, tIdx=33) at /home/paulm/c/ospray-git/ospray/render/LoadBalancer.cpp:59
#9  0x00007ffff6fe62f6 in tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>::operator()(const tbb::blocked_range<unsigned long> &) const (this=0x7fffebdb7560, r=...) at /home/paulm/software/ospray-superbuild-debug-git/include/tbb/parallel_for.h:177
#10 0x00007ffff6fe605b in tbb::interface9::internal::start_for<tbb::blocked_range<long unsigned int>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>, const tbb::auto_partitioner>::run_body(tbb::blocked_range<unsigned long> &) (this=0x7fffebdb7540, r=...)
    at /home/paulm/software/ospray-superbuild-debug-git/include/tbb/parallel_for.h:115
#11 0x00007ffff6fe5cf5 in tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<long unsigned int>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>, const tbb::auto_partitioner>, tbb::blocked_range<long unsigned int> >(tbb::interface9::internal::start_for<tbb::blocked_range<long unsigned int>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>, const tbb::auto_partitioner> &, tbb::blocked_range<unsigned long> &) (
    this=0x7fffebdb7578, start=warning: RTTI symbol not found for class 'tbb::interface9::internal::start_for<tbb::blocked_range<unsigned long>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::{lambda(int)#1}::operator()(int) const::{lambda(unsigned long)#1}, unsigned long>, tbb::auto_partitioner const>'
..., range=...) at /home/paulm/software/ospray-superbuild-debug-git/include/tbb/partitioner.h:438
#12 0x00007ffff6fe57dc in tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<long unsigned int>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>, const tbb::auto_partitioner>, tbb::blocked_range<long unsigned int> >(tbb::interface9::internal::start_for<tbb::blocked_range<long unsigned int>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::<lambda(int)>::<lambda(size_t)>, long unsigned int>, const tbb::auto_partitioner> &, tbb::blocked_range<unsigned long> &) (this=0x7fffebdb7578, start=warning: RTTI symbol not found for class 'tbb::interface9::internal::start_for<tbb::blocked_range<unsigned long>, tbb::internal::parallel_for_body<ospray::LocalTiledLoadBalancer::renderFrame(ospray::FrameBuffer*, ospray::Renderer*, ospray::Camera*, ospray::World*)::{lambda(int)#1}::operator()(int) const::{lambda(unsigned long)#1}, unsigned long>, tbb::auto_partitioner const>'
..., range=...)
...

Found this on a dataset that I can't share and was hard to reproduce apart from that. But with a minimal subset of the data (9 spheres) it still happens: bug.zip

paulmelis commented 4 years ago

Oh, and when the "color" array isn't set on GeometricModel the bug doesn't happen

jeffamstutz commented 4 years ago

This is fixed with c047edceb.