My old CPlusPlus project which uses VTK to display 3D scene worked on web page as wasm file.
But after upgrading emsdk and compiling the multithreaded version of VTK, I always get the following error on the web page.
Uncaught (in promise) RuntimeError: table index is out of bounds at vtkInteractorStartCallBack.wasm:0x397bc5 at vtkInteractorStartCallBack.wasm:0x2d2000 at vtkInteractorStartCallBack.wasm:0x1a2309 at vtkInteractorStartCallBack.wasm:0x1a2560 at vtkInteractorStartCallBack.wasm:0x14fd3 at callRuntimeCallbacks (vtkInteractorStartCallBack.js:8:28371) at initRuntime (vtkInteractorStartCallBack.js:8:10858) at doRun (vtkInteractorStartCallBack.js:8:328969) at run (vtkInteractorStartCallBack.js:8:329367) at runCaller (vtkInteractorStartCallBack.js:8:328654) :4001/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (File not found)
I test VTK example at vtk/src/Examples/Emscripten/Cxx/Cone from GitHub.
But the similar error showed after I run it on browser.
Cone.wasm:0x34443d Uncaught (in promise) RuntimeError: table index is out of bounds at vtkBuffer<int>::Reallocate(int) (Cone.wasm:0x34443d) at vtkAOSDataArrayTemplate<int>::ReallocateTuples(int) (Cone.wasm:0x344306) at vtkGenericDataArray<vtkAOSDataArrayTemplate<int>, int>::Resize(int) (Cone.wasm:0x287e47) at vtkCellArray::VisitState<vtkTypeInt32Array>::VisitState() (Cone.wasm:0x138a6b) at vtkCellArray::New() (Cone.wasm:0x138c1c) at _GLOBAL__sub_I_vtkPolyData.cxx (Cone.wasm:0x1e593c) at __wasm_call_ctors (Cone.wasm:0x16930) at callRuntimeCallbacks (Cone.js:727:26) at initRuntime (Cone.js:350:3) at doRun (Cone.js:11331:5)
I modified the file CMakeLists.txt and tried many times, but the result is same.
Finally, I changed the VTK_DIR from the multithreaded version path to the normal version one because my project has not threads setting. It works!
➜ build_wasm git:(v9.1.0) ✗ emcmake cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVTK_DIR=/mnt/d/Libs/vtk/build_thread ../ (crash!) ➜ build_wasm git:(v9.1.0) ✗ emcmake cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVTK_DIR=/mnt/d/Libs/vtk/build_wasm ../ (good!)
Test project had been uploaded to GitHub: