After getting everything to compile, I tried setting the backend to STDThread (WASM). I got a callstack like this
$std::__2::__throw_system_error(int, char const*) @ system_error.cpp:218
$std::__2::thread::thread<vtk::detail::smp::vtkSMPThreadPool::MakeThread()::$_0, void>(vtk::detail::smp::vtkSMPThreadPool::MakeThread()::$_0&&) @ thread.h:216
$vtk::detail::smp::vtkSMPThreadPool::MakeThread() @ vtkSMPThreadPool.cxx:342
$vtk::detail::smp::vtkSMPThreadPool::vtkSMPThreadPool() @ vtkSMPThreadPool.cxx:222
$vtk::detail::smp::vtkSMPThreadPool::GetInstance() @ vtkSMPThreadPool.cxx:424
$vtk::detail::smp::STDThread::GetThreadId() @ vtkSMPThreadLocalBackend.cxx:25
$vtk::detail::smp::STDThread::ThreadSpecific::GetStorage() @ vtkSMPThreadLocalBackend.cxx:177
$vtk::detail::smp::vtkSMPThreadLocalImpl<(vtk::detail::smp::BackendType)1, unsigned char>::Local() @ vtkSMPThreadLocalImpl.h:53
$vtk::detail::smp::vtkSMPThreadLocalAPI<unsigned char>::Local() @ vtkSMPThreadLocalAPI.h:103
$vtkSMPThreadLocal<unsigned char>::Local() @ vtkSMPThreadLocal.h:102
$vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>::Execute(int, int) @ vtkSMPTools.h:108
$void vtk::detail::smp::vtkSMPToolsImpl<(vtk::detail::smp::BackendType)1>::For<vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>>(int, int, int, vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>&) @ vtkSMPToolsImpl.txx:39
$void vtk::detail::smp::vtkSMPToolsAPI::For<vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>>(int, int, int, vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>&) @ vtkSMPToolsAPI.h:105
$vtk::detail::smp::vtkSMPTools_FunctorInternal<(anonymous namespace)::FindMaxCell, true>::For(int, int, int) @ vtkSMPTools.h:119
$void vtkSMPTools::For<(anonymous namespace)::FindMaxCell>(int, int, int, (anonymous namespace)::FindMaxCell&) @ vtkSMPTools.h:234
$vtkCellArray::GetMaxCellSize() @ vtkCellArray.cxx:1113
$vtkPolyData::GetMaxCellSize() @ vtkPolyData.cxx:596
$vtkCleanPolyData::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkCleanPolyData.cxx:167
$vtkPolyDataAlgorithm::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkPolyDataAlgorithm.cxx:76
$vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) @ vtkExecutive.cxx:723
$vtkDemandDrivenPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkDemandDrivenPipeline.cxx:450
$vtkCompositeDataPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkCompositeDataPipeline.cxx:151
$vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkDemandDrivenPipeline.cxx:249
$vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkStreamingDemandDrivenPipeline.cxx:336
$vtkDemandDrivenPipeline::UpdateData(int) @ vtkDemandDrivenPipeline.cxx:407
$vtkStreamingDemandDrivenPipeline::Update(int, vtkInformationVector*) @ vtkStreamingDemandDrivenPipeline.cxx:426
$vtkStreamingDemandDrivenPipeline::Update(int) @ vtkStreamingDemandDrivenPipeline.cxx:389
$vtkAlgorithm::Update(int) @ vtkAlgorithm.cxx:1523
$vtkAlgorithm::Update() @ vtkAlgorithm.cxx:1517
$vtkImplicitPolyDataDistance::SetInput(vtkPolyData*) @ vtkImplicitPolyDataDistance.cxx:46
$vtkDistancePolyDataFilter::GetPolyDataDistance(vtkPolyData*, vtkPolyData*) @ vtkDistancePolyDataFilter.cxx:84
$vtkDistancePolyDataFilter::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkDistancePolyDataFilter.cxx:53
$vtkPolyDataAlgorithm::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) @ vtkPolyDataAlgorithm.cxx:76
Could it be that I should set VTK_SMP_IMPLEMENTATION_TYPE
to STDThread
or something? I got the same backtrace. I compiled my WASM witth -sPTHREAD_POOL_SIZE=16
, where 16 is my current hardware concurrency. I will look into how the new threads are created - perhaps they try to set affinity (that will for crash)
Enable exceptions, I now see.
Uncaught std::__2::system_error: thread constructor failed: Resource temporarily unavailable
It could seem like all theads are already created and VTK cannot create more threads.