Page MenuHome

Smoke Crash with Cycles animation
Closed, ResolvedPublic

Description

System Information
Operating system: Win10 (Build 17763)
Graphics card: GTX1070

Blender Version
Broken: blender2.8, 2019-02-05, as found on the splash screen

Short description of error
Set "Cycles" as render engine and shading type set to "Rendered". Play an animation after that blender crashes.

Exact steps for others to reproduce the error
1.Open the attached file

  1. Set the shading to "Rendered"
  2. play animation

Event Timeline

Sebastian Parborg (zeddb) triaged this task as Needs Information from User priority.

Please retry with the most recent blender beta.

Hi,

the same with the latest Beta version from 03. March.

regards
Jaro

Hi again,
I could reproduce it with another computer. It´s a laptop HP Spectra x360, I7, 16Gb, 1TB SSD, Intel UHD Graphics 620 and latest version Blender 2019-03-04.

best regards
Jaro

Sebastian Parborg (zeddb) raised the priority of this task from Needs Information from User to Needs Triage by Developer.Mar 4 2019, 4:03 PM
Brecht Van Lommel (brecht) triaged this task as Confirmed, Medium priority.
Brecht Van Lommel (brecht) raised the priority of this task from Confirmed, Medium to Confirmed, High.Apr 1 2019, 1:42 PM

That is certainly a threading issue. I can have these two call stacks at the same time:

