perfectly-balanced / PathBench

Benchmarking Platform for Classic and Learned Path Planning Algorithms.
Other
91 stars 18 forks source link

Obscure lock error #55

Open judicaelclair opened 3 years ago

judicaelclair commented 3 years ago

Error

python3: built1.10/include/mutexPosixImpl.I:120: void ReMutexPosixImpl::unlock(): Assertion `result == 0' failed.

Core Dump

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fe77bdb7859 in __GI_abort () at abort.c:79
#2  0x00007fe77bdb7729 in __assert_fail_base (fmt=0x7fe77bf4d588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fe7798749aa "result == 0", file=0x7fe779873f98 "built1.10/include/mutexPosixImpl.I", line=120, function=<optimised out>) at assert.c:92
#3  0x00007fe77bdc8f36 in __GI___assert_fail (assertion=0x7fe7798749aa "result == 0", file=0x7fe779873f98 "built1.10/include/mutexPosixImpl.I", line=120, function=0x7fe77987e000 "void ReMutexPosixImpl::unlock()") at assert.c:101
#4  0x00007fe779055d62 in  () at /usr/local/lib/python3.8/dist-packages/panda3d/libpanda.so.1.10
#5  0x00007fe77907b9c0 in GeomVertexArrayDataHandle::~GeomVertexArrayDataHandle() () at /usr/local/lib/python3.8/dist-packages/panda3d/libpanda.so.1.10
#6  0x00007fe77a7dc58a in  () at /usr/local/lib/python3.8/dist-packages/panda3d/core.cpython-38-x86_64-linux-gnu.so
#7  0x00007fe77a8ed530 in  () at /usr/local/lib/python3.8/dist-packages/panda3d/core.cpython-38-x86_64-linux-gnu.so
#8  0x00000000005d3234 in  ()
#9  0x00000000005a73ed in  ()
#10 0x00000000005eca2b in  ()
#11 0x00000000005d3234 in  ()
#12 0x00000000005a44d2 in  ()
#13 0x00000000004ef5d8 in  ()
#14 0x00000000005fc677 in  ()
#15 0x000000000053bcaa in _PyObject_GC_New ()
#16 0x00000000005d1792 in  ()
#17 0x00000000005c11d6 in PyObject_SetAttr ()
#18 0x000000000056b9aa in _PyEval_EvalFrameDefault ()
--Type <RET> for more, q to quit, c to continue without paging--c
#19 0x000000000056955a in _PyEval_EvalCodeWithName ()
#20 0x00000000005f7323 in _PyFunction_Vectorcall ()
#21 0x000000000059c654 in  ()
#22 0x00000000005a7bf7 in  ()
#23 0x00000000005f3f3e in PyObject_Call ()
#24 0x000000000056ca92 in _PyEval_EvalFrameDefault ()
#25 0x00000000005f7146 in _PyFunction_Vectorcall ()
#26 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#27 0x00000000005f7146 in _PyFunction_Vectorcall ()
#28 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#29 0x000000000056955a in _PyEval_EvalCodeWithName ()
#30 0x00000000005f7323 in _PyFunction_Vectorcall ()
#31 0x000000000059c6f0 in  ()
#32 0x00000000005f463f in _PyObject_MakeTpCall ()
#33 0x0000000000570dac in _PyEval_EvalFrameDefault ()
#34 0x00000000005f7146 in _PyFunction_Vectorcall ()
#35 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#36 0x00000000005f7146 in _PyFunction_Vectorcall ()
#37 0x000000000059c95d in  ()
#38 0x00000000005f463f in _PyObject_MakeTpCall ()
#39 0x00000000005704b9 in _PyEval_EvalFrameDefault ()
#40 0x000000000056955a in _PyEval_EvalCodeWithName ()
#41 0x000000000050a2c0 in  ()
#42 0x000000000056c451 in _PyEval_EvalFrameDefault ()
#43 0x000000000056955a in _PyEval_EvalCodeWithName ()
#44 0x00000000005f7323 in _PyFunction_Vectorcall ()
#45 0x00000000004f4e7c in  ()
#46 0x00000000005ee7f4 in  ()
#47 0x00000000005f463f in _PyObject_MakeTpCall ()
#48 0x00000000005704b9 in _PyEval_EvalFrameDefault ()
#49 0x000000000056955a in _PyEval_EvalCodeWithName ()
#50 0x00000000005f7323 in _PyFunction_Vectorcall ()
#51 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#52 0x00000000005f7146 in _PyFunction_Vectorcall ()
#53 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#54 0x000000000056955a in _PyEval_EvalCodeWithName ()
#55 0x00000000005f7323 in _PyFunction_Vectorcall ()
#56 0x00000000005f3d42 in PyObject_Call ()
#57 0x000000000056ca92 in _PyEval_EvalFrameDefault ()
#58 0x00000000005f7146 in _PyFunction_Vectorcall ()
#59 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#60 0x00000000005f7146 in _PyFunction_Vectorcall ()
#61 0x000000000056b399 in _PyEval_EvalFrameDefault ()
#62 0x00000000005f7146 in _PyFunction_Vectorcall ()
#63 0x000000000050a24c in  ()
#64 0x00000000005f3d42 in PyObject_Call ()
#65 0x000000000065561c in  ()
#66 0x00000000006750c8 in  ()
#67 0x00007fe77bd78609 in start_thread (arg=<optimised out>) at pthread_create.c:477
#68 0x00007fe77beb4293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Looks like a garbage collection issue when a mesh is destroyed (only classes containing GeomVertexArrayData). The issue might be with using the standard threading module instead of direct.stdpy.

judicaelclair commented 3 years ago

Still an issue since by default we still use the standard threading model, but using direct.stdpy seems to fix the issue at the price of very sluggish performance.