I have been working on a GUI which I created in Python using Open3D facilities and have been using multiprocessing to manage the function of my GUI. The GUI works, but after some time, or when I press the buttons, I get the following error:
N5utils17PreconditionPanicE
in JobSystem::ThreadState &utils::JobSystem::getState():263
reason: This thread has not been adopted.
#0 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd08339e7b0 _ZN5utils6TPanicINS_17PreconditionPanicEE5panicEPKcS4_iS4_z + 336
#1 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd08339c228 _ZN5utils9JobSystem8getStateEv + 280
#2 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd08339c257 _ZN5utils9JobSystem12runAndRetainEPNS0_3JobEj + 23
#3 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0832f264c (null) + 140533530830412
#4 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0832de1f0 (null) + 140533530747376
#5 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0832ddd48 (null) + 140533530746184
#6 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd082661510 _ZN6open3d13visualization9rendering13FilamentScene4DrawERN8filament8RendererE + 80
#7 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd08264e967 _ZN6open3d13visualization9rendering16FilamentRenderer4DrawEv + 71
#8 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0826ac8da _ZN6open3d13visualization3gui6Window8DrawOnceEb + 1962
#9 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0826acb64 _ZN6open3d13visualization3gui6Window6OnDrawEv + 36
#10 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd082c652b8 _glfwPlatformPollEvents + 1416
#11 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd0826237d3 _ZN6open3d13visualization10Visualizer10PollEventsEv + 211
#12 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd08219e646 (null) + 140533512660550
#13 pybind.cpython-38-x86_64-linux-gnu.so 0x7fd081e46c00 (null) + 140533509155840
#14 python3 0x5f6929 PyCFunction_Call + 89
#15 python3 0x5f74f6 _PyObject_MakeTpCall + 662
#16 python3 0x50c383 (null) + 5292931
#17 python3 0x570b26 _PyEval_EvalFrameDefault + 22406
terminate called after throwing an instance of 'utils::PreconditionPanic'
Also, does the .join() method needs to be called immediately after the .start() method?
Finally, does anyone have any good resources for knowing the basics of multiprocessing in Python? I mean, of course one google search could find me some, but something that you have saved as you found it to be the best among the resources that you read.