ccl::ImageManager::file_load_image<(OpenImageIO_v1_8::TypeDesc::BASETYPE)11, float, float>(ccl::ImageManager * const this, ccl::ImageManager::Image * img, ccl::ImageDataType type, int texture_limit, ccl::device_vector<float> & tex_img) (/home/jacques/blender-git/blender/intern/cycles/render/image.cpp:582)
ccl::ImageManager::device_load_image(ccl::ImageManager * const this, ccl::Device * device, ccl::Scene * scene, ccl::ImageDataType type, int slot, ccl::Progress * progress) (/home/jacques/blender-git/blender/intern/cycles/render/image.cpp:829)
std::__invoke_impl<void, void (ccl::ImageManager::*&)(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*), ccl::ImageManager*&, ccl::Device*&, ccl::Scene*&, ccl::ImageDataType&, unsigned long&, ccl::Progress*&>(void (ccl::ImageManager::*&)(ccl::ImageManager * const, ccl::Device *, ccl::Scene *, ccl::ImageDataType, int, ccl::Progress *) __f, ccl::ImageManager *& __t,  __args#0,  __args#1,  __args#2,  __args#3,  __args#4) (/usr/include/c++/7/bits/invoke.h:73)
std::__invoke<void (ccl::ImageManager::*&)(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*), ccl::ImageManager*&, ccl::Device*&, ccl::Scene*&, ccl::ImageDataType&, unsigned long&, ccl::Progress*&>(void (ccl::ImageManager::*&)(ccl::ImageManager * const, ccl::Device *, ccl::Scene *, ccl::ImageDataType, int, ccl::Progress *) __fn,  __args#0,  __args#1,  __args#2,  __args#3,  __args#4,  __args#5) (/usr/include/c++/7/bits/invoke.h:95)
std::_Bind<void (ccl::ImageManager::*(ccl::ImageManager*, ccl::Device*, ccl::Scene*, ccl::ImageDataType, unsigned long, ccl::Progress*))(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*)>::__call<void, int&&, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::tuple<int&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>)(std::_Bind<void (ccl::ImageManager::*(ccl::ImageManager*, ccl::Device*, ccl::Scene*, ccl::ImageDataType, long unsigned int, ccl::Progress*))(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*)> * const this, std::tuple<int&&> && __args) (/usr/include/c++/7/functional:467)
std::_Bind<void (ccl::ImageManager::*(ccl::ImageManager*, ccl::Device*, ccl::Scene*, ccl::ImageDataType, unsigned long, ccl::Progress*))(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*)>::operator()<int, void>(int&&)(std::_Bind<void (ccl::ImageManager::*(ccl::ImageManager*, ccl::Device*, ccl::Scene*, ccl::ImageDataType, long unsigned int, ccl::Progress*))(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*)> * const this,  __args#0) (/usr/include/c++/7/functional:551)
std::_Function_handler<void (int), std::_Bind<void (ccl::ImageManager::*(ccl::ImageManager*, ccl::Device*, ccl::Scene*, ccl::ImageDataType, unsigned long, ccl::Progress*))(ccl::Device*, ccl::Scene*, ccl::ImageDataType, int, ccl::Progress*)> >::_M_invoke(std::_Any_data const&, int&&)(const std::_Any_data & __functor,  __args#0) (/usr/include/c++/7/bits/std_function.h:316)
std::function<void (int)>::operator()(int) const(const std::function<void(int)> * const this,  __args#0) (/usr/include/c++/7/bits/std_function.h:706)
ccl::TaskPool::wait_work(ccl::TaskPool * const this, ccl::TaskPool::Summary * stats) (/home/jacques/blender-git/blender/intern/cycles/util/util_task.cpp:98)
ccl::ImageManager::device_load_builtin(ccl::ImageManager * const this, ccl::Device * device, ccl::Scene * scene, ccl::Progress & progress) (/home/jacques/blender-git/blender/intern/cycles/render/image.cpp:1074)
ccl::BlenderSession::builtin_images_load(ccl::BlenderSession * const this) (/home/jacques/blender-git/blender/intern/cycles/blender/blender_session.cpp:1451)
ccl::BlenderSession::synchronize(ccl::BlenderSession * const this, BL::Depsgraph & b_depsgraph_) (/home/jacques/blender-git/blender/intern/cycles/blender/blender_session.cpp:897)
ccl::sync_func(PyObject * args) (/home/jacques/blender-git/blender/intern/cycles/blender/blender_python.cpp:399)
libpython3.7m.so.1.0!_PyMethodDef_RawFastCallKeywords (Unknown Source:0)
libpython3.7m.so.1.0!_PyCFunction_FastCallKeywords (Unknown Source:0)
libpython3.7m.so.1.0!_PyEval_EvalFrameDefault (Unknown Source:0)
pydevd_frame_evaluator.cpython-37m-x86_64-linux-gnu.so!__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval(PyFrameObject * __pyx_v_frame_obj, int __pyx_v_exc) (/io/ptvsd/src/ptvsd/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c:7198)
libpython3.7m.so.1.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpython3.7m.so.1.0!_PyEval_EvalFrameDefault (Unknown Source:0)
pydevd_frame_evaluator.cpython-37m-x86_64-linux-gnu.so!__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval(PyFrameObject * __pyx_v_frame_obj, int __pyx_v_exc) (/io/ptvsd/src/ptvsd/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c:7198)

and

ccl::TextureInterpolator<float>::interp_3d_linear(float z, float y, float x, const ccl::TextureInfo & info) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h:338)
ccl::TextureInterpolator<float>::interp_3d(ccl::InterpolationType interp, float z, float y, float x, const ccl::TextureInfo & info) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h:461)
ccl::kernel_tex_image_interp_3d(ccl::KernelGlobals * kg, int id, float x, float y, float z, ccl::InterpolationType interp) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h:510)
ccl::volume_attribute_float(ccl::KernelGlobals * kg, const ccl::ShaderData * sd, const ccl::AttributeDescriptor desc) (/home/jacques/blender-git/blender/intern/cycles/kernel/geom/geom_volume.h:57)
ccl::primitive_volume_attribute_float(const ccl::AttributeDescriptor desc, const ccl::ShaderData * sd, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/kernel/geom/geom_primitive.h:86)
ccl::svm_node_principled_volume(ccl::KernelGlobals * kg, ccl::ShaderData * sd, float * stack, ccl::uint4 node, ccl::ShaderType shader_type, int path_flag, int * offset) (/home/jacques/blender-git/blender/intern/cycles/kernel/svm/svm_closure.h:1062)
ccl::svm_eval_nodes(ccl::KernelGlobals * kg, ccl::ShaderData * sd, ccl::PathState * state, ccl::ShaderType type, int path_flag) (/home/jacques/blender-git/blender/intern/cycles/kernel/svm/svm.h:357)
ccl::shader_eval_volume(int path_flag, ccl::VolumeStack * stack, ccl::PathState * state, ccl::ShaderData * sd, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_shader.h:1318)
ccl::volume_shader_sample(ccl::VolumeShaderCoefficients * coeff, ccl::float3 P, ccl::PathState * state, ccl::ShaderData * sd, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_volume.h:67)
ccl::kernel_volume_decoupled_record(ccl::KernelGlobals * kg, ccl::PathState * state, ccl::Ray * ray, ccl::ShaderData * sd, ccl::VolumeSegment * segment, bool heterogeneous) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_volume.h:806)
ccl::kernel_path_volume(ccl::PathRadiance * L, ccl::ShaderData * emission_sd, bool hit, ccl::Intersection * isect, ccl::float3 * throughput, ccl::Ray * ray, ccl::PathState * state, ccl::ShaderData * sd, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_path.h:184)
ccl::kernel_path_integrate(ccl::ShaderData * emission_sd, float * buffer, ccl::PathRadiance * L, ccl::Ray * ray, ccl::float3 throughput, ccl::PathState * state, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_path.h:541)
ccl::kernel_path_trace(ccl::KernelGlobals * kg, float * buffer, int sample, int x, int y, int offset, int stride) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernel_path.h:673)
ccl::kernel_cpu_avx2_path_trace(ccl::KernelGlobals * kg, float * buffer, int sample, int x, int y, int offset, int stride) (/home/jacques/blender-git/blender/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h:90)
ccl::CPUDevice::path_trace(ccl::CPUDevice * const this, ccl::DeviceTask & task, ccl::RenderTile & tile, ccl::KernelGlobals * kg) (/home/jacques/blender-git/blender/intern/cycles/device/device_cpu.cpp:845)
ccl::CPUDevice::thread_render(ccl::CPUDevice * const this, ccl::DeviceTask & task) (/home/jacques/blender-git/blender/intern/cycles/device/device_cpu.cpp:927)
ccl::CPUDevice::thread_run(ccl::CPUDevice * const this, ccl::DeviceTask * task) (/home/jacques/blender-git/blender/intern/cycles/device/device_cpu.cpp:506)
std::__invoke_impl<void, void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&>(void (ccl::CPUDevice::*&)(ccl::CPUDevice * const, ccl::DeviceTask *) __f, ccl::CPUDevice *& __t,  __args#0) (/usr/include/c++/7/bits/invoke.h:73)
std::__invoke<void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&>(void (ccl::CPUDevice::*&)(ccl::CPUDevice * const, ccl::DeviceTask *) __fn,  __args#0,  __args#1) (/usr/include/c++/7/bits/invoke.h:95)
std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)>::__call<void, int&&, 0ul, 1ul>(std::tuple<int&&>&&, std::_Index_tuple<0ul, 1ul>)(std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)> * const this, std::tuple<int&&> && __args) (/usr/include/c++/7/functional:467)
std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)>::operator()<int, void>(int&&)(std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)> * const this,  __args#0) (/usr/include/c++/7/functional:551)
std::_Function_handler<void (int), std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)> >::_M_invoke(std::_Any_data const&, int&&)(const std::_Any_data & __functor,  __args#0) (/usr/include/c++/7/bits/std_function.h:316)
std::function<void (int)>::operator()(int) const(const std::function<void(int)> * const this,  __args#0) (/usr/include/c++/7/bits/std_function.h:706)
ccl::TaskScheduler::thread_run(int thread_id) (/home/jacques/blender-git/blender/intern/cycles/util/util_task.cpp:396)
std::__invoke_impl<void, void (*&)(int), int&>(void (*&)(int) __f,  __args#0) (/usr/include/c++/7/bits/invoke.h:60)
std::__invoke<void (*&)(int), int&>(void (*&)(int) __fn,  __args#0) (/usr/include/c++/7/bits/invoke.h:95)
std::_Bind<void (*(int))(int)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)(std::_Bind<void (*(int))(int)> * const this, std::tuple<> && __args) (/usr/include/c++/7/functional:467)
std::_Bind<void (*(int))(int)>::operator()<, void>()(std::_Bind<void (*(int))(int)> * const this) (/usr/include/c++/7/functional:551)
std::_Function_handler<void (), std::_Bind<void (*(int))(int)> >::_M_invoke(std::_Any_data const&)(const std::_Any_data & __functor) (/usr/include/c++/7/bits/std_function.h:316)
std::function<void ()>::operator()() const(const std::function<void()> * const this) (/usr/include/c++/7/bits/std_function.h:706)
ccl::thread::run(void * arg) (/home/jacques/blender-git/blender/intern/cycles/util/util_thread.cpp:52)
std::__invoke_impl<void*, void* (*)(void*), ccl::thread*>(void *(*&&)(void *) __f,  __args#0) (/usr/include/c++/7/bits/invoke.h:60)
std::__invoke<void* (*)(void*), ccl::thread*>(void *(*&&)(void *) __fn,  __args#0) (/usr/include/c++/7/bits/invoke.h:96)
std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> > * const this) (/usr/include/c++/7/thread:234)
std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> >::operator()(std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> > * const this) (/usr/include/c++/7/thread:243)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> > > * const this) (/usr/include/c++/7/thread:186)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-OTsEL5/glibc-2.27/nptl/pthread_create.c:463)
libc.so.6!clone() (/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/x86_64/clone.S:95)

It is trying to evaluate the texture after it has been freed.

I'm not sure at which level there should be a lock. It seems like it should not be possible to call ccl::BlenderSession::synchronize while being in ccl::CPUDevice::thread_render. Could be totally wrong of course.