On Linux dell 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 16:20:31 UTC
2009 i686 GNU/Linux
gcc (GCC) 4.5.0 20091224 (experimental)
Mozilla Firefox 3.5.7pre, Copyright (c) 1998 - 2009 mozilla.org
After building gcc trunk, when I tried to run firefox the next time I
got this error:
/usr/lib/firefox-3.5.7pre/firefox: error while loading shared libraries:
libstdc++.so.6: failed to map segment from shared object: Permission denied
and from strace here's where the attempt to open fails:
open("/usr/local/lib/libstdc++.so.6", O_RDONLY) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\37\4\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=4419480, ...}) = 0
mmap2(NULL, 939000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = -1 EACCES (Permission denied)
close(3) = 0
writev(2, [{"/usr/lib/firefox-3.5.7pre/firefo"..., 33}, {": ", 2},
{"error while loading shared libra"..., 36}, {": ", 2},
{"libstdc++.so.6", 14}, {": ", 2}, {"failed to map segment from
share"..., 40}, {": ", 2}, {"Permission denied", 17}, {"\n", 1}],
10/usr/lib/firefox-3.5.7pre/firefox: error while loading shared
libraries: libstdc++.so.6: failed to map segment from shared object:
Permission denied
) = 149
exit_group(127) = ?`
if I remove /usr/local/lib/libstdc++* the same error happens on libgcc
(amusingly enough, Thunderbird wanted to correct libgcc to Liberace;).
If I remove that as well, then firefox starts fine using system
libraries. I removed my build directory and did an update and a new
configure into a build directory, and a make install. Then firefox
failed to run just the same way.
Anyone have any ideas? The man page for mmap2 says that EACCES implies:
EACCES A file descriptor refers to a non-regular file. Or
MAP_PRIVATE
was requested, but fd is not open for reading. Or
MAP_SHARED
was requested and PROT_WRITE is set, but fd is not
open in
read/write (O_RDWR) mode. Or PROT_WRITE is set, but the
file is
append-only.
The file descriptor is open for reading as you see above, MAP_SHARED was
not requested, and PROT_WRITE is not set, which implies a problem with
the file itself.
Patrick