Gentoo Archives: gentoo-user

From: Alan McKinnon <alan.mckinnon@×××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Apache died this morning... why?
Date: Mon, 30 Dec 2013 12:40:37
Message-Id: 52C169A2.4000804@gmail.com
In Reply to: Re: [gentoo-user] Apache died this morning... why? by Tanstaafl
1 Replies inter-posted
2
3
4 On 30/12/2013 14:25, Tanstaafl wrote:
5 > On 2013-12-30 6:30 AM, Alan McKinnon <alan.mckinnon@×××××.com> wrote:
6 >> To see what's going on, run ldd on:
7 >>
8 >> /usr/lib64/apache2/modules/libphp5.s
9 >
10 > Result:
11 >
12 >> # ldd /usr/lib64/apache2/modules/libphp5.so
13 >> ldd: warning: you do not have execution permission for
14 >> `/usr/lib64/apache2/modules/libphp5.so'
15 >> linux-vdso.so.1 (0x00007fffc3cbf000)
16 >> libc-client.so.1 => /usr//lib64/libc-client.so.1
17 >> (0x00007f279599d000)
18 >> libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f279577b000)
19 >> libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f2795535000)
20 >> libaspell.so.15 => /usr//lib64/libaspell.so.15
21 >> (0x00007f2795263000)
22 >> libm.so.6 => /lib64/libm.so.6 (0x00007f2794f69000)
23 >> libssl.so.1.0.0 => /usr//lib64/libssl.so.1.0.0
24 >> (0x00007f2794cff000)
25 >> libcrypto.so.1.0.0 => /usr//lib64/libcrypto.so.1.0.0
26 >> (0x00007f279491a000)
27 >> libz.so.1 => /lib64/libz.so.1 (0x00007f2794703000)
28 >> libmcrypt.so.4 => /usr//lib64/libmcrypt.so.4 (0x00007f27944d1000)
29 >> libdl.so.2 => /lib64/libdl.so.2 (0x00007f27942cd000)
30 >> libonig.so.2 => /usr//lib64/libonig.so.2 (0x00007f2794062000)
31 >> libt1.so.5 => /usr//lib64/libt1.so.5 (0x00007f2793e03000)
32 >> libfreetype.so.6 => /usr//lib64/libfreetype.so.6
33 >> (0x00007f2793b64000)
34 >> libpng15.so.15 => /usr//lib64/libpng15.so.15 (0x00007f2793939000)
35 >> libjpeg.so.8 => /usr//lib64/libjpeg.so.8 (0x00007f27936e4000)
36 >> libdb-4.8.so => /usr//lib64/libdb-4.8.so (0x00007f279336a000)
37 >> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f279314c000)
38 >> libgdbm.so.3 => /usr//lib64/libgdbm.so.3 (0x00007f2792f46000)
39 >> libcurl.so.4 => /usr//lib64/libcurl.so.4 (0x00007f2792ceb000)
40 >> libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f2792ada000)
41 >> libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2792873000)
42 >> libxml2.so.2 => /usr//lib64/libxml2.so.2 (0x00007f2792512000)
43 >> libmysqlclient.so.16 => /usr/lib64/mysql/libmysqlclient.so.16
44 >> (0x00007f279218b000)
45 >> libnetsnmp.so.30 => /usr//lib64/libnetsnmp.so.30
46 >> (0x00007f2791eb0000)
47 >> libc.so.6 => /lib64/libc.so.6 (0x00007f2791b0a000)
48 >> libpam.so.0 => /lib64/libpam.so.0 (0x00007f27918fb000)
49 >> libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f27916d8000)
50 >> libstdc++.so.6 =>
51 >> /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/libstdc++.so.6
52 >> (0x00007f27913d3000)
53 >> /lib64/ld-linux-x86-64.so.2 (0x00007f279681b000)
54 >> librt.so.1 => /lib64/librt.so.1 (0x00007f27911ca000)
55 >> libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f2790f95000)
56 >> libgcc_s.so.1 =>
57 >> /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/libgcc_s.so.1 (0x00007f2790d7e000)
58
59
60 looks fine
61
62
63 >
64 > and
65 >
66 >> /usr//lib64/libcurl.so.4
67 >
68 >> # ldd /usr//lib64/libcurl.so.4
69 >> linux-vdso.so.1 (0x00007fffa7bff000)
70 >> libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0
71 >> (0x00007f510232b000)
72 >> libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0
73 >> (0x00007f5101f46000)
74 >> libz.so.1 => /lib64/libz.so.1 (0x00007f5101d2f000)
75 >> librt.so.1 => /lib64/librt.so.1 (0x00007f5101b27000)
76 >> libc.so.6 => /lib64/libc.so.6 (0x00007f5101781000)
77 >> libdl.so.2 => /lib64/libdl.so.2 (0x00007f510157c000)
78 >> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f510135f000)
79 >> /lib64/ld-linux-x86-64.so.2 (0x00007f51027fb000)
80
81
82 looks fine
83
84
85 >
86 > Doesn't mean anything to me though... ;)
87
88 It's just a list of the libs a file knows it is linked to.
89 First is the lib name then the big arrow (=>) then the file containing
90 that lib then a bunch of numbers. Ignore the numbers, pay most attention
91 to anything that says "not found" - that's the junk revdep-rebuild looks for
92
93
94 >
95 >> preserved-rebuild should just take care of all this automagically.
96 >> Do you have preserve-libs in FEATURES?
97 >
98 > Nope... is this now recommended? Is it the default on new installs?
99
100 Yes it's the default for new installs and comes highly recommended
101 (unless you like having stuff not work at all till revdep-rebuild
102 completes...)
103
104 There was a news item 2013-06-07:
105
106 2013-06-07-portage-preserve-libs-default
107 Title Portage preserve-libs default
108 Author Zac Medico <zmedico@g.o>
109 Posted 2013-06-07
110 Revision 1
111
112 Beginning with sys-apps/portage-2.1.12, FEATURES=preserve-libs is
113 enabled by default. Even though preserve-libs makes it unnecessary to
114 use revdep-rebuild for most common updates, it is still a good practice
115 to run `revdep-rebuild -ip` after updates, in order to check if there
116 are any broken library dependencies that preserve-libs was not able to
117 handle. For example, see http://bugs.gentoo.org/show_bug.cgi?id=459038.
118
119 If you would like to disable preserve-libs by default, then set
120 FEATURES="-preserve-libs" in make.conf. See the make.conf(5) man page
121 or the following wiki page for more information:
122
123 http://wiki.gentoo.org/wiki/Preserve-libs
124
125 >
126 >> Do a pretend run of revdep-rebuild. I'll bet you end up rebuilding curl
127 >> and/or php, but not apache.
128 >
129 > Actually, I did that right after the updates and it didn't recommend
130 > anything (I always do revdep-rebuild -p after any system updates like
131 > gcc, glib/c, etc)...
132 >
133 >> Apache is unlikely to be at fault, it loads a dynamic module and use it,
134 >> that module either works or it doesn't.
135 >
136 > Ok... so, the question is still why did it die?
137 >
138 > This happened by the way when the logs were rotated by logrotate. Maybe
139 > that is significant?
140
141 Yes, that is highly significant.
142
143 IIRC logrotate can work in one of two ways:
144
145 1. rename the log file and create a new empty one
146 2. copy the log file elsewhere and truncate the original
147
148 I forget which way it does it for the moment...
149
150 #1 is fast but leaves the daemon (apache or syslog) trying to write to a
151 file that isn't there anymore. Or worse, it's writing to an open file
152 that has been deleted and a new one with the same name still exists.
153 #2 is slower but safer.
154
155 Either way, the apache daemon has to be told it's log file went away.
156 Not all daemons can use inotify to just find this out, some have to be
157 told, so logrotate resets/restarts/hups them. In the case of apache it
158 does a graceful restart (what you get with apachectl graceful).
159
160 Your apache re-read it's config file at that point, found any error for
161 php and decided to roll over and die. It's designed to do that (nagios
162 os similar btw would have told you this happened)
163
164
165
166 >
167 >>> The GCC Upgrade guide is a bit outdated (still referring to gcc 3.4 and
168 >>> 4.1, with no mention of newer versions, so I wasn't sure if that was
169 >>> still necessary...
170 >
171 >> According to the posted error, this has nothing to do with compiler
172 >> versions, it is linker errors related to glibc
173 >>
174 >> You do not have to rebuild system, world or the known universe. You only
175 >> have to do that when the a gcc upgrade changes the data format on-disk
176 >> that the C++ compiler generates. That has not happened here.
177 >>
178 >> There's an insane amounts of FUD around about rebuilding gcc, all of it
179 >> originating from ricers without a clue. You run strictly stable-only so
180 >> never fear, if a gcc upgrade required a world rebuild you would have
181 >> already been subjected to 12-month long threads about it right here on
182 >> this list
183 >
184 > I know, and the GCC upgrade guide is pretty clear on that point, and
185 > since I didn't say anything about rebuilding anything other than
186 > sys-devel/libtool, which it does specifically mention, I'm not sure why
187 > you brought that up in this context.
188 >
189 > I just did it (rebuilt libtool) anyway, maybe I should do the same for
190 > curl and/or php...
191
192 It won't do any harm. php might take a while to rebuild though... ;-)
193
194
195 >
196 > No worries, apache is only used for local admin stuff anyway, so it
197 > isn't like anyone other than me will notice if it dies... :)
198
199
200
201 --
202 Alan McKinnon
203 alan.mckinnon@×××××.com

Replies

Subject Author
Re: [gentoo-user] Apache died this morning... why? Tanstaafl <tanstaafl@×××××××××××.org>