Support Portal

Error running LLS on certain ARM64 CPU controllers

There have been some problems reported with the operation of LLS on certain ARM64 bit CPU controllers via the SICK Support Portal. Most of these reported issues occurred on NVIDIA controllers, particularly those running an NVIDIA Jetpack or having any NVIDIA SDKs installed.
Related Products
CODE-LOC
LiDAR-LOC

Table of Contents

Introduction

There have been some problems reported with the operation of LLS on certain ARM64 bit CPU controllers via the SICK Support Portal. Most of these reported issues occurred on NVIDIA controllers, particularly those running an NVIDIA Jetpack or having any NVIDIA SDKs installed.

 

To see if your case is similar, you can run the following command on that PC's terminal:

dpkg-query --show nvidia-l4t-core

Case

The sick_lidarloc.service fails by itself after a few seconds up and running. The following message is displayed in the Terminal whenever checking the status of the sick_lidarloc.service:

 

root@ubuntu-desktop:/opt/sick/SICKAppEngine# systemctl status sick_lidarloc.service

● sick_lidarloc.service - SICK LiDAR Localization Software

     Loaded: loaded (/lib/systemd/system/sick_lidarloc.service; enabled; vendor preset: enabled)

     Active: failed (Result: core-dump) since Mon 2023-12-11 13:34:12 CDT; 3min 59s ago

     Process: 23535 ExecStartPre=/usr/bin/timeout 30s /bin/sh -c until /bin/netstat -l4ptn | /bin/grep '0.0.0.0:22350'; do : ; done (code=exited, status=0/SUCCESS)

     Process: 23539 ExecStart=/opt/sick/SICKAppEngine/AppEngine -config /opt/sick/SICKAppEngine/userconfig.yml (code=dumped, signal=ABRT)

     Main PID: 23539 (code=dumped, signal=ABRT)

 

 

Dec 11 13:32:11 ubuntu-desktop systemd[1]: Starting SICK LiDAR Localization Software...

Dec 11 13:32:11 ubuntu-desktop systemd[1]: Started SICK LiDAR Localization Software.

Dec 11 13:34:12 ubuntu-desktop systemd[1]: sick_lidarloc.service: Main process exited, code=dumped, status=6/ABRT

Dec 11 13:34:12 ubuntu-desktop systemd[1]: sick_lidarloc.service: Failed with result 'core-dump'.

 

Running the AppEngine directly from /opt/sick/SICKAppEngine/ provides the following information:

 

root@ubuntu-desktop:/opt/sick/SICKAppEngine# ./AppEngine -config /opt/sick/SICKAppEngine/userconfig.yml

 

 ___  _  ___ _ __

/ __|| |/ __| |/ /   SICK AppEngine 1.5.0

\__ \| | (__| ' <    Copyright (C) 2023 SICK AG

|___/|_|\___|_|\_\

A P P E N G I N E

 

AppEngine is installing...

[13:51:29.433: SEVERE: AppEngine.Debug] Whoops...Not ROOT!!! Cannot set correct task properties for task 'SysCtrlTask'

[13:52:29.479: SEVERE: AppEngine.Debug] Whoops...Not ROOT!!! Cannot set correct task properties for task 'AppEngineOutput'

[13:53:29.480: SEVERE: AppEngine.Debug] pthread_create returned 1 in file /home/jenkins-slave/jenkinsroot-csxjenkins-gbc05/workspace/KAppEngine_git_release_SAE_1.4.0/conan/.conan/data/edp_core/1.2.2/sick/release/source/src/core/Linux/PeriodicTimer.cpp

ETL: nullptr pointer dereference: nullpointer ETL ScopedPtr

CrashCallback:

Handled Abort!

Aborted (core dumped)

Troubleshooting

At present, the solution to correct this issue and enable the operation of LLS is to establish the default setting of the kernel.sched_rt_runtime_us parameter as -1.

 

This parameter essentially determines the amount of time during the CPU execution period to be allocated to real-time tasks. It is typically set to 950000us by default, given a period of 1000000us (95%). This functionality is known as "Real time Throttling" and is the primary reason for the failure of the LLS service. The Real Time Throttling feature can be deactivated by setting the kernel.sched_rt_runtime_us parameter to -1. More details regarding this feature can be accessed through the following link:

 

https://wiki.linuxfoundation.org/realtime/documentation/technical_basics/sched_rt_throttling

 

Setting this value to -1 should not pose any risk unless the programs operating on the controller may contain coding errors that could potentially lead to a scenario where a task does not terminate and consumes 100% of the CPU capacity, preventing the system from executing any other task.

 

To automatically set this parameter to -1 upon startup, follow the instructions provided below. This will also enable LLS to run automatically upon startup.

 

  • Open the sysctl.config file as sudo

sudo gedit /etc/sysctl.conf

  • and copy-paste this line into the file, at the bottom (leave an empty raw at the end):

kernel.sched_rt_runtime_us=-1

  • A system reboot will be necessary to apply the changes
Keywords:
ARM64, AppEngine, LiDAR-LOC, LLS, Linux, pthread_create, NVIDIA, Jetson, Jetpack, scheduling, realtime, tasks, root, core-dump, sick_lidarloc.service