Error: signal 11: QMutex: destroying locked mutex CHAI3D

Typically: "How do I... ", "How can I... " questions
Post Reply
dkchaisumdet
Posts: 12
Joined: 19 Mar 2023, 06:27

Error: signal 11: QMutex: destroying locked mutex CHAI3D

Post by dkchaisumdet »

I have a script that subscribes to a point cloud using ROS and then uses to point cloud to create a haptic shape. It runs ok sometimes but others it crashes and gives this error.

[CoppeliaSimClient] loading the CoppeliaSim library...
[CoppeliaSimClient] done.
[CoppeliaSimClient:loadinfo] launching CoppeliaSim...
[CoppeliaSim:loadinfo] CoppeliaSim v4.4.0, (rev. 0), flavor: 1, linux
[CoppeliaSim:loadinfo] user settings file is /home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/system/usrset.txt
[CoppeliaSim:loadinfo] loaded the video compression library.
[CoppeliaSim:loadinfo] if CoppeliaSim crashes now, try to install libgl1-mesa-dev on your system:
>sudo apt install libgl1-mesa-dev
[CoppeliaSim:loadinfo] OpenGL: NVIDIA Corporation, Renderer: NVIDIA GeForce RTX 3050 Laptop GPU/PCIe/SSE2, Version: 4.6.0 NVIDIA 510.108.03
[CoppeliaSim:loadinfo] simulator launched.
[CoppeliaSim:loadinfo] plugin 'CHAI3D': loading...
[CoppeliaSim:loadinfo] plugin 'CHAI3D': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Assimp': loading...
[CoppeliaSim:loadinfo] plugin 'Assimp': load succeeded.
[CoppeliaSim:loadinfo] plugin 'B0': loading...
[CoppeliaSim:loadinfo] plugin 'B0': load succeeded.
[CoppeliaSim:loadinfo] plugin 'BWF': loading...
[CoppeliaSim:loadinfo] plugin 'BWF': load succeeded.
[CoppeliaSim:loadinfo] plugin 'BubbleRob': loading...
[CoppeliaSim:loadinfo] plugin 'BubbleRob': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Bullet-2-78': loading...
[CoppeliaSim:loadinfo] plugin 'Bullet-2-78': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Bullet-2-83': loading...
[CoppeliaSim:loadinfo] plugin 'Bullet-2-83': load succeeded.
[CoppeliaSim:loadinfo] plugin 'CodeEditor': loading...
[CoppeliaSim:loadinfo] plugin 'CodeEditor': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ConvexDecompose': loading...
[CoppeliaSim:loadinfo] plugin 'ConvexDecompose': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Eigen': loading...
[CoppeliaSim:loadinfo] plugin 'Eigen': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ExternalRenderer': loading...
[CoppeliaSim:loadinfo] plugin 'ExternalRenderer': load succeeded.
[CoppeliaSim:loadinfo] plugin 'GLTF': loading...
[CoppeliaSim:loadinfo] plugin 'GLTF': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Geom': loading...
[CoppeliaSim:loadinfo] plugin 'Geom': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ICP': loading...
[CoppeliaSim:loadinfo] plugin 'ICP': load succeeded.
[CoppeliaSim:loadinfo] plugin 'IGL': loading...
[CoppeliaSim:loadinfo] plugin 'IGL': load succeeded.
[CoppeliaSim:loadinfo] plugin 'IK': loading...
[CoppeliaSim:loadinfo] plugin 'IK': load succeeded.
[CoppeliaSim:loadinfo] plugin 'IM': loading...
[CoppeliaSim:loadinfo] plugin 'IM': load succeeded.
[CoppeliaSim:loadinfo] plugin 'K3': loading...
[CoppeliaSim:loadinfo] plugin 'K3': load succeeded.
[CoppeliaSim:loadinfo] plugin 'LuaCmd': loading...
[CoppeliaSim:loadinfo] plugin 'LuaCmd': load succeeded.
[CoppeliaSim:loadinfo] plugin 'MTB': loading...
[CoppeliaSim:loadinfo] plugin 'MTB': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Mujoco': loading...
[CoppeliaSim:loadinfo] plugin 'Mujoco': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Newton': loading...
[CoppeliaSim:loadinfo] plugin 'Newton': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ODE': loading...
[CoppeliaSim:loadinfo] plugin 'ODE': load succeeded.
[CoppeliaSim:loadinfo] plugin 'OMPL': loading...
[CoppeliaSim:loadinfo] plugin 'OMPL': load succeeded.
[CoppeliaSim:loadinfo] plugin 'OpenGL3Renderer': loading...
[CoppeliaSim:loadinfo] plugin 'OpenGL3Renderer': load succeeded.
[CoppeliaSim:loadinfo] plugin 'OpenMesh': loading...
[CoppeliaSim:loadinfo] plugin 'OpenMesh': load succeeded.
[CoppeliaSim:loadinfo] plugin 'QML': loading...
[CoppeliaSim:loadinfo] plugin 'QML': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Qhull': loading...
[CoppeliaSim:loadinfo] plugin 'Qhull': load succeeded.
[CoppeliaSim:loadinfo] plugin 'RML2': loading...
[CoppeliaSim:loadinfo] plugin 'RML2': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ROS': loading...
[CoppeliaSim:loadinfo] plugin 'ROS': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ROS2': loading...
error: library ( /home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libsimExtROS2.so ) load: "Cannot load library /home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libsimExtROS2.so: (libstd_srvs__rosidl_typesupport_cpp.so: cannot open shared object file: No such file or directory)"
[CoppeliaSim:error] plugin 'ROS2': load failed (could not load). The plugin probably couldn't load dependency libraries. For additional infos, modify the script 'libLoadErrorCheck.sh', run it and inspect the output.
[CoppeliaSim:loadinfo] plugin 'RRS1': loading...
[CoppeliaSim:loadinfo] plugin 'RRS1': load succeeded.
[CoppeliaSim:loadinfo] plugin 'RemoteApi': loading...
[simExtRemoteApi:loadinfo] starting a remote API server on port 19997
[CoppeliaSim:loadinfo] plugin 'RemoteApi': load succeeded.
[CoppeliaSim:loadinfo] plugin 'RosServices': loading...
[CoppeliaSim:loadinfo] plugin 'RosServices': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Ruckig': loading...
[CoppeliaSim:loadinfo] plugin 'Ruckig': load succeeded.
[CoppeliaSim:loadinfo] plugin 'SDF': loading...
[CoppeliaSim:loadinfo] plugin 'SDF': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Subprocess': loading...
[CoppeliaSim:loadinfo] plugin 'Subprocess': load succeeded.
[CoppeliaSim:loadinfo] plugin 'SurfRec': loading...
[CoppeliaSim:loadinfo] plugin 'SurfRec': load succeeded.
[CoppeliaSim:loadinfo] plugin 'UI': loading...
[CoppeliaSim:loadinfo] plugin 'UI': load succeeded.
[CoppeliaSim:loadinfo] plugin 'URDF': loading...
[CoppeliaSim:loadinfo] plugin 'URDF': load succeeded.
[CoppeliaSim:loadinfo] plugin 'URLDrop': loading...
[CoppeliaSim:loadinfo] plugin 'URLDrop': load succeeded.
[CoppeliaSim:loadinfo] plugin 'Vision': loading...
[CoppeliaSim:loadinfo] plugin 'Vision': load succeeded.
[CoppeliaSim:loadinfo] plugin 'WS': loading...
[CoppeliaSim:loadinfo] plugin 'WS': load succeeded.
[CoppeliaSim:loadinfo] plugin 'ZMQ': loading...
[CoppeliaSim:loadinfo] plugin 'ZMQ': load succeeded.


