`model_info = runner.init()` stuck in a loop and doesnt continue

When I run the following, it just sticks on the line model_info = runner.init(). Any ideas why? I can cancel out of it

#!/usr/bin/env python
import os
from edge_impulse_linux.image import ImageImpulseRunner
modelfile = ("/home/tbgiot04/read_robot_camera/modelfile.eim")
print('MODEL: ' + modelfile)
with ImageImpulseRunner(modelfile) as runner:
    model_info = runner.init()

It seams to be looping at in the class ImpulseRunner line “while not os.path.exists(socket_path) or not self._runner.poll() is None:” This then loads up os.stat that gives a error as below (but not displayed to screen)

os.stat(path)
Traceback (most recent call last):
  File "/home/tbgiot04/miniconda3/lib/python3.9/genericpath.py", line 19, in exists
    os.stat(path)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpk_n8mrud/runner.sock'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpk_n8mrud/runner.sock'

Hi kelter,

I have a few initial ideas on things to check:

I’d first check the model-file permissions and owner, maybe the .eim is unable to create the socket in /tmp but not failing cleanly?

Also might be a good idea to confirm the .eim executable is running properly besides the socket. You can quickly check .eim operation via the command line e.g:

./home/tbgiot04/read_robot_camera/modelfile.eim stdin
{"hello" : 1, "id" : 0}

Finally, what linux flavor are you running currently?

Best,
David

The linux version is : Linux 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64

When running the command below, getting command not found.

$ /home/tbgiot04/read_robot_camera/modelfile.eim
/home/tbgiot04/read_robot_camera/modelfile.eim: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29’ not found (required by /home/tbgiot04/read_robot_camera/modelfile.eim)

Any thoughts, ive performed a google search and it says upgrading Debian might be a solution. Is there anyway to just upgrade the package?

@kelter101757 What’s the output of ldd --version ?

We require glibc 2.29 at the moment for x86 targets, and glibc 2.28 for ARM targets. I spent some time last week to try and force link to an older glibc version, but did not succeed. Alternatively you can build https://github.com/edgeimpulse/example-standalone-inferencing-linux on your host system (eim output target) that will link to system glibc version.