[parsec-users] Running PARSEC on Simics - GLIBC not found

Christian Bienia cbienia at CS.Princeton.EDU
Thu Aug 13 15:48:41 EDT 2009


You get the error because the PARSEC binaries were linked to a different
version of the GNU C library than the one installed on your Simics system
(http://www.gnu.org/software/libc/). The C library is a fundamental library
on all Unix systems that implements very basic functionality used by all C
programs such as printf or malloc. The developers guarantee that glibc is
backwards compatible, which means it includes support for all previous
versions (but obviously not future ones). The glibc version installed on
your system is less recent than the one used by your binaries, which is the
reason why you get the error. The other way round it should work. It is also
very suspicious that some PARSEC binaries run but others don't. The C
library is so fundamental that it is used by all PARSEC programs, so not a
single program should run in your case. You can use the tool `ldd' to check
which libraries a binary links to.

You have the following options:

1a. On the machine that you used to build PARSEC, install a sufficiently old
version of glibc. *DO NOT REPLACE YOUR CURRENT VERSION* because it will make
the entire system unusable. Build a new set of PARSEC binaries that links to
the version of glibc that you just installed.

- OR -

2. On your Simics virtual machine, install a more recent version of glibc
that is used by your PARSEC programs. You should be able to simply replace
the current version, but I would not bet that it'll work. So make a back up
copy of your system image before you do it. If the update fails your virtual
machine might become unusable.

- OR -

3. Create a new virtual machine image that uses a Linux distribution which
already includes a recent version of glibc.

As a brief advice, DO NOT LINK STATICALLY to libc because most modern libc
implementations dynamically load additional parts of the library with libdl
at runtime. If the versions don't match like in your case, the program
starts using incompatible versions of libc which is a sure recipe for
disaster. Unfortunately it is impossible to fully link statically to
reasonably recent versions of libc.

Welcome to shared library hell. :(


-----Original Message-----
From: parsec-users-bounces at lists.cs.princeton.edu
[mailto:parsec-users-bounces at lists.cs.princeton.edu] On Behalf Of Vivek Rane
Sent: Thursday, August 13, 2009 2:49 PM
To: PARSEC Users
Subject: [parsec-users] Running PARSEC on Simics - GLIBC not found

I get something on the following lines when I try to run ferret, vips  
or x264 on Simics (the other benchmarks -  
blackscholes/bodytrack/facesim/raytrace/swaptions/fluidanimate - run  

[PARSEC] Running 'time  
erret corel lsh queries 10 20 2  
[PARSEC] [---------- Beginning of output ----------]
erret: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by  

real    0m0.080s
user    0m0.016s
sys     0m0.048s
[PARSEC] [----------    End of output    ----------]
[PARSEC] Done.

I'm not sure what to do - I'm not very familiar with linux shared  
libraries so I could be missing something basic here. Here is some  
information that I think might help someone help me:

[root at tango parsec-2.0]# file /lib64/libc.so.6
/lib64/libc.so.6: symbolic link to `libc-2.4.so'
[root at tango parsec-2.0]# file /lib64/libc-2.4.so
/lib64/libc-2.4.so: ELF 64-bit LSB shared object, AMD x86-64, version  
1 (SYSV), for GNU/Linux 2.6.9, not stripped

I've tried adding libc-2.7.so (x86-64 linux) to /lib64 but that  
doesn't make any difference at all.

[root at tango parsec-2.0]# file /lib64/libc-2.7.so
/lib64/libc-2.7.so: ELF 64-bit LSB shared object, AMD x86-64, version  
1 (SYSV), for GNU/Linux 2.6.9, not stripped

If I change the soft link (libc.so.6) to point to the new version, I  
get segmentation faults for most commands such as 'ls' !

Any pointers or suggestions to fix this would be greatly appreciated.

parsec-users mailing list
parsec-users at lists.cs.princeton.edu

More information about the parsec-users mailing list