BOINC 6.13 change log


Disclaimer: The actual change log was taken from the Alpha email list and the Trac Timeline repository changes commits, but it can happen that changes in the list are missing, misplaced or weren't in the version it says it was in.


  • client: write log msgs saying whether GPUs are OpenCL-capable
  • client: fix bug introduced in [23765] that produced garbage in <coproc> elements in sched req msgs and elsewhere. peak_flops is a double. If you print it using %d, everything from that point forward is messed up.
  • client: fix typo that caused a lot of spurious "project has XXXXXX deadline misses" messages.
  • fix compile warnings


  • client: write log msgs saying whether GPUs are OpenCL-capable
  • client: fix bug introduced in 23765 that produced garbage in <coproc> elements in sched req msgs and elsewhere. peak_flops is a double. If you print it using %d, everything from that point forward is messed up.
  • client: fix typo that caused a lot of spurious "project has XXXXXX deadline misses" messages.
  • fix compile warnings.
  • Mac: Fix bug where menubar icon menu did not work after changing skin.
  • WINSCR: Remove diagnostics screensaver dialog when the screensaver fails to be able open up the log files.
  • client: possibly fix bug that caused no-GPU prefs to be ignored.
  • Mac: Refine big fix for menubar icon menu not working after changing skin.
  • client: fix bug related to deselecting resource types in project prefs. Some logic was missing.
  • client: clear have_nvidia/ati flags in CC_STATE so you don't show garbage in project properties.
  • Manager and GUI RPC: Remove debt fields from PROJECT: not used anymore. Add sched_priority field.
  • client: fix scheduler bug that treated all CPU jobs as non-high-priority.
  • client: don't print spurious "domino prevention" and "thrashing prevention" msgs.
  • manager: show project descriptions in same size font as the rest of the dialog.
  • manager: do the above font change only on Windows.
  • manager: Handle string conversion at compile time instead of run time.
  • manager: fix messed up logic that caused projects to show "platform not support" incorrectly. Note: the code in this entire area seems way too complex.
  • manager: tweak project desc font size.
  • client, work fetch policy: adjust project REC by the amount of work queued, to increase variety.

NOTE (David): at some point I think I had a reason to not do this, but I can't remember what it is.

  • client, job scheduling policy: fix how project REC is adjusted
  • manager: don't show "Estimated computation speed" in task properties. The quantity involved is not actually computation speed. Also don't show Max RAM usage.
  • lib: Fix the various '????' fields in the diagnostics framework during a crash on Windows. Somewhere along the lines I messed up with the conversions of single-byte characters vs. double-byte characters.
  • client: add <rec_half_life_days> config option.
  • client: if a project has zero resource share, don't piggyback a work request onto a non-work-request RPC.
  • client: show the right prefix for <cpu_sched_debug> messages.
  • MGR: Fix "Can't load Image" messages in Simple View; allow gaps in slide show file numbering; reload images if new project files downloaded.



