Fatal: ThreadLocker acquire: QSystemSemaphore::handle: unknown error 38
-
Hello. We are attempting to run our application on VOXL2. This application is linked against some pre-compiled libraries that we received from a third-party as their SDK. We have successfully run this application on x86_64 and on another arm64 platform, but on VOXL2 we receive the error message in the title "Fatal: ThreadLocker acquire: QSystemSemaphore::handle: unknown error 38"
In troubleshooting, I see that on VOXL2 the file /proc/sys/kernel/sem is not present. Could this be indicative that the kernel must be reconfigured for certain types of semaphore usage? I am able to download the MODAL.AI kernel build docker and build the default v1.8.02 kernel. But any time I try to make a change to the kernel config using menuconfig in one of the build_mount/lu.um.121/apps_proc/src/kernel/* directories, the rebuild fails (even if I clean first). So perhaps this is not the right way to reconfigure the build? I went down this road because it seemed that adding Qualcomm IPCC support (menuconfig, device drivers, SOC drivers, qualcomm IPCC) could potentially resolve the issue.
Any and all advice is welcome, including the proper way to reconfigure the kernel (via menuconfig or otherwise) or in troubleshooting this semaphore issue itself.
-
@voxl2_user after doing quick search, it seems
CONFIG_SYSVIPC=y
needs to be enabled inkona-perf_defconfig
.workspace/lu.um.1.2.1/apps_proc/poky/meta-voxl2-bsp/recipes-kernel/linux-msm/files/configs/m0054/kona-perf_defconfig
Make sure you are building a perf build..
We have not tried enabling it, but it could be all that's necessary. Give it a try!
I can try it as well and see if it builds and see if
/proc/sys/kernel/sem
shows up..Alex
-
I just tried it and it seems to be working
voxl2:/$ ls /proc/sys/kernel/sem* /proc/sys/kernel/sem voxl2:/$ ipcs -l ------ Messages Limits -------- max queues system wide = 32000 max size of message (bytes) = 8192 default max size of queue (bytes) = 16384 ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 18014398509465599 max total shared memory (kbytes) = 18014398509481980 min seg size (bytes) = 1 ------ Semaphore Limits -------- max number of arrays = 32000 max semaphores per array = 32000 max semaphores system wide = 1024000000 max ops per semop call = 500 semaphore max value = 32767
-
@Alex-Kushleyev Thank you for the quick reply. Your advice successfully enabled SYSVIPC in my kernel. Sadly, SYSVIPC also broke eth0 on my system and I'm still attempting to troubleshoot that...
-
@voxl2_user , yes, I can also confirm that my usb to ethernet adapter (eth0) is no longer working on my voxl2 after enabling this..
It is possible that enabling
SYSVIPC
disables some other IPC mechanism used by the usb ethernet driver.. or something else is going on.. not sure..Alex
-
@Alex-Kushleyev in my case, 'lsmod' is empty after booting the kernel with SYSVIPC enabled...its as though none of the kernel modules are loading anymore.
-
@Alex-Kushleyev Is there a way to run menuconfig and build the kernel successfully? I wonder if menuconfig might "deconflict" certain feature dependencies, if there are any? When I tried running menuconfig from apps_proc/src/kernel/*, the resulting build failed with errors about the source tree not being clean.
-
@voxl2_user , i will ask around..
Also, there may be some sysv compatibility mode, instead of fully utilizing sysv for all IPC. I think i saw something like that when grepping the kernel build source for sysv supprt. I will check a bit later.
Alex