You are not logged in.

#1 2012-06-12 09:02:05

Sturmgewehr
Member
Registered: 2012-06-12
Posts: 5

Updating kernel to Linux 3.3.8-1 breaks Apache

Hi, yesterday I encountered the following problem.
After updating the whole system with

# pacman -Syu 

I tried to start the Apache http server with

# /etc/rc.d/httpd start 

It gave me this error:

 /usr/sbin/httpd: error while loading shared libraries: /usr/lib/libc.so.6: invalid ELF header 

I tried these things:
1) Downgrading kernel to linux-3.3.7-1 with no success (problem with modules);
2) Downgrading glibc to versions from 2-14-1-2 to 2-2-15-10 (didn't work);
3) Downgrading apache to versions from 2-2-21-1 to 2-2-22-3 (this didn't work either).
It seem to be the problem with kernel. Any suggestions?

Offline

#2 2012-06-13 09:20:33

rdm
Member
From: Italy
Registered: 2012-05-31
Posts: 48

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

Apache 2.2 has been flagged out-of-date since 20th February 2012.
You should download it (version 2.4) from a project's site mirror:

http://httpd.apache.org/download.cgi#apache24

Then you can install it manually. Help and documentation can be found at

https://httpd.apache.org/docs/2.4/

Offline

#3 2012-06-13 09:57:21

falconindy
Developer
From: New York, USA
Registered: 2009-10-22
Posts: 4,111
Website

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

It seems to be a problem with your libc. That is, your libc, and not Arch's libc. Our glibc package ships /lib/libc.so.6, not /usr/lib/libc.so.6. Find out why you have this file here, and likely get rid of it.

Offline

#4 2012-06-13 10:15:13

rdm
Member
From: Italy
Registered: 2012-05-31
Posts: 48

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

falconindy wrote:

That is, your libc, and not Arch's libc.

It's strange: he did -Syu at first.

Offline

#5 2012-06-13 10:33:22

Gcool
Member
Registered: 2011-08-16
Posts: 1,456

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

rdm wrote:
falconindy wrote:

That is, your libc, and not Arch's libc.

It's strange: he did -Syu at first.

That doesn't really matter in this case. Somehow there are (at least) 2 instances of libc.so.6 on his system (the official arch one + another one). Httpd is trying to use the "unofficial" one and hence failing.

@Sturmgewehr

How did /usr/lib/libc.so.6 end up on your system? Which package does it belong to?


Burninate!

Offline

#6 2012-06-13 10:34:14

Sturmgewehr
Member
Registered: 2012-06-12
Posts: 5

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

Thanks for the help. I'll try to install a new version of Apache (httpd-2.4.2) without messing up the whole system.
By the way, I've checked the file ownership before:

 # ls -lah /usr/libc.so.6
 rwxrwxrwx 1 root root 16 Jun  6 13:48 /usr/lib/libc.so.6 -> /usr/lib/libc.so
 # pacman -Qo /usr/lib/libc.so 
 /usr/lib/libc.so is owned by glibc 2.15-11

so the file is owned by glibc-2.15-11.

Offline

#7 2012-06-13 11:00:56

Sturmgewehr
Member
Registered: 2012-06-12
Posts: 5

Re: Updating kernel to Linux 3.3.8-1 breaks Apache

Solved. It seems that Apache was compiled to use /usr/lib/libc.so.6, which links to /usr/lib/libc.so. The last one seems to be broken (miscompiled)!

# objdump -f /usr/lib/libc.so
objdump: /usr/lib/libc.so: File format not recognized

Relinking to a working library solves the problem:

 # rm /usr/lib/libc.so.6
 # ln -s -T /lib/libc-2.15.so  /usr/lib/libc.so.6

Also shared object is recognized:

# objdump -f /lib/libc-2.15.so 
/lib/libc-2.15.so:     file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x0000000000021560

So there is a problem with symbolic links in glibc. Apache 2.2.22-4 is working! Thanks, folks!

Last edited by Sturmgewehr (2012-06-13 11:01:56)

Offline

Board footer

Powered by FluxBB