-- clients that upgrade to this version should see nothing unusual. Clients that downgrade from this version to a previous version should see all projects reset (i.e. tasks disappear and then get re-downloaded).

  • manager: always show whether a file transfer is upload or download.
  • client: don't scale work requests by resource share.
  • client: change the implementation of upload signatures as described here:
  • client: debug the above.
  • client: debug distributed storage functions.
  • Mac: Begin changes for XCode 4.1 and GCC 4.2
  • Mac: Finish changes for XCode 4.1 and GCC 4.2
  • lib: Initialize config_coprocs struct in CONFIG::defaults()
  • SCR: Fix delay dismissing screensaver under Mac OS10.7
  • client: fix bug in <exclude_gpu> config option.
  • client: extend <exclude_gpu> option so that if <device_num> is omitted, all GPUs of the given type are excluded.
  • client: change the way upload signatures are generated in an attempt to make them work with existing servers.
  • client: undo the above. It doesn't work.
  • client: fix bug in get_descendants(), which prevented the client from cleaning up subprocesses of misbehaving multiprocess apps.
  • VM apps: eliminate vbox64 plan class. Only vbox.
  • client: add optional <file_prefix> to APP_VERSION>. If present, "file_prefix/" is prepended to the logical names of input and output files of jobs using that app version. I.e. for Vbox wrapper based app versions, file_prefix is "share", so that I/O files are put in a "share" subdirectory of the slot dir.
  • client: if an app version has nonempty file_prefix, copy all its input and output files.
  • Mac: Fix warning about potential memory leak.
  • Mac: Updates for compatibility with current CUDA software and OS X through OS 10.7 Lion, etc.
  • client: projects with zero resource share are always lower priority, for both job sched and work fetch, than projects with positive resource share.
  • client: make round-robin simulator match what the job scheduler now does: give lowest priority to projects with zero resource share.
  • Changes for Charity Engine Desktop.
  • Mac Client: Call NSVersionOfRunTimeLibrary("cuda") to set cc.display_driver_version.
  • client: rename MODE to RUN_MODE, and rename vars accordingly.
  • client: pass XML_PARSER& rather than MIOFILE& to parse functions. Preparatory to using new-style XML parsing everywhere.
  • client: more XML parsing stuff.
  • client: XML tweak.
  • Mac installer: Bug fixes for OS 10.7 Lion.
  • WINSCR: Based on feedback from WCG about the screensaver lock-up problem attempt to provoke Windows into redrawing the primary display. It turns out that the screensaver image is a ghost image, so create a blank top-most window and close it after the graphics application has been terminated.
  • client: more XML parsing cleanup.
  • client: fix compiler warnings.
  • client: Correlate OpenCL results with CAL or CUDA results based on index of devices reported by each.
  • client: write / parse OpenCL info in COPROC XML data.
  • fix linux build errors in coproc stuff. I don't think unsigned long long is relevant here.
  • lib: fix compile error on Mac, Ubuntu and Windows.
  • client: fix compiler warnings on Mac and Ubuntu.
  • lib, client: revert recent changes to restore unsigned long long so we can determine cause of Linux build errors.
  • lib: try to fix Linux build errors.
  • lib: On Windows, call _strtoui64() instead of strtoull
  • client: fix bug where NVIDIA display driver version wasn't being set correctly for some laptop GPUs.
  • client/server: improve estimation of NVIDIA GPU peak FLOPS.
  • lib: use standard implementation of strtoull when available.
  • fix build error in Linux screensaver (at least on FC14).
  • client: fix off-by-1 error in buffer overflow logic for scanning keys.
  • manager: Communitcations -> Communications. Please, no spelling errors in function/variable names.
  • client: parse deprecated tags in <file_info>
  • client: fix bug that caused project attach to fail.
  • clientgui: Rom, we should do error-checking of most GUI RPCs; look for REPORT ERROR in ProjectProcessingPage.cpp
  • lib: Add boinc_getopencl_ids() to be called by OpenCL project applications.
  • lib: rename boinc_getopencl_ids() to boinc_get_opencl_ids()
  • move boinc_get_opencl_ids() from lib/ to api/. lib/ is for code that's used by >1 part of BOINC.
  • client: fix bugs related to white space around code signing keys.
  • win compile fixes.
  • lib, api: bring Xcode and make files into agreement.
  • Win: remove boinc_opencl from API lib.
  • client (and API and manager): change the data structure used for system process info.

Old: vector of PROCINFO.

Descendants of a process were found by recursively iterating through the vector. Operations are O(n).

New: map of (id, PROCINFO), and each PROCINFO has a vector of its children. Operations are O(log(n)). Also combined Mac/Win/Linux? variants of code that was essentially the same.

  • Windows compile fixes.
  • code shuffling.
  • more code shuffling:

- proc_control: controlling processes - procinfo: enumerating and querying processes - run_app_windows: launching apps as other users on Win

  • client/API/vboxwrapper:

