[FAQ] Portability - Linux


Advanced search

Message boards : Client : [FAQ] Portability - Linux

Author Message
Profile Janus
Volunteer moderator
Project administrator
Avatar
Send message
Joined: 16 Jun 04
Posts: 4358
Credit: 2,094,806
RAC: 0
Message 5276 - Posted: 4 Apr 2007, 12:53:37 UTC
Last modified: 27 Apr 2014, 10:04:26 UTC

Problem:
All my results fail with a message saying that the application died prematurely or a segfault, but the message does not talk about link libraries.
It seems "Glue" starts up but the renderer fails. What is going on and what can I do about it?

Example error output:

[...]
CHMODing executable...
CHMODing preloader executable...
Creating worker...
Worker constructing...
Worker constructed.
$Id: glue.cpp 1303 2011-02-18 08:10:43Z jbk $
$Id: BOINCHandler.cpp 1497 2014-04-06 11:36:19Z jbk $
$Id: Controller.cpp 1514 2014-04-12 17:15:17Z jbk $
$Id: ProgressMonitor.cpp 1278 2011-01-23 09:22:45Z jbk $
Executing ./blender_ld --library-path ./lib ./blender -noaudio -y -b in -P clirender.py -- -F PNG -t 6 -f 747 0.0 0.0 1.0 1.0
Child created.
Worker thread started
Worker thread monitor almost up.
Worker thread monitor up.
|[-->] Info:
|child <28427> to stdout
|0 - ./blender_ld
|1 - --library-path
|2 - ./lib
|3 - ./blender

---------------------------
Exception caught: Worker application apparently died prematurely
Status: -9
---------------------------

Answer:
The official linux client is compiled for kernel above 3.11.x glibc >= 2.11 systems with recent libraries installed. Your message indicates that "Glue" is working fine but the renderer is failing to start up with the bundled libraries.
Sometimes the libraries that are bundled with the client simply don't work well with the libraries installed on the machine. In that case you can disable the bundled libraries and install and use your own:
1) Install the renderer through your system's package manager (for example: apt-get install blender)
2) Go to the boinc project folder (typically something like /var/lib/boinc-client/projects/burp.renderfarming.net)
3) Create a file called "native"
4) Restart BOINC. It should now say something along the lines of "NOTE: Skipping preloader, using native libs!" when it starts a workunit instead of "CHMODing preloader executable..."

As an alternative to 1 you can also unpack the blender?.zip in the project directory and run "ldd ./blender" on it to get a list of libraries and see which ones are missing. Install the missing libraries (if any) and then proceed to 2 and 3.


Problem:
I'm using native mode (above) and all my results fail with a message talking about link libraries, shared objects or segfaults. It seems "Glue" starts up but the renderer fails. What is going on and what can I do about it?

Example error output:
[...]
CHMODing executable...
NOTE: Skipping preloader, using native libs!
Creating worker...
Worker constructing...
Worker constructed.
$Id: glue.cpp,v 1.2 2007/04/04 12:09:26 jbk Exp $
$Id: BOINCHandler.cpp,v 1.1 2007/04/03 13:12:34 jbk Exp $
$Id: Controller.cpp,v 1.1 2007/04/03 13:12:34 jbk Exp $
$Id: ProgressMonitor.cpp,v 1.2 2007/04/04 06:43:59 jbk Exp $
Executing ./blender -b ./in.blend -f 0 0 0 1 1
Child created.
Worker thread started
Worker thread monitor almost up.
Worker thread monitor up.
./blender: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory
|[-->] Info:
|child <26406> to stdout
|0 - ./blender
|1 - -b
|2 - ./in.blend
|3 - -f

---------------------------
Exception caught: Worker application apparently died prematurely
Status: -9
---------------------------

Answer:
Your message indicates that "Glue" is working fine but the renderer is missing some libraries or some of the supplied libraries didn't work well with what else is on your system.
Make sure that all required libraries are available.
If it still fails you may have to compile a custom version of it.

Profile Janus
Volunteer moderator
Project administrator
Avatar
Send message
Joined: 16 Jun 04
Posts: 4358
Credit: 2,094,806
RAC: 0
Message 5277 - Posted: 4 Apr 2007, 12:55:21 UTC - in response to Message 5276.
Last modified: 27 Apr 2014, 9:46:24 UTC

Problem:
All my results fail with a message talking about link libraries or shared object files. The error does not say anything about 'Glue'

Example error output:

:/ error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory


Answer:
The official binary of Glue is statically compiled with stdc++ and glibc and only requires the following standard libraries:

  • linux-gate.so.1
  • libpthread.so.0
  • libm.so.6
  • libc.so.6
  • /lib/ld-linux.so.2


There's a pretty high chance that you already have some version of these libraries installed (otherwise almost no program would work) but your library versions may be incompatible with the ones used to compile Glue (or the statically linked glibc or stdc++ may be incompatible with your kernel). In this case you will have to compile Glue for your specific system. Don't be afraid it isn't as bad as it sounds:
1) Go to "Help us code" and download the Glue client-side sourcecode.
2) Follow the instructions in "INSTALL" on how to compile the code on your system.
3) Copy the compiled executable to the BURP project directory in the BOINC folder.
4) Use the anonymous platform mechanism to use the newly compiled Glue code

Profile Janus
Volunteer moderator
Project administrator
Avatar
Send message
Joined: 16 Jun 04
Posts: 4358
Credit: 2,094,806
RAC: 0
Message 5278 - Posted: 4 Apr 2007, 13:15:52 UTC

Please only reply to this thread if you have any additions to the Linux portability FAQ - if you have issues compiling for linux please create a new thread (or search and use an existing thread) instead.

r3nd3rm4n
Send message
Joined: 14 Nov 07
Posts: 36
Credit: 20,490
RAC: 0
Message 9548 - Posted: 7 Jun 2009, 13:23:40 UTC

Fedora 10 64Bit.

> ./blender: error while loading shared libraries: libXmu.so.6: cannot open shared object file: No such file or directory

Install "libXmu.i386" via yum
and

> ./blender: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

Install "SDL.i386" via yum


Post to thread

Message boards : Client : [FAQ] Portability - Linux