Ant1r / ofxPof

POF = Pd + OpenFrameworks : openFrameworks externals for Pure Data, providing openGL mutlithreaded rendering and advanced multitouch events management.
http://metalu.net/en/outils/pof-2/
Other
61 stars 7 forks source link

libFLAC.so.8: cannot open shared object file: No such file or directory #11

Open JRSV opened 5 months ago

JRSV commented 5 months ago

Hello,

I am trying to use the library installing it through Deken, but unfortunately I get the following error when loading:

libFLAC.so.8: cannot open shared object file: No such file or directory

I am running a Debian 12 based system

if I do: dpkg -l | grep libflac

I get: ii libflac++10:amd64 1.4.2+ds-2 amd64 Free Lossless Audio Codec - C++ runtime library ii libflac-dev:amd64 1.4.2+ds-2 amd64 Free Lossless Audio Codec - C development library ii libflac12:amd64 1.4.2+ds-2 amd64 Free Lossless Audio Codec - runtime C library ii libflac12:i386 1.4.2+ds-2 i386 Free Lossless Audio Codec - runtime C library

so it seems it is linked to a previous? version... maybe?

any ideas how to fix this?

BTW, I dont seem to find libflac8 installation candidate

cheers

Ant1r commented 5 months ago

Ah yes, sorry, apparently libFLAC isn't selected to be packaged to deken (see: https://github.com/Ant1r/ofxPof/blob/b80210527454484f64003b7a09c8e7f9f8a09ac3/linuxExternal/upload.sh#L24C1-L30C1 ).

I'll try to upload a new version soon, in the meantime you could try to add the file libFLAC.so.8 from the following archive to the [your-externals-directory]/pof/libs/directory:

libFLAC.so.8.zip

JRSV commented 5 months ago

great thanks... now I get libtiff.so.5 missing, I can't find any info about dependencies, is there any?? I did install the ./install_dependencies but I guess that is not specific for this.

again, libtiff.so5 seems to be a previous version as I can find libtiff.so6

Ant1r commented 5 months ago

libtiff.so.5.zip What next ;-?

I'll just have to add these dependencies. I don't think you can do anything, except trying to compile Pof by yourself. But I warn you: this can be quite long and tedious.

JRSV commented 5 months ago

hehe.. cool, if you keep them coming, I keep adding until hopefully it loads entirely. HOWEVER!!! this last one crashes PD, it crashes at startup

running from terminal I get:

$ pd Pd-0.54.1 ("") compiled 18:11:18 Feb 11 2024 float precision = 32 bits port 41959 TCL_LIBRARY="/usr/local/lib/pd/lib/tcl/library" TK_LIBRARY="/usr/local/lib/pd/lib/tk/library" wish "/usr/local/lib/pd/tcl/pd-gui.tcl" 41959 Waiting for connection request... ... connected /usr/local/lib/pd/bin/pd-watchdog Illegal instruction jrsv@jrsv-dell:~ $ pdsend errorname: >>error writing "sock559c6dd83780": broken pipe<<

Ant1r commented 5 months ago

Ouch... So it seems we escaped from the dependency hell, but we encountered a more dangerous boss... It could be an incompatibility between the external binary and the newer Pd version. However this happens relatively rarely, Pd is quite stable in this regard. Or a more general discrepancy towards the other OS libraries.

You can help to find out what's going on, if you run pd in the debugger:

gdb -ex run --args pd -lib pof

When it crashes, type bt (for: backtrace) and copy the buffer here.