Add a mechanism so that apps can report sub-processes that are not descendants (e.g., virtual machines). These processes are then counted as part of the app, not as "non-BOINC CPU time". This fixes a bug where processing was incorrectly suspended because CPU usage by VM apps exceeded the "CPU usage limit" pref.

Implementation: -- The PIDs of the processes in question are passed from app to client via shared-memory, in the app_status channel. A new variant of boinc_report_app_status() supports this.
-- The VBox wrapper queries the PID of the VM, and reports it in this way.
-- procinfo_app() includes a new argument: a list of PIDs that are part of the app, although not ancestrally related to the main process.
-- In the client, ACTIVE_TASK now includes a vector "other_pids". If this is nonempty, it's passed to procinfo_app().

  • lib: Fix compile errors; add app_control.cpp to XCode project.
  • lib: minor code shuffle.
  • client: fix bugs with white space around code sign keys and file signatures.
  • client: when describing app versions in scheduler requests, we still must use CUDA instead of NVIDIA; that's what's in the server code.
  • scheduler: use new XML parser for most request elements.
  • scheduler: parse NVIDIA as well as CUDA in app version descriptions (workaround for recent clients).
  • client: make exit_before_start a cc_config.xml option (as well as a cmdline option).
  • client: if too many <coproc> elements in cc_config.xml, detect it and inform user.
  • client: new XML parser had a limit of 8KB for strings. This broke things. Increase it to 256KB.
  • Mac: More fixes for building under XCode 4.1


  • client: XML-escape the URLs in RSS feed lists.
  • lib: make xml_unescape work for arbitrarily large strings.
  • client: don't pass --gpu_type to GPU apps; this breaks many existing apps. Instead, pass the GPU type (and the device number) in app_init_data.xml.
  • client: fix error in parsing of XML comments.
  • client: make RR simulation more accurate by simulating time-slicing explicitly. Also simulate changes in project REC and hence in scheduling priority.
  • client: add a log flag "rrsim_detail" that prints time-slice-level info.
  • client: message tweak.
  • client: remove code related to debt-based scheduling.
  • client: make file upload work w/ old handlers.
  • client, GUI RPC, Manager: In GUI RPC, change RESULT.gpu_mem_wait to scheduler_wait. It means that the app did a boinc_temporary_exit(), and is waiting to be rescheduled. GPU mem wait is one source of this, not the only one.
  • lib, api: bring Xcode and make files into agreement.
  • client: get GPU available RAM at startup (only).
  • client: fix compile warning.
  • client: fixes to the above.
  • client: prevent infinite recursion (and stack overflow) in procinfo.cpp:add_child_totals(). Not sure how this could happen.
  • client: escape URLs for curl, otherwise filenames with spaces don't work.
  • client: curl_easy_escape() escapes way too much. Just escape spaces.
  • XML parsing: do XML unescaping in place rather than allocating a buffer on the stack. Fixes a Manager crash on the Mac, where the default thread stack size seems to be 512KB.
  • client: Update Windows detection code to support Windows 8. (From: [P3D] Crashtest)
  • client: change in the use of GPU available RAM:

-- Measure the available RAM of each GPU when BOINC starts up. If this fails, set available = physical. Show available RAM in startup messages.
-- Use available RAM rather than physical RAM in selecting the "best" GPU instance.
-- Report available RAM to the scheduler.
-- TODO: change the scheduler to use available rather than physical if it's reported.

  • fix more compile warnings.
  • client: report available GPU RAM to scheduler.
  • lib: parse <available_ram> in coproc XML.
  • lib: do coproc XML parsing using new XML parser.
  • lib: fix compiler warning.
  • Mac: Change XCode project to build both 32-bit and 64-bit BOINC libraries for debug as well as for deployment.
  • client: report network usage to the client when enforcing network quota preferences.
  • client: with VBox on Win, the process graph sometimes has cycles. Not sure where this comes from. But avoid infinite recursion when traversing descendants.
  • client: make the attributes of GUI RPCs (network, authentication) explicit rather than determined by position in a list.
  • client: add a new "read-only" attribute for GUI RPCs. This is in preparation for handling GUI RPCs in separate threads.
  • client: remove code to support pre-V6 graphics.
  • Win fixes.
  • lib: add generic interfaces for threads and thread synchronization.


  • client: in handling the acct_mgr GUI RPC, don't start the RPC directly; that might fail if CLIENT_STATE::gui_http is busy. Instead, set a timer field.
  • client: structure ACCT_MGR_OP the same as other GUI_HTTP_OP variants.
  • client: clarify the comments on GUI_HTTP and GUI_HTTP_OP.