Error: signal 11:

/home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libcoppeliaSim.so(_Z11_segHandleri+0x30)[0x7fdb2519b940]
/lib/x86_64-linux-gnu/libc.so.6(+0x43090)[0x7fdb27f95090]
/lib/x86_64-linux-gnu/libstdc++.so.6(__dynamic_cast+0x44)[0x7fdb28207e14]
/home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libv_repExtCHAI3D.so(_ZN6chai3d12cHapticPoint24computeInteractionForcesERNS_9cVector3dERNS_9cMatrix3dES2_S2_+0xa7)[0x7fdb06f23f77]
/home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libv_repExtCHAI3D.so(_ZN6chai3d11cToolCursor24computeInteractionForcesEv+0x4e)[0x7fdb06f26efe]
/home/dylan/catkin_ws/src/CoppeliaSim_Edu_V4_4_0_rev0_Ubuntu20_04/libv_repExtCHAI3D.so(_Z10hapticLoopv+0x291)[0x7fdb06f03ee1]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x8609)[0x7fdb27de0609]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7fdb28071133]
QObject::~QObject: Timers cannot be stopped from another thread
QMutex: destroying locked mutex

How can i avoid destroying this locked mutext from the chai3d vrep module?


Here is a snippet of my code that handles the following.

Code: Select all

