Bug 1163510
| Summary: | gmsh: error while loading shared libraries: libfreeimage.so.3 | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Colin Macdonald <cbm> | ||||
| Component: | gmsh | Assignee: | Sandro Mani <manisandro> | ||||
| Status: | CLOSED NOTABUG | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 20 | CC: | hobbes1069, manisandro | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2014-11-14 10:02:43 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
|
Description
Colin Macdonald
2014-11-12 21:45:36 UTC
Neither gmsh or libGmsh.so are linked against freeimage: $ ldd /usr/lib64/libGmsh.so.2.8 | grep freeimage (nothing returned) $ ldd /usr/bin/gmsh | grep freeimage (nothing returned) Also greeping the source tree for freeimage returns no matches. Do you have some third-party component loaded along with gmsh? Running $ strace /usr/bin/gmsh should should show you what is being loaded before the error occurs, so it should give you a hint which is the component causing problems. In any case, the quick-fix is to just install the freeimage package. For me:
ldd /usr/bin/gmsh | grep libfreeimage
libfreeimage.so.3 => not found
With "freeimage" package installed:
ldd /usr/bin/gmsh | grep freeimage
libfreeimage.so.3 => /lib64/libfreeimage.so.3 (0x00007f8607772000)
--------------------------
I do have a libfreeimage left over from some experiments with some third-party (and proprietary?) software:
locate libfreeimage
/usr/lib/plexmediaserver/libfreeimage.so.3
perhaps that is interfering somehow...?
--------------------------
Strace
------
Here's the last of it, I'll sttach the whole thing:
open("/usr/lib64/openmpi/lib/libatlas.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/cbm/.local/lib/libatlas.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib64/atlas/libatlas.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0[\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=5124904, ...}) = 0
mmap(NULL, 7213136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7ef60b2000
mprotect(0x7f7ef658a000, 2093056, PROT_NONE) = 0
mmap(0x7f7ef6789000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4d7000) = 0x7f7ef6789000
mmap(0x7f7ef6793000, 80, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7ef6793000
close(3) = 0
open("/usr/lib64/openmpi/lib/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/cbm/.local/lib/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib64/tls/x86_64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib64/tls/x86_64", 0x7fffe7a372d0) = -1 ENOENT (No such file or directory)
open("/lib64/tls/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
open("/lib64/x86_64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib64/x86_64", 0x7fffe7a372d0) = -1 ENOENT (No such file or directory)
open("/lib64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib64", {st_mode=S_IFDIR|0555, st_size=176128, ...}) = 0
open("/usr/lib64/tls/x86_64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls/x86_64", 0x7fffe7a372d0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
open("/usr/lib64/x86_64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/x86_64", 0x7fffe7a372d0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libfreeimage.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64", {st_mode=S_IFDIR|0555, st_size=176128, ...}) = 0
writev(2, [{"gmsh", 4}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libfreeimage.so.3", 17}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10gmsh: error while loading shared libraries: libfreeimage.so.3: cannot open shared object file: No such file or directory
) = 121
exit_group(127) = ?
+++ exited with 127 +++
Created attachment 956882 [details]
gmsh.strace
To answer your question, I don't think I have any "third-party component loaded along with gmsh". Not deliberately anyway. There is actually an indirect dependency on freeimage, as can be seen by running lddtree (from pax-utils):
$ lddtree /usr/bin/gmsh
gmsh => /usr/bin/gmsh (interpreter => /lib64/ld-linux-x86-64.so.2)
[...]
libngocc.so.0 => /lib64/libngocc.so.0
libTKSTL.so.9 => /lib64/libTKSTL.so.9
libTKXDESTEP.so.9 => /lib64/libTKXDESTEP.so.9
libTKCAF.so.9 => /lib64/libTKCAF.so.9
libTKCDF.so.9 => /lib64/libTKCDF.so.9
libTKV3d.so.9 => /lib64/libTKV3d.so.9
libTKService.so.9 => /lib64/libTKService.so.9
libfreeimage.so.3 => /lib64/libfreeimage.so.3
[...]
$ repoquery --whatprovides libTKService.so.9
OCE-visualization-0:0.16-1.fc22.x86_64
$ repoquery --requires OCE-visualization | grep freeimage
libfreeimage.so.3
libfreeimage.so.3()(64bit)
So OCE-visualization should pull in freeimage as a dependency.
This is on rawhide. Can you check on F20?
You might also want to run $ yum check all to verify that your rpmdb is in a clean state. "yum check all" seems fine.
On F20:
$ lddtree `which gmsh`
[...]
libngocc.so.0 => /lib64/libngocc.so.0
libTKSTL.so.9 => /lib64/libTKSTL.so.9
libTKXDESTEP.so.9 => /lib64/libTKXDESTEP.so.9
libTKCAF.so.9 => /lib64/libTKCAF.so.9
libTKCDF.so.9 => /lib64/libTKCDF.so.9
libTKV3d.so.9 => /lib64/libTKV3d.so.9
libTKService.so.9 => /lib64/libTKService.so.9
libfreeimage.so.3 => not found
[...]
$ repoquery --requires OCE-visualization | grep freeimage
libfreeimage.so.3
libfreeimage.so.3()(64bit)
And OCE-visualization does not pull in freeimage:
$ yum list OCE-visualization freeimage
Loaded plugins: changelog, langpacks, remove-with-leaves
Installed Packages
OCE-visualization.x86_64 0.16-1.fc20 @updates
Available Packages
OCE-visualization.i686 0.16-1.fc20 updates
freeimage.i686 3.10.0-16.fc20 fedora
freeimage.x86_64 3.10.0-16.fc20 fedora
OCE-visualization definitely should pull in freeimage: $ rpm -qp --requires OCE-visualization-0.16-1.fc20.x86_64.rpm | grep freeimage libfreeimage.so.3()(64bit) Unless you have another package which is providing libfreeimage $ repoquery --whatprovides libfreeimage.so.3 freeimage-0:3.10.0-21.fc22.x86_64 If you run the above, do you get anything else besides freeimage? Perhaps some package installing the /usr/lib/plexmediaserver/libfreeimage.so.3 you mentioned above? In that case, it would be a packaging bug of that package, since libraries in subdirectories should be provided by packages. Otherwise, try reinstalling OCE-visualization. typo: [...] since libraries in subdirectories should NOT be provided by packages. [...] Additional note: if you installed a rpm which provides libfreeimage locally and not from a repo, repoquery --whatprovides will not show it. Instead, run $ yum provides libfreeimage.so.3 In fact, I needed some raw rpm command (sorry forget exact switches) to see the third-party package (presumably b/c I'd installed a single rpm without a repo). Anyway, my understanding is this is *not* a bug with gmsh or OCE-visualization, or indeed Fedora, so closing. Thank you for your help, sorry for the noise. For the record: third-party stuff (and esp. proprietary third-party) belongs in /opt. Plex people should do that. |