Note: GUI_HTTP and GUI_HTTP_OP are misnomers; they refer to any HTTP op other than scheduler requests and file transfers. Should change the name, maybe to CLIENT_HTTP*

  • client: intermediate checkin for replicated trickle-ups. Not finished yet.
  • client: fix bug in ATI GPU detection, caused zero RAM measurements.
  • client: fix ATI GPU max mem display issue.
  • client: more stuff for replicated trickle ups.
  • client: more work on replicated trickles. Not working yet.
  • client: replicated trickles. Seems to be working now.
  • client: added <trickle_debug> config option.


  • Mac: fixes for problems with OS 10.4 compatibility.
  • client: Disable GPU detection of Windows when running as a service to avoid a deadlock condition with the latest ATI drivers.


  • client: fix spurious error message about trickle-up URLs.
  • client: don't call CLIENT_STATE::free_mem() on shutdown. This is for debugging only, and it can cause crashes.
  • Mac: fixes for problems with OS 10.4 compatibility.
  • Mac: more fixes for problems with OS 10.4 compatibility.
  • Mac: update wxMac build script for XCode 4.1 and OS 10.4 compatibility.
  • client: Fix compile break on Mac.
  • lib: only build the static version of libboinc.
  • Updates Linux notifications to use current libnotify.
  • Fix build problems on Mac OS X using autotools.
  • Consistently use #if HAVE_X for platform checks, rather than #ifdef HAVE_X or #if defined(HAVE_X)
  • In Unix build, make lots of compiler checks standard.
  • Fix some compile warnings. From Matt Arsenault.

-- Note: there are now lots of compile warnings in clientgui/ on Unix, mostly in WxWidgets code.

  • client: Fix compile break on Mac.
  • client: Fix compiler warnings on Mac.
  • manager: fix build break on Linux Undoes part of yesterday's checkin.
  • more changes from #ifdef HAVE_X to #if HAVE_X.
  • WINSETUP: Add more logging to the create group and add user to group functions in an attempt to figure out what is going on with Windows 8.
  • client: fix a bug reported by Jacob Klein, where work fetch didn't work right in the presence of multiple GPUs and <exclude_gpu> config options.

For example, suppose:

--> you have 2 GPUs and 2 projects. Project A is excluded from GPU 1. you have lots of jobs for project A .

Then the client won't try to fetch jobs from project B.

The problem had 2 parts: a) round-robin simulation wasn't taking GPU exclusions into account. In the above example, it would think that both GPUs had jobs. I fixed this by computing the # of GPUs from each project is excluded, and using this in the RR simulation.

b) Once this was done, I needed to make the client request GPU jobs from project B rather than project A. I did this with following policy: If a project has excluded GPUs of a given type, and has a runnable job of that type, don't ask it for more work of that type.

Notes: the policy in b) is crude, and it means that work-buffer preferences are ignored in some cases. neither a) nor b) takes into account app-level exclusions. I could fix both of these with a lot of work, but I'd rather move to a model in which dissimilar GPUs are modeled as different resources, which would remove the need for the <exclude_gpu> mechanism in the first place.

  • client: specify the project in "Some tasks need more memory than allowed by your preferences" messages.
  • client: fix bug that could cause GPU idleness in the presence of GPU exclusions. The problem was in the job-selection phase, which picks enough jobs to use all devices.

