×

INDI Library v1.9.8 Released (29 Sep 2022)

Bi-monthly INDI Library released with new drivers and bug fixes.

pyindi-client fails at runtime because of missing symbol

  • Posts: 94
  • Thank you received: 10
Dear all,

Rcently found myself with the following problem while trying to import and use pyindi-client on a new machine:


I have pip --force-reinstall the package of course. But I found something quite weird I did not managed to understand. Locally I had multiple version of the libindi driver:


I forgot to demangle before deleting the 1.8.4, to see what the first _ZNK versus _ZN letter where standing for. But I noticed that the 1.8.5 and 1.8.6 both had the _ZNK and 1.8.4 had the _ZN
Did something changed recently that broke the backward compatibility with pyindi ?

Thank you in advance for your help
2 years 5 months ago #53221

Please Log in or Create an account to join the conversation.

  • Posts: 94
  • Thank you received: 10
Ok apparently, according to web.mit.edu/tibbetts/Public/inside-c/www/mangling.html the additional K stands for const.
However, I don't think it has to do with the current problem of symbol not being found.

This is more intruiguing though:
rock@localhost:~/projects/$ ldd /usr/lib/python3.8/site-packages/_PyIndi.cpython-38-arm-linux-gnueabihf.so
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xf73c2000)
libcfitsio.so.5 => /usr/lib/arm-linux-gnueabihf/libcfitsio.so.5 (0xf7260000)
libnova-0.16.so.0 => /usr/lib/arm-linux-gnueabihf/libnova-0.16.so.0 (0xf6edc000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xf6dd0000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf6d58000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xf6d2f000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf6c41000)
/lib/ld-linux-armhf.so.3 (0xf7494000)
libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xf6c25000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf6c01000)

So I guess there is either a problem of link on my side because Pyindi library is not linked with libindidriver.so

I don't know how can I act on this, maybe by providing pip an additional option ?
2 years 4 months ago #53244

Please Log in or Create an account to join the conversation.

  • Posts: 94
  • Thank you received: 10
Ok I just realized I was mixing everything up, as the pyindiclient was supposed to be statically linked with libindiclient.a
To understand that, I used pip to keep build directory with:

pip3.8 install --build /tmp/mybuild --no-clean pyindi-client

Now, trying to check out what in libindiclient is causing problems
2 years 4 months ago #53245

Please Log in or Create an account to join the conversation.

  • Posts: 94
  • Thank you received: 10
Continuing on this, I tried to look for the missing symbol in the static library:

nm /usr/lib/libindiclient.a | grep getText
000004ec T _ZN4INDI10BaseDevice7getTextEPKc
U _ZN4INDI10BaseDevice7getTextEPKc
00000504 T _ZNK4INDI8Property7getTextEv

Or in demangled format:
nm -C /usr/lib/libindiclient.a | grep getText
000004ec T INDI::BaseDevice::getText(char const*)
U INDI::BaseDevice::getText(char const*)
00000504 T INDI::Property::getText() const

The symbols in the pyindi swig binary are:
nm -D /usr/lib/python3.8/site-packages/pyindi_client-0.2.2-py3.8-linux-aarch64.egg/_PyIndi.cpython-38-arm-linux-gnueabihf.so | grep getText
00030d04 T _ZN4INDI10BaseDevice7getTextEPKc
U _ZN4INDI8Property7getTextEv
00036884 T _ZNK4INDI8Property7getTextEv

Or in demangled format:
nm -CD /usr/lib/python3.8/site-packages/pyindi_client-0.2.2-py3.8-linux-aarch64.egg/_PyIndi.cpython-38-arm-linux-gnueabihf.so | grep getText
00030d04 T INDI::BaseDevice::getText(char const*)
U INDI::Property::getText()
00036884 T INDI::Property::getText() const

EDIT: in an other build I have this
nm -CD ~/anaconda3/lib/python3.6/site-packages/pyindi_client-0.2.2-py3.6-linux-x86_64.egg/_PyIndi.cpython-36m-x86_64-linux-gnu.so | grep getText
000000000005206e T INDI::BaseDevice::getText(char const*)
0000000000058fb0 T INDI::Property::getText()


Looks like the problem is in between the non const missing symbol
U INDI::Property::getText()
In the python binary, because only const version is defined in the static libindiclient.a
00000504 T INDI::Property::getText() const
Last edit: 2 years 4 months ago by dolguldur.
2 years 4 months ago #53246

Please Log in or Create an account to join the conversation.

  • Posts: 983
  • Thank you received: 375
What operating system do you run?
--
Radek Kaczorek
Astroberry Server | Orion CT8 | Askar FRA 400 | NEQ6 (hypermod) | Atik 460EX | ASI 1600 | ASI 120MM | Atik EFW2
2 years 4 months ago #53264

Please Log in or Create an account to join the conversation.

  • Posts: 9
  • Thank you received: 0
Actually Jasem has pointed this out in this github isuue . This worked fine for me too. I had to manually remove some indi-related left-overs from previous installations.
1 year 8 months ago #66721

Please Log in or Create an account to join the conversation.

  • Posts: 94
  • Thank you received: 10

Indeed, sorry that I never got back to answer this question. I also had leftover manually installed, and everything was fine after I removed legacy binaries, and updated indilib.
The following user(s) said Thank You: Pedram
1 year 8 months ago #66769

Please Log in or Create an account to join the conversation.

Time to create page: 0.748 seconds