function pointcloudMessage_callback(pts)

meshHandle=sim.getObject('/Shape',{noError=true})
    if click==0 and (not sim.isHandle(meshHandle)) then
    msg=pts
        sim.wait(0.5,false)
        constructpointCloud(msg)
        click=1
    else if click==0 and sim.isHandle(meshHandle) then
        removeAllObjects()
        sim.wait(1.0,false)
        sim.removeObjects({meshHandle})
        present=0
    end
end
end
The click variable is used to only call back the point cloud when a button is pressed.

Code: Select all

           
  function sysCall_actuation()         
            meshHandle=sim.getObject('/Shape',{noError=true})
            local removeOriginalShapeWhenDone=false
            if(sim.isHandle(meshHandle) and present==0) then
                --removeAllObjects()
                --floorId=addMesh(floorhandle,removeOriginalShapeWhenDone)
                cabinetId=addMesh(cabinetHandle,removeOriginalShapeWhenDone)
                meshId=addMesh(meshHandle,removeOriginalShapeWhenDone)
                if objCont then
                    --print(#objCont)
                end
                sim.setShapeColor(meshHandle,nil,sim.colorcomponent_transparency,{0.5})
                present=1
           end
           
   end
           
The present variable makes sure the object has been deleted successfully before creating another haptic mesh.

Thanks for your help!

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Error: signal 11: QMutex: destroying locked mutex CHAI3D

Post by coppelia »

Hello,

can you make the crash consistent? i.e. determine the exact moment when CoppeliaSim crashes, and what caused the crash exactly?

Cheers

dkchaisumdet
Posts: 12
Joined: 19 Mar 2023, 06:27

Re: Error: signal 11: QMutex: destroying locked mutex CHAI3D

Post by dkchaisumdet »

Hi,

Its not extremely consistent but still happens fairly often. It definitely occurs when the constructpointcloud function is called which update and simsurfRec reconstructs the surface from the new pointcloud.

I also tried to install the new version of chai3d on the coppelia sim git repository, but a lot of the files didnt match what was existing on my version of chai3d 3.2.0. An example of this was the simChai3d.cpp and .h looking for SimLib when simLib doesnt exist on the CMake version.

Thanks for the reply!

fferri
Posts: 1193
Joined: 09 Sep 2013, 19:28

Re: Error: signal 11: QMutex: destroying locked mutex CHAI3D

Post by fferri »

dkchaisumdet wrote: 17 May 2023, 12:40 simLib doesnt exist on the CMake version.
To have CMake find CoppeliaSim's development files, you have to set the COPPELIASIM_ROOT_DIR environment variable to point to the CoppeliaSim directory, e.g.

Code: Select all

export COPPELIASIM_ROOT_DIR="/path/to/CoppeliaSim_Edu_V4_5_0_Rev6_Linux"
Also, if you downloaded the plugin source code from git, you have to checkout the git branch corresponding to the CoppeliaSim version you have installed, e.g.:

Code: Select all

git checkout coppeliasim-v4.5.0-rev6

dkchaisumdet
Posts: 12
Joined: 19 Mar 2023, 06:27

Re: Error: signal 11: QMutex: destroying locked mutex CHAI3D

Post by dkchaisumdet »

Thanks for the help

Post Reply