It was ignoring GPU exclusions, so for example on a 2 GPU system it could pick 2 jobs from a project for which 1 GPU is excluded, and as a result 1 GPU would be idle.

Solution: during job selection, keep track of GPU usage on a per-instance basis. Select a job only if it can run on a non-excluded GPU.

  • client: in computing ncprocs_excluded (which is used in work fetch policy) don't count exclusions of non-existent devices.
  • client: compute project scheduling priority more efficiently.
  • client: if an app version can't be used because the GPUs it needs are all excluded, mark it and all its results as "coproc missing" so that they won't be looked at in scheduling logic.
  • client: Fix compiler warnings.
  • lib: move XML parse test program to its own file.

Note: XML_PARSER::parse_str() doesn't currently work right for something like <foo><a>xx</a></foo>. It should return "<a>xx</a>". TODO.

  • client: don't generate notice if lookup of host in remote_hosts.cfg fails.
  • client: don't show "(device N)" if there's only 1 device.
  • client: win compile fixes.
  • WINSCR: Before shutting down the screensaver, quickly reinitialize the OpenGL device on the primary display. Some of the issues being reported with the screensaver is a left over ghost image of the OpenGL display before the graphics application was terminated because keyboard/mouse activity was detected.
  • client: in the function that sorts jobs by arrival time, don't use name as a tiebreaker. That will typically group jobs of the same application, and (it is believed that) things run faster when applications are mixed.
  • client: fix a memory leak; would lose ~120 bytes each time a job is started.
  • lib: Re-enable boinc lib mem snapshots for BOINC based applications (boinc, boincmgr, boinc.scr) on Windows.
  • client: fix memory leak when reading stderr of completed job. This caused 128KB + size of stderr loss for each job.
  • client: print error message if reading stderr fails (e.g. because of malloc failure).
  • client: free vectors in NOTICES, RSS_FEEDS, and DAILY_XFER_HISTORY in free_mem() (for mem leak checking).
  • client, problem: suppose a project has 2 data servers, and one of them is down. If several downloads from the broken one fail, we go into "project-level backoff" and don't start downloads from either server. (Same applies to uploads).

Solution: make project-level backoff apply only to transfers that have already failed at least once.

  • GUI RPC: add get_daily_xfer_history() RPC for getting the daily records of #bytes uploaded and downloaded.
  • client: fix bug in writing daily xfer history file.
  • client: write descriptions of OpenCL devices to stdout; work around a bug where OpenCL reports global RAM of ATI GPUs incorrectly.
  • client/server: change field names in OPENCL_DEVICE_PROP to match those in the clGetDeviceInfo() calls.


--> if there's already a name for something, use it. --> follow case conventions .

  • client and scheduler: estimate peak FLOPS for GPUs that are detected by OpenCL but not by native APIs (CUDA/CAL). This is limited by the fact that OpenCL doesn't give us the necessary hardware info (ATI; wavefrontSize; NVIDIA: compute capability). We use the minimum values for these, so in most cases we'll be underestimating the peak FLOPS.
  • client (Mac): there was no error check of the creation of a memory-mapped file used for communication with an app. Add a check, and don't start the job if it fails.
  • client: don't do scheduler-requested RPCs if:

