[ccache] Strange Behaviour Exacerbated by ccache - suggestions for
improvement
tnoell at lexmark.com
tnoell at lexmark.com
Thu Jun 29 18:47:42 GMT 2006
Hi ccache list:
We have been using ccache for almost 2 years with almost no trouble, and
think it is great!
We did, however, recently have an interesting problem that exposed some
things in ccache that could be improved. Just thought I would relay our
experience to the list to see if it can help improve ccache in the future.
Here goes ..
A developer makes a mistake in makefile that leads to a ccache command
line that is missing the compiler as argv[1]. First argument to the
compiler and now argv[1] to ccache is '-c'. ccache immediately
dispatches cleanup_all() before processing the rest of the command line.
For this build, CCACHE_DIR points to a well populated ccache that runs
NLEVELS=4, and a full cleanup takes around 23 minutes. (we run ccache -c
in crons at night and with a 50% threshold so that we have plenty of elbow
room during the day). Developer reports "ccache is hung", and kills the
process.
We run the same command line from the shell prompt (with CCACHE_DIR unset,
therefore defaults to ~/.ccache) and it very quickly cleans the empty
~/.ccache and then dumps the usage. This is because the next argument was
-I and after cleanup_all() ccache parses the rest of the args. The
command line is long, and usage text is multi-line, and we don't
immediately see the little line tucked in between that says "Cleaned
cache". :) We eventually did, and realized what was going on.
Clearly none of this is ccache's fault. It does, however, lead to a
couple of suggestions.
1) Parse all command line options for validity before dispatching any
actions like cleanup_all(). Thus, in this case, -I would have caused
usage() end exit right away.
2) Maybe put ccache command line options in their own name space
--ccache-clean instead of -c so that compiler options on errant command
lines don't mimic ccache command line options.
All FWIW.
In any case, thanks for a great tool!
Best Regards,
Tim Noell
Lexmark International, Inc.
More information about the ccache
mailing list