[ccache] Attemts to write to CCACHE_DIR when CCACHE_READONLY 1

Barry OReilly gundaetiapo at gmail.com
Mon Oct 1 16:12:11 MDT 2012


I set the following env vars:

CCACHE_DIR=/proj/user/user2
CCACHE_TEMPDIR=/tmp
CCACHE_COMPRESS=1
CCACHE_READONLY=1

I have read access to /proj/user/user2 but not write access.  user2 built
one .o file already, but not the one in this example.  I issue a
compilation command directly:

~boreilly/sw/ccache-3.1.8/install/bin/ccache g++
-D_CSU_NAME=\"FooTypeAlgorithm\" -D_CSC_NAME=\"Foo\" [several -I snipped]
-Wall -O2 -fno-strict-aliasing -fPIC -c -o
src/Processing/Foo/FooTypeAlgorithm/obj/Bar.o
src/Processing/Foo/FooTypeAlgorithm/src/Bar.cc

I get error:
ccache: FATAL: Failed to create /proj/user/user2/8: Permission denied

But I set CCACHE_READONLY to 1.

OS: RHEL5
g++ version: 4.4
ccache version: 3.1.8

I've attached the strace output.  What am I doing wrong?
-------------- next part --------------
execve("/home/boreilly/sw/ccache-3.1.8/install/bin/ccache", ["/home/boreilly/sw/ccache-3.1.8/i", "g++", "-D_CSU_NAME=\"FooTypeAlgorithm\"", "-D_CSC_NAME=\"Foo\"", "-I/proj/user/build/3rdparty/OTS", "-Isrc/Processing/Foo/Foo", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/LibraryServic", "-Isrc/Processing/AncillaryProc", "-Isrc/Processing/Foo/DMI_A", "-Isrc/Processing/Foo/DMI_A", "-Isrc/Processing/LibraryServic", ...], [/* 108 vars */]) = 0
brk(0)                                  = 0x18bec000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b207d0a1000
uname({sys="Linux", node="myhost", ...}) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=232703, ...}) = 0
mmap(NULL, 232703, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b207d0a2000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`>\200\3171\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=615136, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b207d0db000
mmap(0x31cf800000, 2629848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x31cf800000
mprotect(0x31cf882000, 2093056, PROT_NONE) = 0
mmap(0x31cfa81000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x81000) = 0x31cfa81000
close(3)                                = 0
open("/usr/lib64/libz.so.1", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\37\0\3201\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=85928, ...}) = 0
mmap(0x31d0000000, 2178920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x31d0000000
mprotect(0x31d0014000, 2093056, PROT_NONE) = 0
mmap(0x31d0213000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x31d0213000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\332\1\3171\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1717800, ...}) = 0
mmap(0x31cf000000, 3498328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x31cf000000
mprotect(0x31cf14d000, 2097152, PROT_NONE) = 0
mmap(0x31cf34d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14d000) = 0x31cf34d000
mmap(0x31cf352000, 16728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x31cf352000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b207d0dc000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b207d0dd000
arch_prctl(ARCH_SET_FS, 0x2b207d0dcd30) = 0
mprotect(0x31cf34d000, 16384, PROT_READ) = 0
mprotect(0x31cfa81000, 4096, PROT_READ) = 0
mprotect(0x31cee1b000, 4096, PROT_READ) = 0
munmap(0x2b207d0a2000, 232703)          = 0
brk(0)                                  = 0x18bec000
brk(0x18c0d000)                         = 0x18c0d000
stat("/proj/user/user2/ccache", {st_mode=S_IFDIR|0750, st_size=64, ...}) = 0
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=409600, ...}) = 0
access("/home/boreilly/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/home/boreilly/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/home/boreilly/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib64/qt-3.3/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/kerberos/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/opt/cisco-vpnclient/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/opt/PROJ/local/bin/g++", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/bin/g++", X_OK)    = -1 ENOENT (No such file or directory)
access("/usr/bin/g++", X_OK)          = 0
lstat("/usr/bin/g++", {st_mode=S_IFREG|0755, st_size=253896, ...}) = 0
stat("/usr/bin/g++", {st_mode=S_IFREG|0755, st_size=253896, ...}) = 0
dup(2)                                  = 3
uname({sys="Linux", node="myhost", ...}) = 0
stat("src/Processing/Foo/FooTypeAlgorithm/src/Bar.cc", {st_mode=S_IFREG|0444, st_size=4216, ...}) = 0
stat("src/Processing/Foo/FooTypeAlgorithm/obj/Bar.o", {st_mode=S_IFREG|0644, st_size=79856, ...}) = 0
stat("/usr/bin/g++", {st_mode=S_IFREG|0755, st_size=253896, ...}) = 0
stat("src/Processing/Foo/FooTypeAlgorithm/src/Bar.cc", {st_mode=S_IFREG|0444, st_size=4216, ...}) = 0
open("src/Processing/Foo/FooTypeAlgorithm/src/Bar.cc", O_RDONLY) = 4
read(4, "/*\n * Unlimited Rights\n * WARNIN"..., 4216) = 4216
read(4, "", 4216)                       = 0
close(4)                                = 0
stat("/proj/user/user2/ccache/8", 0x7fff54c3ec80) = -1 ENOENT (No such file or directory)
mkdir("/proj/user/user2/ccache/8", 0777) = -1 EACCES (Permission denied)
write(2, "ccache: FATAL: Failed to create "..., 81ccache: FATAL: Failed to create /proj/user/user2/ccache/8: Permission denied
) = 81
exit_group(1)                           = ?


More information about the ccache mailing list