--> project is set to No New Work, and --> project has no jobs on the client.

  • client/scheduler: the code for estimating peak FLOPS of ATI GPUs (from Crunch3r) has a multiplier of 2.5 for cores/processor. This is possibly because give a double-precision estimate. But actually we want single-precision. Change it to 5. See
  • client: improve code which writes OpenCL descriptions.
  • client: Compare openCL-only devices by estimated peak flops.
  • client: compare OpenCL-only devices the same as other devices.
  • code cleanup.
  • client: Fix crashing bug in OpenCL detection on Windows.
  • lib: Fix crashing bug for debug builds of the BOINC client.
  • Mac installer: start boinc users & groups at ID 501, find human users via Directory Services, use LoginItemAPI.c


  • client/server: add a new result state RESULT_UPLOAD_FAILED for when the job completed successfully but one or more output files had permanent upload failures. Show this state in web interfaces.
  • client and user web: show NVIDIA driver version and CUDA version as, e.g., 275.33 instead of 27533.
  • vbox: Move the destination of the VBOX_USER_HOME environment variable to <boinc_data_dir>/projects/virtualbox so that the virtualbox configuration can remain consistent across one or more projects.
  • client: fix NVIDIA driver version and CUDA version display for Mac.


  • client: fix honoring of cc_config ignore GPU options.
  • WINSCR: Move the reset display call to the end of the full screensaver section. We do not need to perform a display reset in the various test modes.
  • client: fix bug where network suspend got ignored when OS suspends (e.g. sleep or hibernate).
  • client: create and destroy PERS_FILE_XFERs even if network suspended. This will show pending uploads in the Transfers tab.
  • file_upload_handler (server): fix message to client when can't acquire lock.
  • client: parse <alt_platform> in state file correctly.
  • MGR: Support both the old and new libnotify at runtime on Linux.
  • Disable Linux screen saver for right now (broken on latest Ubuntu).
  • MGR: don't show slot number in simple view task list.
  • MGR: Remove code that blocks the switch to simple view when an accessibility aid is running.
  • Remove dead code related to v5 graphics applications from the client software.
  • MGR: Remove the triangle in the lower right-hand corner of the default project image for the simple GUI.
  • MGR: Persist Simple GUI notification dialog size and position information.
  • MGR: Remove context menu help buttons from dialog.
  • client: show OpenCL version correctly on Win.
  • client: improvements to job scheduling and work fetch policies.

Job scheduling: the baseline policy is to schedule based on "project priority", which is how much processing P should receive based on resource share minus how much it actually has received recently. This policy tends to run jobs from the same project together, so we modified it by adding a priority adjustment as jobs are scheduled. The idea is that if 2 projects have about the same priority they should split the processors.

The problem: the adjustment was too large on hosts that are on only a small fraction of the time, thus tending to run 1 job from each project, regardless of priority.

Solution: make an adjustment that reflects the host's actual throughput. See adjust_rec_sched() for details.

  • Work fetch: similar situation.

We were making an adjustment based on how much work the project currently has queued, but the adjustment drowned out the project priority, so we'd tend to always get work from the project that has least work queued.

