How do I deal with "This thread has not been adopted" issue?

Viewed 33

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.

0 Answers
Related