In any case, I'm afraid there will have no other choice than recompiling for the OS version. That's what is done for every app in a distribution after all, but I guess it would be quite difficult to refactor an openFrameworks based app in a way that it would complies to debian packaging rules. But I admit I never tried (and don't know the procedure at all)...

JRSV commented 5 months ago

oh darn!!! was afraid this was gonna happen. Ok, lets start from the begging, here is gdb output by your instructions:

$ gdb -ex run --args pd -lib pof GNU gdb (Debian 13.1-3) 13.1 Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: https://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/.

For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from pd... Starting program: /usr/local/bin/pd -lib pof [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Pd-0.54.1 ("") compiled 18:11:18 Feb 11 2024 float precision = 32 bits port 42477 TCL_LIBRARY="/usr/local/lib/pd/lib/tcl/library" TK_LIBRARY="/usr/local/lib/pd/lib/tk/library" wish "/usr/local/lib/pd/tcl/pd-gui.tcl" 42477 [Detaching after fork from child process 92886] Waiting for connection request... ... connected [Detaching after fork from child process 92889] /usr/local/lib/pd/bin/pd-watchdog

Program received signal SIGILL, Illegal instruction. 0x00007ffff619ab6b in ofFilePath::getCurrentExePath[abi:cxx11]() () from /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux (gdb) watchdog: signaling pd... watchdog: signaling pd... bwatchdog: signaling pd... watchdog: signaling pd... bt

0 0x00007ffff619ab6b in ofFilePath::getCurrentExePath[abi:cxx11]() ()

at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

1 0x00007ffff619c4cd in ofFilePath::getCurrentExeDir[abi:cxx11]() ()

at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

2 0x00007ffff61aa89c in (anonymous namespace)::defaultDataPath() ()

at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

3 0x00007ffff61ac074 in ofToDataPath[abi:cxx11](boost::filesystem::path const&, bool) () at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

4 0x00007ffff5d3f76a in ofxLua::ofxLua() ()

at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

5 0x00007ffff5c435e9 in _GLOBAL__sub_I_pofLua.cc ()

at /home/jrsv/Documents/Pd/externals/pof/pof.pd_linux

6 0x00007ffff7fcf8be in () at /lib64/ld-linux-x86-64.so.2

7 0x00007ffff7fcf9a4 in () at /lib64/ld-linux-x86-64.so.2

8 0x00007ffff7ce2024 in _dl_catch_exception ()

at /lib/x86_64-linux-gnu/libc.so.6

9 0x00007ffff7fd609e in () at /lib64/ld-linux-x86-64.so.2

10 0x00007ffff7ce1fca in _dl_catch_exception ()

at /lib/x86_64-linux-gnu/libc.so.6

11 0x00007ffff7fd6438 in () at /lib64/ld-linux-x86-64.so.2

12 0x00007ffff7c18438 in () at /lib/x86_64-linux-gnu/libc.so.6

13 0x00007ffff7ce1fca in _dl_catch_exception ()

at /lib/x86_64-linux-gnu/libc.so.6

--Type for more, q to quit, c to continue without paging--watchdog: signaling pd... c

14 0x00007ffff7ce207f in _dl_catch_error () at /lib/x86_64-linux-gnu/libc.so.6

15 0x00007ffff7c17f27 in () at /lib/x86_64-linux-gnu/libc.so.6

16 0x00007ffff7c184e9 in dlopen () at /lib/x86_64-linux-gnu/libc.so.6

17 0x0000555555600a2f in sys_do_load_lib_from_file

(fd=<optimized out>, dirbuf=dirbuf@entry=0x7fffffffcc20 "/home/jrsv/Documents/Pd/externals/pof", nameptr=0x7fffffffcc46 "pof.pd_linux", symname=symname@entry=0x7fffffffc440 "pof_setup", objectname=<optimized out>) at s_loader.c:317

18 0x0000555555600fc2 in sys_do_load_lib

(canvas=<optimized out>, objectname=<optimized out>, path=0x555555734570 "/home/jrsv/Documents/Pd/externals") at s_loader.c:411

19 0x000055555560096e in sys_loadlib_iter

(path=0x555555734570 "/home/jrsv/Documents/Pd/externals", data=0x7fffffffd4b0) at s_loader.c:474

20 0x00005555555a09ee in canvas_path_iterate

(x=x@entry=0x0, fun=fun@entry=0x555555600940 <sys_loadlib_iter>, user_data=user_data@entry=0x7fffffffd4b0) at g_canvas.c:1930

21 0x00005555555a43ea in canvas_path_iterate

(x=x@entry=0x0, fun=fun@entry=0x555555600940 <sys_loadlib_iter>, user_data=user_data@entry=0x7fffffffd4b0) at g_canvas.c:1896

22 0x0000555555601258 in sys_load_lib

(canvas=canvas@entry=0x0, classname=0x555555735500 "pof") at s_loader.c:512

23 0x000055555560267c in glob_initfromgui

(dummy=<optimized out>, s=<optimized out>, argc=<optimized out>, argv=0x7fffffffd970) at s_main.c:312

24 0x00005555555f2bbb in binbuf_eval

(x=<optimized out>, target=0x5555556ba578 <glob_pdobject>,
target@entry=0x0, argc=argc@entry=0, argv=argv@entry=0x0) at m_binbuf.c:764

25 0x00005555555fd9dc in socketreceiver_read (fd=6, x=0x555555716680)

at s_inter.c:698

26 socketreceiver_read (x=0x555555716680, fd=6) at s_inter.c:630

27 0x00005555555fcbee in sys_domicrosleep (microsec=microsec@entry=0)

at s_inter.c:241

28 0x00005555555feda1 in sys_pollgui () at s_inter.c:1051

29 0x00005555555fa67d in m_pollingscheduler () at m_sched.c:348

30 m_mainloop () at m_sched.c:429

31 0x00007ffff7bba24a in () at /lib/x86_64-linux-gnu/libc.so.6

32 0x00007ffff7bba305 in __libc_start_main ()

at /lib/x86_64-linux-gnu/libc.so.6

33 0x000055555556d2f1 in _start ()

(gdb) watchdog: signaling pd... watchdog: signaling pd... c Continuing.

Program terminated with signal SIGILL, Illegal instruction. The program no longer exists. (gdb)

Ant1r commented 5 months ago

Sorry I don't clearly understand what it's about. It seems the crash happens in ofFilePath::getCurrentExePath() (which isn't a very complicated code, where I don't see what could crash), but there's also this "abi:cxx11" suffix which I don't really understand (btw I think the github formatting has damaged these lines a bit, next time try to put them in a "code" block), but which could point to a C++ version problem. So...

JRSV commented 5 months ago

That's ok, its a pitty I cant try the library. FYI: If I put the lines as code, it gets reaaaally messed up, as far as I can tell, it looks similar to the info in the terminal.

anyway, thanks.

Ant1r commented 5 months ago

There could be a last thing to check: if you type in the command line: readlink /proc/self/exe It should normally return something like: /bin/readlink (which is the name of the program that reads the special file /proc/self/exe; it's possible that the crash happens while reading this special file). Does it work? No permission issue?

JRSV commented 5 months ago

works with no issue : /