Solution: make a smaller adjustment (-.3 ... .3)

  • client: bug fix for the above.
  • client: in message announcing app start, show the plan class
  • client: don't show "unrecognized XML" messages for account files. It's typically project-specific prefs that the client doesn't know about.
  • client: call xp.skip_unexpected() if get unexpected tag, to avoid showing multiple error messages.
  • Fixed bug in xml_unescape() that caused a segfault if an entity of the form &#NNN; was truncated.
  • client: associate a PROJECT with HTTP_OP where applicable, so that if you use <http_debug> and filter by project you don't see other projects' HTTP stuff.
  • MGR: Make the Default skin loadable from the file system.
  • MGR: Change the in-memory defaults for the skin to be a light-gray background.
  • MGR: Change the dots used in the simple gui.
  • MGR: Make the dots used in the simple gui skinable.
  • MGR: Change the 'Project Web Sites' button text to 'Project Web Pages'.
  • MGR: Add a basic 'Default' skin to be included by the various installers.
  • MGR: Remove a bunch of files that are not used by the default skin anymore.
  • Mac: Update Mac build scripts, XCode project and source files to allow automated builds under OS 10.7 Lion and XCode 4.2
  • MGR: More simple GUI text changes.
  • MGR: Reduce clutter in log file.
  • client: change the way project priorities are computed, so that they do what they're supposed to (i.e. enforce resource shares).
  • client: change log flag <debt_debug> to <priority_debug>
  • client: fix bug that caused extra "<" to get written at end of global_prefs_override.xml and cc_config.xml when they are modified via GUI RPCs.
  • client: fix crashing bug when there's a cycle in the process graph. I had fixed this in one place but not another.
  • client: don't memset(0,) a PROCINFO; use clear() instead.
  • Mac: Update XCode project and Mac build scripts to build libboinc_opencl.a library and to work both with XCode 3.2 on OS 10.6.8 and with XCode 4.2 on OS 10.7.2
  • MGR: Replace backup images RedDot16.xpm, YellowDot16.xpm and GreenDot16.xpm with XPM files created from Rom's new GIF files.
  • MGR: Simple View bug fix.
  • MGR: Fix dot images .
  • Add separate OpenCL static lib for project developers.
  • Make sample OpenCL apps depend on the new OpenCL static lib.
  • MGR: Replace colored dot GIF files with new PNG files with anti-aliasing in alpha channel; generate new XPM files.
  • MGR: Force update of Task Selection List on reskin interface.
  • MGR: Move skin file to correct place, set background image's background color to black.
  • client/API: pass bool using_sandbox in APP_INIT_DATA; says whether the client is using account-based sandboxing. Needed by vboxwrapper.
  • Adjust preference dialog titles, improve Simple View and Simple Preferences.
  • VBOX: Don't redirect VirtualBox to a different directory structure for the root configuration file when the client is NOT in sandbox mode. Doing so could cause confusion if the volunteer uses VirtualBox for any of their own work. If BOINC started up first it would have appeared that their own VM's no longer existed.
  • MGR: Make the simple gui rounded edges seem smoother by increasing the radius.
  • MGR: Fix project name font in the tasks area, normal size. Increase its weight to BOLD.
  • MGR: Make sure the dot is red if the project has been suspended for the given task.
  • MGR: Scale background skin so that it now fits in the new simple GUI.

