Change Log 7.6.9 - 7.6.11 (September 18, 2015)
Preliminary Change Log 7.6.9 -> 7.6.10
client: clean out project dir on project reset. • always delete the files that BOINC knows about • if not anonymous platform, delete all files • except never delete app_config.xml MGR: always get current disk usage data from client; don't cache it. • The idea of limiting the rate of GUI RPCs only applies to periodic RPCs like get_results, get_state etc. The get_disk_usage() RPC is used only when rendering the disk usage tab or showing project properties. In both cases we want to show the current info. MGR: When a volunteer manually inputs an Account Manager URL, do not overwrite it with what was previously selected. MGR: format time intervals as Dd HH:MM:SS. Combine redundant TimeFormat() functions. MGR and client: print numbers with thousands separators in various places. MGR and client: have comma_print() return a std::string, avoid static buffer problem. MGR: Better test for whether client is running. Fixes bug which caused Manager to launch multiple clients when is set. client: fix problem where app processes inherit open files from async copies. • Github issue #1388 describes a situation where a wrapper can't exec an executable file because there's an open file descriptor to it. This happens only if the file is > 10 MB so that async copy is used.
The reason for this (which Rom identified) is as follows: suppose several such tasks start around the same time. The first async copy finishes and the wrapper is started by fork/exec. The process inherits open fds for all the other copies. When they finish and are started, they won't be able to exec.
The fix is to use boinc_fopen() instead of fopen() in ASYNC_COPY. The former sets its fd to close-on-exec.
In general the client should always use boinc_fopen() instead of fopen(); in addition to close-on-exec, it also does retry. David changed a couple of other fopen()s also.
Mac scr: revert to using Objective-C Garbage Collection instead of Automatic Reference Counting, for compatibility with OS 10.6 and OS 10.7, which require GC in screensavers. It is still compatible with OS 10.8 through OS 10.11. This requires building with Xcode 5 or earlier, because Xcode 6 forces converting to ARC.