NOTE: We are in the process of trying to get new artwork so that we can handle the localization issues better.

  • client: fix NVIDIA peak FLOPS.
  • MGR: Fix crash bug.
  • compile warning fix.
  • MGR: Fix project name font on Mac.
  • MGR: Bug fix: if currently selected task in Simple View deleted, change selection.
  • MGR: Sort Simple View task selection control alphabetically.
  • MGR: Reverted the above change because wxBitmapComboBox loses existing items' clientData.
  • Mac installer: Fix a very old bug.
  • client: reimplement the round-robin simulator to reduce its runtime from O(N2) to O(N), where N is the number of runnable jobs (which can be in the thousands). This will make the client emulator run a lot faster, and will reduce the client CPU overhead a bit.
  • API: change boinc_get_opencl_ids() so that it returns a BOINC error code (< -100) if the app_init.xml is missing or bad (i.e. we're running standalone), and an OpenCL error code (> -100) if an OpenCL call failed.
  • MGR Skins: Fix numerious issues related to bad entries in the Skin XML file.
  • client: free mem on exit if debug mode.
  • MGR: Sort Simple View task selection control alphabetically, working around clientData bug in wxBitmapComboBox::Insert()
  • MGR: Allow skin to specify the (simulated) opacity of Simple View task and project panels.
  • Mac: Modify XCode project to link with libcrypto.0.9.7.dylib and libssl.0.9.7.dylib if OS 10.5 SDK is present, to allow running BOINC on OS 10.4 and later. If OS 10.5 SDK is not present then it will link with libcrypto.0.9.8.dylib and libssl.0.9.87.dylib and product will require OS 10.6 or later.
  • Mac: Update build instructions for client and libraries.
  • Mac installer: fix bugs when installing under OS 10.5.
  • Mac installer: Update release script to include Default skin.


  • client: fix typo in project parse code.
  • client: smoothed working-set size wasn't being computed correctly. It was always just the most recent size.
  • Mac: Update build instructions for client and libraries.
  • Mac installer: Update release script to create projects/virtualbox/ directory.
  • MGR: Exit manager as soon as quit rpc to client succeeds, instead of waiting for client to exit.


  • GUI RPC client: parse the reply of quit(), so that it returns an error if no response.
  • lib: fix a "strcpy(p, p+1)" instance.
  • Mac installer: update ReadMe? files for BOINC 6.13.x
  • client: fix bugs when writing/parsing cc_config.xml via GUI RPCs (e.g. when editing it via the Manager). Include only the GPUs that were specified in the original cc_config.xml, not those detected by the client.
  • client: fix bug that failed to require authorization for GUI RPCs that are supposed to be authorized.
  • client: report parse errors in acct_mgr_url.xml and acct_mgr_login.xml
  • fix compile warnings.
  • client: show GPU exclusions at startup (need to do this after reading the state file, since GPU exclusions refer to projects).
  • client: fix bug that added garbage <coproc> element to <app_version> in state file when using GPU exclusions.
  • client: fix work fetch bug. If we're contacting a project to report results, only piggyback work requests for resources for which that project is the highest priority that may have work.
  • client: compute result.not_started more efficiently. TODO: continue efficiency work. There's still some quadratic stuff.
  • client: Fix compile error.
  • Mac: add -Wno-format-security compiler flag to suppress warning that format string is not a string literal.
  • client: fix errors in (currently unused) get_max_cpu_temperature() code for Macintosh.
  • client: attempt to fix bug reported by John McLeod?, where the client crashes after giving up (90 day timeout) on an upload. I'm guessing this was caused by [trac]changeset:24391[/trac], which changed the order in the poll loop from garbage_collect -> file_xfers->poll -> pers_file_xfers->poll -> handle_pers_file_xfers


garbage_collect -> handle_pers_file_xfers -> file_xfers->poll -> pers_file_xfers->poll

I don't understand why this would have caused a crash, but so be it. I restored the original order, but with handle_pers_file_xfers not inside the if (!network_suspended).

  • client renamed handle_pers_file_xfers() to create_and_delete_pers_file_xfers()
  • Mac: remove -Wno-format-security compiler flag (no longer needed).
  • check in trickle crash fix.
  • MGR: Bug fix.
  • MGR: apparently WxWidget's combo box has problems (bugs) if multiple items have the same string. So, in simple view task combo box:

-- show % done (unique in most cases).
-- remove version number.
-- instead of showing plan class, show "NVIDIA GPU" or "ATI GPU".
-- TODO: update the fraction done.

  • client: condition RR sim negative FLOPs message on rr_simulation.
  • client: reduce complexity, possibly get rid of a crash condition on 64-bit Windows.
  • MGR: Change default skin to the one Jacob Klein purposed.
  • client: on transient upload failure, don't do start_xfer() within PERS_FILE_XFER::transient_failure(); we're about to delete and free the FILE_XFER. The transfer will be restarted in the next poll.
  • Mgr: Fix Simple View layout to fit 3 decimal places for % done.
  • Mac installer: fixes for OS 10.4 compatibility.
  • MGR: add spaces to identical application names in Task Selection control to make each entry unique.
  • WINSCR: Add a reference to SCRAPPERR_BOINCNOGRAPHICSAPPSEXECUTING in the message lookup table.
  • WINSCR: In the ResetProc message pump, change the call for CloseWindow() to DestroyWindow().
  • WINSCR: Sync up the timer IDs.
  • OpenCL API: fix logic error.
  • OpenCL API: check return value from clGetDeviceIDs().
  • WINSCR: Fix compile error.
  • WINSCR: Attempt to gracefully shutdown a graphics application first.
  • client & lib: Update the OpenCL header to include calling conventions and weak link information for Mac machines.


  • MGR & client: On Mac, to work around bug in XCode 4.2, ignore command line arg "-NSDocumentRevisionsDebugMode=YES".
  • Mgr: fix a bug deleting entries from Task Selection control introduced on 9 November.
  • Mgr: If a slide show has only one slide, load it only once.
  • client: check return value of FILE_REF when parse project file. Fixes crashing bug.
  • MGR: Update default skin to v4.