BOINC 7.0 change log 2


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.


  • MGR: Remove the visuals in the wizard for multi-core and opencl. This area will get a bunch of work in a future commit.
  • client: show <vbox_window> option in log, and give warning if include this while in sandbox mode.
  • MGR: Fix build breaks.
  • MGR: Fix menu redraw issue under Ubuntu's new interface. Fixes #1180 (From Huibert)
  • MGR: Wait until there is valid data in the list box before processing the OnProjectSelected() event.
  • Fix for linux idle detection bug with USB mice.
  • client: if available, use GPU model name from CAL for OpenCL model name.
  • client: added the definitions for the new Windows 7/2008r2 preSP1 and Windows 8/2012 SKUs based on the winnt.h from the Windows 8 RC SKD (also added as proof).
  • client: added the detection for some more Windows SKU.
  • client: Updates provided by Teamwork of to coproc_detect.cpp added CAL_TARGET_ID 21 as : AMD Radeon HD 78x0 series (Pitcairn) (from [P3D] Crashtest).
  • client, GUI RPC: detect and export the PCI bus, device, and domain #s.
  • Mac installer: Fix bugs I introduced on May 3 and May 6.
  • Mac installer: Create or delete Login Items and set screensaver properly when installing for multiple users on OS 10.7, 10.8


  • client: it's possible for a host to get app versions for a given app that have different platforms and different version #s. The client was erroneously deleting the one w/ the lower version when it was no longer in use.

Fix: in garbage collection, consider one version to supercede another only if they have the same platform.

  • client: split GPU detection code into separate files.
  • client: rename coproc_detect.cpp to gpu_detect.cpp
  • client: compile fixes.
  • Windows compile fixes.
  • client: for NVIDIA, make an array of the PCI info for all usable GPUs.
  • client: AMD 77x0 GPU detection addition (from [P3D] Crashtest)
  • Mac: Update XCode project with new source files.
  • fix configure error on Linux. (David) I think the AC_PROG_OBJCXX should be limited to Mac somehow.
  • API, Linux: increase timer thread stack size from 16K to 32K. Apparently new use of MAXPATHLEN can cause overflow. Fixes [trac]#1191[/trac].
  • client, lib, win: split GPU detection code into separate files.
  • Mac: Fix displayed names of BOINC installer, uninstaller, etc.
  • Mac: Code sign the BOINC installer and uninstaller if we have a valid code signing identity.
  • client: More AMD GPU detection additions (from [P3D] Crashtest).
  • Fix typo in Finnish translation for Manager.
  • Unix build: fix typo.
  • Unix build: fix for Mac OS X (from Oliver)
  • Mac client: Upgrade to curl 7.26.60 and c-ares 1.9.1
  • Mac client: build libssl.a and libcrypto.a from openssl 1.0.1c and static link them.
  • Tweak Mac build instructions.
  • client: keep track of the fraction of time that

1) a network connection is available and 2) network communication is allowed and 3) CPU computation is allowed.

  • If an app version is marked as needs_network, use the above fraction in estimating its rate of progress.
  • Replace "core client" with "client" in comments.
  • Unix build tweaks. Fixes #1193 (David: I think).
  • Unix build: remove "if" around AC_PROG_OBJCXX; apparently this is needed for Gentoo build. You may need a recent automake for this to work. Fixes #1193


  • Unix build tweak.
  • Mac client: Update wxMac build script for partial compatibility with OS 10.8 and XCode 4.5
  • client: when estimating FLOPS for an anonymous-platform app version for which no estimate has been supplied by user, use (CPU speed)*(cpu_usage + 10*gpu_usage) (--> add the 10*)
  • client: add missing end tag for <pci_info>. Doh!
  • When the client makes a scheduler RPC without requesting work, and there's a simple reason (e.g. the project is suspended, no-new-tasks, downloads stalled, etc.) show it in the event log. If the reason is more complex, don't try to explain.
  • client: msg tweak.
  • client: further msg tweaks.
  • client: in the job scheduler, there's a check to prevent overcommitting the CPUs if an MT is scheduled. Skip this check for GPU jobs.


  • more code cleanup.
  • Unix build: fix problem with Debian automated builds; from Steffen M.
  • Mac: fix build break.
  • Mac client: Update Xcode project for compatibility with Xcode 4.3.2 and Xcode 4.5
  • Client (Win): in file_size(), use _stat64() instead of stat(). Otherwise it doesn't work for files >= 2GB
  • Client: TIME_STATS::trim_stats_log() wasn't working because it's called in the constructor of TIME_STATS, which is called before we've done a chdir() to the data dir.

Note: for this reason, no disk access should be done in constructors of global objects. A quick scan found no instances of this.

  • Mac: update script which builds our installer to work with Xcode 4.3 for Lion and later.
  • client: remove "device" entry from CUDA_DEVICE_PROP, and change types of mem-size fields from int to double. These fields are size_t in NVIDIA's version of this; however, cuDeviceGetAttribute() returns them as int, so I don't see where this makes any difference.
  • client: fix bug in handling of <no_rsc_apps> element.
  • Mac: update build scripts to work with Xcode 4.3 for Lion and later.
  • Mac: update build scripts, source files and Xcode project to allow building with Xcode 4.3 and Xcode 4.5
  • client: small code cleanup, no functional change.
  • Mac: update sample code to allow building with Xcode 4.3 and to eliminate compiler warnings.
  • Mac: update sample code to allow building with Xcode 4.4 GM seed under OS 10.8 GM seed.
  • lib: treat MINGW32 like CYGWIN32 (in 1 place - should do everywhere?) from Oliver.
  • client: delete sticky files when reset project.
  • client: if we get a job for which a GPU is missing, keep the RESULT record so that we can report it to the scheduler. Otherwise we'll keep getting the same job if the project has <resend_lost_results> set.
  • lib: Adjust #include files as requested by Oliver Bock.
  • client: Re-introduce the WM_QUERYSESSIONEND window message handler to the power management window proc, it was removed during one of the Win9x code scrubs. When we see it, inform the client it is time to shutdown.
  • lib: fix typo.
  • client: don't request work for backup project for a processor type unless there are idle instances of that type.
  • client: improve "new version available" notice.
  • Mac: update script which builds our installer to work with Xcode 4.3 for Lion and later.
  • Mac: update build scripts to work with Xcode 4.3 for Lion and later.
  • Mac client: build libssl.a and libcrypto.a from openssl 1.0.1c and static link them.
  • Mac: update build scripts, source files and Xcode project to allow building with Xcode 4.3, Xcode 4.4GM and Xcode 4.5
  • Mac: update sample code to allow building with Xcode 4.4 GM seed under OS 10.8 GM seed.
  • lib: Adjust #include files as requested by Oliver Bock.
  • Mac: fix a typo in build script.
  • Mac: create build scripts for FreeType and FTGL.
  • Mac: create build scripts for FreeType-2.4.10 and FTGL-2.1.3-rc5 libraries.
  • Mac: Eliminate extra output from wxMac build script.
  • client: keep track of the fraction of time that
           1) a network connection is available and
           2) network communication is allowed and
           3) CPU computation is allowed
  • If an app version is marked as needs_network, use the above fraction in estimating its rate of progress.
  • Replace "core client" with "client" in comments.
  • client: when estimating FLOPS for an anonymous-platform app version for which no estimate has been supplied by user, use (CPU speed)*(cpu_usage + 10*gpu_usage) (--> add the 10*)
  • Compile fixes for Fedora core 17. From Christian B. Fixes [trac]#1194[/trac].
  • Fix various #include issues.

CODING STYLE LAW (minimal inclusion principle):

       If foo.cpp requires <blah.h>,
       #include <blah.h> in foo.cpp, NOT foo.h
  • MGR: Use the same fix for the simple gui that we used on the advanced gui with regards to the menu on Ubuntu's interface.


  • Fix build breaks for server components.


  • Use <cmath> instead of <math.h>. Seems to be needed on Debian.
  • API, SCR: Switch from *.txf fonts to TrueType fonts in graphics apps, ensuring that all related files have no licensing issues.
  • Mac: change names of branded installers from "*macOSX_universal" to "*macOSX_i686".
  • Mac: Update scripts for building branded installers to allow building with Xcode 4.3 under OS 10.7.x Lion.
  • VBOX: Do not perform the hardware virtualization check when the guest VM is 64-bit. 64-bit guest vms require hardware virtualization and should fail without it.
  • VBOX: Implement the <copy_to_shared/> directive in the vbox_job.xml file. If <copy_to_shared>init_data.xml</copy_to_shared> is set, the wrapper will copy the init_data.xml file to the shared directory before the VM is launched.
  • SCR: Update project files to use FreeType and FTGL on Windows.
  • WIN: Make the example graphics application build again.
  • WIN: Get rid of the linker warnings for both the default screensaver and the example graphics application.
  • API: remove support for BMP and TGA image files; the code to parse these had no license info. Only JPEG is supported now.
  • API: remove references to removed files bmplib.h and tgalib.h
  • Mac: Update build instructions and build script.
  • WIN: Don't include the newer DBGHELP symbols in MinGW64. (From Oliver Bock)
  • client: fix error in runtime estimation for active tasks.
  • MGR: Enforce the 0..10 day limit on the connect interval for the advanced preferences dialog. At some point we should rename it.
  • API: Remove ttfont.cpp from Apps should include it in their Makefile as needed.
  • SCR: Fix problem with the screensaver needlessly cycling in Windows preview mode. Ugh.
  • client: parse <network_wifi_only> in prefs.
  • WIN: Remove reference to deleted tgalib.cpp file.
  • Client/manager: there was a bug because some code was writing "cpu" in XML, and other code was looking for "CPU". To fix this and prevent similar problems, processor type names are now encapsulated in proc_type_name_xml(). Code should use this rather than having hard-wired names. Redefine: GPU_TYPE_* as macros that call proc_type_name_xml().
  • MGR: Fix build break.
  • client: when we're making a scheduler RPC for a reason other than work fetch, and we're deciding whether to piggyback a work request, skip the checks for hysteresis (buffer < min) and for per-resource backoff time. These checks are there only to limit the rate of RPCs, which is not relevant since we're doing one any.

This fixes a bug where a project w/ sporadic jobs specifies a next_rpc_delay to ensure regular polling from clients. When these polls occur they should request work regardless of backoff.

  • client: tweak to the above: never ask for work if buffer > max. This is needed to prevent projects that use next_rpc_delay from queuing unbounded work.
  • client: treat all 4xx HTTP errors as permanent.
  • code cleanup.
  • WINSETUP: Provide the ability to create the acct_mgr_login.xml form from the command line. Useful for mass deployments within companies and charities.
  • Mac installer: Fixes for short (posix) user names containing spaces.


  • client: if a project has excluded GPUs of a given type, allow it to fetch work of that type if the # of runnable jobs is <= the # of non-excluded instances (rather than 0).
  • client: If OpenCL detection gets an error for a platform or device, finish detection of the remaining platforms and / or devices.
  • client: print log msgs (enabled by task_debug) if the client times out on quitting or aborting a task, and has to kill it.
  • client: change the way project disk share is computed. Allow projects to report "desired disk usage" (DDU).
If the client learns that a project wants disk space, it can shrink the allocation to other projects.
  • client: streamline the console detach process under Windows.
  • client: fix bug that broke file signing with X.509 certificates. From matszpk. Fixes ]#1168
  • client: work around a nasty bug which crashes OSX (!) on some dual-gpu MacBooks with CUDA.
  • client: initialize memfree and memtotal before use for Nvidia cards. It appears that the Nvidia API was only setting 32-bits of the 64-bit value. The remaining 32-bits were whatever was on the stack.
  • client: Don't support CUDA on dual-GPU MacBooks with automatic GPU switching to save battery power.


  • client: take GPU exclusions into account when making initial work request to a project.
  • client: put some casts to double in NVIDIA detect code. Shouldn't make any difference.


  • client: Initialize the total mem size_t.
  • client: enforce excluded app at startup.
  • win compile fix.
  • scheduler: fix bug that cause NCI to be sent even when client is not requesting work.
  • client: parse the <vbox_window> option in cc_config.xml
  • Client/manager: if a GPU app is suspended because a GPU-exclusive app is running, show an appropriate message.
  • client: message tweak.
  • A bunch of tweaks from Steffen Moller, e.g. using MAXPATHLEN.
  • Mac: Fix build breaks.
  • client: MAXPATHLEN tweak.
  • Manager: fix "exclusive GPU app running" message logic.
  • client and API: improve the way an app checks for the death of the client.

Old: heartbeat mechanism Problem: if the client is blocked for > 30 secs (e.g. because it takes a long time to write the state file, or because it's stopped in a debugger) then apps exit. This is bad if the app doesn't checkpoint and has been running for a long time.

New: the client passes its PID to the app. The app periodically (10 sec) checks that the process still exists.

Notes: For backward compatibility (e.g. new API w/ old client, or vice versa) the client still sends heartbeats, and the API checks heartbeats if the client doesn't pass a PID. The new mechanism works only if the client's PID isn't assigned to a new process within 10 secs of the client exiting. Windows 2000 reuses PIDs immediately, so check for Win2K and don't use this mechanism if so.

TODO: For Unix multithread apps, critical sections aren't currently being enforced. Need to fix this by masking signals.

  • Win compile fixes. For now, include psapi.lib in various project properties. Try to figure out a different way.
  • MGR: We don't save Simple View's width & height since its window is not resizable, so don't try to read them back.
  • lib: don't clear entire APP_VERSION struct in APP_VERSION::parse_coproc()
  • MGR: Fix references to the taskbar events which are now included in the stock wxWidget library,
  • MGR: Fix the logging class which changed for the new wxWidgets.
  • MGR: Add missing references winspool.lib in the linker.
  • Add missing references to psapi.lib for various build configurations.
  • client: change work fetch policy to avoid starving GPUs in situations where GPU exclusions are used.
  • client: fix bug in round-robin simulation when GPU exclusions are used.

Note: this fixes a major problem (starvation) with project-level GPU exclusion. However, project-level GPU exclusion interferes with most of the client's scheduling policies. E.g., round-robin simulation doesn't take GPU exclusion into account, and the resulting completion estimates and device shortfalls can be wrong by an order of magnitude.

The only way I can see to fix this would be to model each GPU instance as a separate resource, and to associate each job with a particular GPU instance. This would be a sweeping change in both client and server.

  • SCR: Fix bug in X11 screensaver.
  • Mac: Fix icons in Simple View Task and Project selection combo boxes.
  • Mac: Fix Quit command in Simple View and a crash bug with Quit AppleEvent.
  • WINSETUP: Add the account manager auth logic from the 6.8 installer to current generation installers.
  • WINSETUP: Make whether or not to create start menu items configurable via the command line. Useful for mass deployment installs.
  • Add missing files and fix project files.
  • Slight tweaks to the installer. Installer tried picking up the wrong font file.
  • Fix assert in Simple Preferences: use window foreground color for CTransparentStaticLine if skin does not specify <static_line_color>
  • Fix assert in SkinManager when file referenced by <application_logo> tag is missing.
  • Mac: Work around wxMemoryDC::Clear() bug in drawing Simple View background.
  • Mac: Work around apparent bug in wxWidgets 2.9.4 which failed to render wxNoteBook pages.
  • VBOX: Change the way elapsed_time is calculated in vboxwrapper.

Previously: elapsed_time was just incremented with the value of the polling period each iteraction through the main loop. This introduced issues when vboxmanage lagged for whatever reason. This lag could go as high as 5 seconds. Over the timespan of a day this could increase the wall clock time of a task a great deal.

Now: elapsed_time is incremented with the time it took to execute the main loop.

  • VBOX: Increase elapsed_time if we were forced to sleep after executing the main loop.
  • Mac: Work around apparent refresh bug in wxCarbon 2.9.4 wxGenericListCtrl
  • Win: Fix rendering of CBOINCTaskCtrl buttons on Windows. On Windows with wxWidgets 2.9.4, buttons don't refresh properly unless they are children of the wxStaticBox, but on Mac the layout is wrong unless the buttons are children of the parent of the wxStaticBox.
  • Fix more bad wxFlexGridSizers, etc. in Attach Wizard, Advanced Preferences. Fix assert caused by Clear() of empty Project Categories wxComboBox.
  • Fix bad wxFlexGridSizer in CDlgGenericMessage.
  • Fix assert due to missing wxOK calling SafeMessageBox() in ProjectInfoPage.
  • VBOX: Remove timeouts for creating and deleting snapshots.
  • client: fix bug in handling proxy info in cc_config.file.
  • client: if exiting because of exit_after_finished flag, write state file before exiting so we don't restart the job later.
  • client, Unix: make Curl sockets close-on-exec, so that app processes don't inherit them.
  • client: fix bug that makes client exit if a slot dir contains finish file on startup.
  • GUI RPC: expose TIME_STATS info (e.g. on_frac) in the binding of the get_state() RPC.
  • client: move client_start_time and previous_uptime from CLIENT_STATE to TIME_STATS, so that these are also visible in GUI RPC
  • scheduler RPC: move uptime and previous_uptime into <time_stats>
  • client: condition an RR simulation message on <rrsim_detail>
  • boinccmd: show TIME_STATS info in --get_state
  • VBOX: Don't report any error messages when unregistering the VM.

VirtualBox 4.2 no longer requires certain commands to be executed to unregister a VM while older versions do. Just ignore any error codes, if it becomes a problem we can always make it conditional on what version of VirtualBox is installed.

  • VBOX: Make deleting a snapshot a non-terminal event.

Deleting stale snapshots now consists of enumerating the existing snapshots and deleting all but the most recent snapshot. This fixes the problem where, for one reason or another, a snapshot could not be deleted at one point in time. The wrapper would just continue to create new ones and was unable to successfully deal with the older ones. Disk space would eventually run out.

  • client: message tweaks for failed app startup.
  • Fix MinGW build: only works on top level.
  • VBOX: Cleanup log a little bit.
  • VBOX: Cleanup all the snapshots before unregistering the VM.
  • VBOX: Make adjustments to the clean-up procedure for Vbox 4.2.
  • client/manager: move the conditional define of MAXPATHLEN from boinc_win.h to filesys.h, so that the client will hopefully build on Hurd, which doesn't define MAXPATHLEN.
  • client: in checking reasons for not requesting work, look at backoff last. Otherwise the user can get a misleading message if they update a project that's backed off.
  • CTRL+SHIFT+E works also on simple view now. So no need to point a novice user to advanced view and leave him scared there.


  • Mac: update Xcode project for building boinc_zip.
  • Mac: add slide-show screensaver to example_app Xcode project and Mac example_app build scripts

example app: fix compiler warnings in slide_show.cpp

  • client: Win build fix.
  • add Visual Studio project for slide_show

NOTE: (David) this currently doesn't build because boinc_zip is missing. I'll fix this soon.

  • client: fix bug where, when updating a project, we fail to request work even though higher-priority projects are marked as no-new-tasks or are otherwise ineligible for work fetch.
  • build fixes for OpenBSD, from rustyBSD.
  • client: TIME_STATS fields go in <time_stats> part of state file.
  • client: fix typo.
  • WIN: Introduce updated project files for the boinc_zip library used by the slide_show project.
  • WIN: Adjust the slide_show project so that it will build both 32-bit and 64-bit versions and use the boinc_zip library.
  • VBOX: Add the ability to specify both the type and model of disk controller to use. It can be specified by adding the following tags to vbox_job.xml:

<vm_disk_controller_type></vm_disk_controller_type> <vm_disk_controller_model></vm_disk_controller_model> Executing vboxmanage --help will list the available options in the storeagectl section.

  • compile fix for FreeBSD.
  • remove deprecated MAC address code.
  • client: if a project has 64 or more ready-to-report tasks, report them.

64 is chosen a bit arbitrarily, but the idea is to limit the number of tasks reported per RPC, and to accelerate the reporting of small tasks.

  • Mac: remove deleted files from Xcode project.
  • WIN: Fix Debug configuration which was corrupted.
  • client: if a project is anonymous platform, don't send list of alternate platforms in scheduler RPC.
  • client: fix uninitialized vars in CPU feature detection (from RustyBSD).
  • client: when reset a project, clear its scheduler URL list (force a reload of the master page).
  • Mgr: Fix Windows hangs and simplify code for notices display.
  • Fix compiler warnings.
  • client: add "client app configuration" feature; see

This lets users do the following: 1) limit the number of concurrent jobs of a given app (e.g. for WCG apps that are I/O-intensive) 2) Specify the CPU and GPU usage parameters of GPU versions of a given app.

Implementation notes: - max app concurrency is enforced in 2 places: 1) when building the initial job run list 2) when enforcing the final job run list Both are needed to avoid possible starvation.

- however, we don't enforce it during RR simulation. Doing so could cause erroneous shortfall and work fetch. This means, however, that work buffering will not work as expected if you're using max concurrency.

  • client: add the above to VS project.
  • fix mysterious problems in Windows build.
  • Fix build configuration on Windows.
  • client: bug fixes for app config feature.
  • client: add new files app_config.cpp,h to Xcode project.
  • Fix file permissions.
  • client (Win) preallocate large files to avoid file fragmentation when you write to them incrementally. (workaround for shoddy filesystem design)
  • lib: Win compile fix for boinc_allocate_file()
  • Mgr: Fix some rare issues on Windows (including a possible memory leak) when switching to a client on a different computer after trying to display notices without an Internet connection.
  • Fix corrupted line endings.
  • client: if <dont_check_file_sizes> is set, don't check file existence at startup .
  • Mac installer: add missing pclose() (from RustyBSD).
  • OpenCL: Add definition of GPU_TYPE_INTEL to match definitions of GPU_TYPE_ATI and GPU_TYPE_NVIDIA.
  • OpenCL: Change type argument of new boinc_get_opencl_ids() API from char* to int; it now accepts PROC_TYPE_NVIDIA_GPU, PROC_TYPE_AMD_GPU or PROC_TYPE_INTEL_GPU.
  • OpenCL: First pass at adding support for Intel Ivy Bridge GPUs.
  • lib: add size info to messages when realloc() fails in MFILE.
  • MGR: Fix two potential security issues with browser.cpp where the query to the cookie database could have been abused. At present neither of the two parameters originate as user input so using it as an attack vector isn't very high. Prevent the functions from being exploited in the future in case the routines were ever used in a different way.
  • VBOX: Fix build break introduced by the previous vbox commit.
  • client: strcasestr doesn't exist on Windows. (Rom)
  • client: strcasestr does exist on Windows in lib/str_replace.cpp, but I just needed to #include "str_replace.h". This is preferable because it handles INTEL as well as Intel and intel. (Charlie)
  • fix typo in GUI RPC.
  • OpenCL: Add peak FLOPS computation for Intel Ivy Bridge GPUs.
  • Mac: remove deleted files from Xcode project. (Checked into 7.0.40 tag)


  • adjust_user_priority: scale FLOP count by app's min_avg_pfc to account for systematic errors in FLOP count - adjust_user_priority: get total project RAC by summing RAC of app versions where RAC has been updated in past week - feeder: add --priority_asc option (for when wu.priority is a logical time).
  • Manager: compile fixes for OpenBSD. From RustyBSD.
  • client (unix): rename() doesn't work between filesystems.

If the user has set things up so that slots/ is a symlink to a different filesystem, things won't work when the client moves output files from the slot to project dir. Solution: if rename() fails, try system("mv ...") since mv works across filesystems.

  • Manager: Fix Mac bug introduced by recent OpenBSD compile fixes.
  • Fix build environment help scripts for Windows.
  • MGR: Minor fix to the OpenCL output for Intel GPUs.
  • client: Hook up the XML portion of the Intel GPU detection code so the server scheduler knows about it.
  • client: Print out the peak flops for the Intel GPU, the regular OpenCL descriptions do not show peak flops.
  • client/server: fix build breaks introduced last night with a variable rename.
  • client/server: Make sure the GPU Type field is really classified as an Intel GPU.
  • client/manager: tweaks to Intel GPU code.
  • client: win compile fix.
  • client: add new file gpu_intel.cpp to Xcode project.
  • client: replace ignore_nvidia_dev etc. with an array. PRINCIPLE: AVOID PER-GPU-TYPE VARIABLES
  • get rid of alloca() stuff in gutil.cpp; almost certainly not needed.
  • don't include malloc.h; it doesn't exist on BSD systems.
  • minor code cleanup from RustyBSD.
  • client: clean up redundant and confusing GPU descriptions.

Problems: COPROC_NVIDIA::description() is really description of CUDA GPUs. COPROC_ATI::description() is really description of CAL GPUs. On Windows and Linux, AMD OpenCL and CAL always coexist, and NVIDIA OpenCL and CUDA always coexist. But on the Mac, AMD OpenCL always exists without CAL and NVIDIA OpenCL often exists without CUDA. Therefore, BOINC has never shown peak-flops on the Mac for AMD or for NVIDIA without CUDA because it does not display COPROC_ATI::description() and may not display COPROC_NVIDIA::description().

On all OS's, INTEL GPU OpenCL will always exist without any vendor-proprietary GPU computation framework, so COPROC_INTEL::description() would never show COPROC_USED.

[1] Instead of adding "(OpenCL only)" to these descriptions just to show peak-flops for these cases, show peak_flops in all OpenCL descriptions.
[2] Preface COPROC_NVIDIA::description() with "CUDA: " and preface COPROC_ATI::description() with "CAL: " to match the "OpenCL: " preface in OPENCL_DEVICE_PROP::description().
[3] Eliminate useless COPROC_INTEL::description().

  • client: COPROC_NVIDIA, COPROC_ATI and COPROC_INTEL constructors must initialize the entire struct, not just the GPU type field.


  • client: fix a few variable naming issue that cropped up during the merge to the 7.0.x branch.
  • lib: the XML type field for an Intel GPU is INTEL_GPU, not INTEL.
  • client: fix changes lost in previous merge from trunk: COPROCS::clear() should call intel_gpu.clear()
  • client: fix changes lost in previous merge from trunk: set OPENCL_DEVICE_PROP::peak_flops field for COPROC_ATI when CAL is present for COPROC_NVIDIA when CUDA is present.
  • Manager: remove sqlite3.c from Xcode project; add build script to build libsqlite3.a from source files downloaded from
  • lib: actually let's make it "intel_gpu".


  • Win process control (affects API and wrapper): Since Win doesn't have an API for process suspend/resume, we were suspending processes by 1) enumerating all the threads in the system (typically several thousand) 2) suspending those belonging to the given process The problem: for each thread, the code was calling a function in diagnostics_win.cpp to see if the thread was exempted from suspension. This check (which is unnecessary anyway if we're suspending another process) was surrounded by a semaphore acquire/release. The result: performance problems. It could take a minute to suspend the threads. Solution: 1) do the check for exemption only if we're suspending threads in our own process (i.e. from the API) 2) if we're suspending multiple processes, enumerate the threads only once, and see if each one belongs to any of the processes 3) have the wrapper elevate itself to normal priority. Otherwise it can get preempted for long periods, sometimes in the middle of scanning the threads. Note: post-9x versions of Win have a process group API that includes suspend/resume. We'll switch to this soon. (David)
  • client: show Intel GPU memory size as integer.
  • scheduler: attempted performance enhancement.

-> Old: each scheduler process holds a semaphore while scanning the shared-mem job array. On machines with many CPUs there seems to be contention for this semaphore, causing slow scheduler response and possibly connection failures. -> New: Don't hold the semaphore while scanning array. Instead, if find a job that passes quick_check(), acquire the semaphore and recheck that the job is present in array and passes quick_check().

  • client: show messages if app_config.xml has unrecognized tags.
  • Apply RustyBSD's patch for selectively disabling the detection of the X screensaver framework in
  • SCR: Include the compiled X11 screensaver app in the self extracting archive distro of the client software. (Linux only)
  • Mgr: Fix delay displaying notice.
  • OpenCL: Eliminate spurious error message when an OpenCL platform exists but the computer has no corresponding devices.
  • Mac: Fix linker warning.
  • client: show Intel GPU memory size as integer.
  • Mgr: Fix potential crashes displaying notices asynchronously on Windows.
  • Mgr: Fix bad line endings.
  • Mgr: More robust way to display "No notices" message.
  • Mgr: Shorten Internet timeout for notices on Windows to 5 seconds.
  • Fix license info.
  • Mgr: fix license declaration in file derived from wxWidgets.
  • Mgr: Windows only: If OpenURL fails, we probably don't have an Internet connection so use a shorter timeout for subsequent calls to OpenURL until one succeeds; otherwise notices takes takes too long to display if there are multiple notices with images.
  • Mgr: Don't call get_notices RPC before previous one is processed to prevent multiple display of notices.
  • Mgr: Display "Fetching notices..." instead of "There are no notices" while getting notices. Display "There are no notices" only if we have actually determined there are no notices.
  • Mgr: Add code to reload notices with images / items missing due to problems accessing their URLs.
  • Mgr: Display "Fetching notes" when reloading notices.
  • Mgr: If network activity is suspended, don't retrieve URL references within notices unless they are already in our cache or in the Windows cache.
  • Mgr: Clear our internal Internet cache when selecting a different computer; when removing entries from hash table, delete data to avoid memory leaks.
  • Mgr: Display a message and "Retry now" button if some images or other items within notices failed to load from the Internet; if network activity is suspended, say so in the message.
  • When removing entries from hash table, delete only the contents of the cached data (pointed to by m_data), not the entire MemFSHashObj.
  • Use the WX_CLEAR_HASH_TABLE macro to clear the notices hash table.
  • Mgr: When removing entries from our hash table, delete data to avoid memory leaks.
  • Mgr: Allow existing to retrieve images or other items from the Internet even if network activity is suspended. (But client won't get new notices.)
  • Mgr: Reset Internet timeout when retrying notices.
  • Mgr: Bug fixes for Windows Async Internet access, including closing the WinINet handle when aborting due to timeout, etc. to prevent crashes.
  • Mgr: Add all the new notices features to the Simple View notices dialog.
  • client: improved log messages for work fetch.
  • Mgr: When closing Simple View notices, wait for all Async Internet access to complete before calling the notices panel destructor.
  • Fix compiler warnings.
  • Fix compile warnings on Linux X-screen saver.
  • client: processor identification for ARM (from Evandro Menezes and Joachim Fritzsch).
  • API: fix Unix bug when checking if client is alive based on PID. Can't use waitpid() here; works only for children. Use kill(pid, 0) instead.
  • API: improve log messages when detect dead client.
  • client: disable remote access if

-> gui_rpc_auth.cfg is empty, or -> it doesn't exist and we can't open it for writing, or -> the write to it fails.

  • client: don't crash if GUI RPC password is too long (from RustyBSD) (change from max 256 chars to 512 chars).
  • client: Account for the display management power system when calculating idle time from the XSS system on Linux.
  • client: if gui_rpc_auth.cfg is empty, print a warning but don't fail with an error; an empty GUI RPC password is allowed. ([size=8][i]to error out[/i] is not a known verb, David...[/size])
  • lib: compile fix.
  • client: when checking file sizes at startup, skip image files if the "dont_verify_images" pref is set. Otherwise we'll be downloading the file on each startup. From Juha. Fixes [trac]#1222[/trac].
  • compile fixes. Fixes #1219
  • WIN: Update copyright information in the Windows resource files.
  • MGR: Revert the changes made to AsyncRPC.cpp on Dec 7th. It broke our ability to deal with localization on Windows, Mac, and Linux. We'll have to revisit this issue after the next build for the BSDs.
  • Fix Build Breaks.


  • Fix conflict resolution mistake.


  • client: show available disk space correctly on startup.
  • client: add code for detecting running on batteries on OpenBSD. From RustyBSD.
  • LIB: Standardize on using windows_format_error_string and drop windows_error_string.

-> Move the windows_format_error_string function to win_util.cpp, .h instead of it being scattered between util.h and str_util.cpp. -> Convert the Windows error string into UTF8 before allowing it to be used by the caller. -> Remove windows_error_string from library.

  • LIB: Call FormatMessageW directly and skip an extra string encoding conversion step.
  • OpenCL: fix bug reported by Heinz-Bernd Eggenstein.
  • Fix build break for boinc_opencl.cpp and move the include of <vector> below the pre-compiled header file for Windows builds in boinc_api.cpp
  • client: make CPU throttling apply to GPU apps.
  • MGR: when selecting a new client, clear Notices tab and don't display "Fetching notices" until connected to new client.
  • MGR: clear Simple View Notices when disconnected and don't display "Fetching notices" until connected to client.
  • client: get proxy info before attempting project list fetch or any other HTTP op.
  • client: backoff message tweaks.
  • Manager: fix case where the client has only an Intel GPU, and the manager was acting as if it had no GPUs.
  • client: write GPU list in get_state() GUI RPC. Otherwise manager doesn't know what GPUs we have.
  • client: the logic for work fetch in the presence of GPU exclusions (especially per-app exclusions) was incomplete and buggy.

Changes: -> make bitmaps of included instances per (app, resource type). -> in round-robin simulation, we keep track of used instances (so that we know if there are instances that are idle because of exclusions). Do this based on app-level exclusions (previously it was done based on project-wide exclusions, which didn't include app-level exclusions). -> compute RSC_PROJECT_WORK_FETCH::non_excluded_instances as the logical OR of the per-app masks. I.e. if you exclude an instance for all apps separately, it's the same as excluding it for the project as a whole. (Note: this bitmap is used for only 1 purpose: if we have idle instances, don't request work from a project for which those instances are excluded.) -> define RSC_PROJECT_WORK_FETCH::ncoprocs_excluded as the # of instances excluded for *any* app, not the # excluded for all apps. This quantity is used in work fetch to make sure we don't unboundedly fetch jobs that turn out not to have a GPU to run on due to exclusions.

  • MGR: Somehow we are receiving an WM_ACTIVATEAPP event before m_pFrame has been populated on Windows 8. If m_pFrame is NULL, ignore the event.
  • client (Win): don't call msg_printf() from sysmon thread. Instead, put msg into a buffer and let main thread print it. This may fix crashes on system suspend/resume.
  • Compile fix for non-Windows clients.
  • OpenCL: remove dead code reported by Heinz-Bernd Eggenstein.
  • WINSETUP: Update installer build files based on the 7.0.x branch


  • client: show sysmon messages correctly. This was supposed to be in David's 507cd79 commit, but it got botched somehow.
  • client: the <task> debug flag enables suspend/resume messages for both CPU and GPU. Previously CPU messages were always shown, and GPU messages were shown if <cpu_sched_debug> was set.
  • client: fix bug where reschedule wasn't being done on GPU suspend or resume.
  • client: if app does temporary exit, don't print premature exit warning. Fixes #1224
  • client: when formatting the OpenCL description field, use the human readable version of the GPU type. People were expecting Intel GPU instead of intel_gpu.


  • lib: Remove duplicate GPU text in the OpenCL description.
  • client: message tweak for GPU suspend/resume.
  • WINSETUP: Change description text for service installs.


  • client: message tweak.
  • MGR: Properly handle the back button on the wizard page that asks for credentials. We'll need to revisit this issue for cookie and automatic attach situations though.
  • MGR: Fix class name collision with MemFSHashObj in fs_mem.cpp in wxWidgets which caused Manager crashes.
  • MGR: Fix assert when all_projects_list.xml file is missing.
  • client: check return value of the function (statfs or statvfs) used to find disk space and usage. This may be failing for in-memory filesystems on Linux.
  • WINSETUP: Explicitly use certain values for boolean flags instead of using the output of the UI controls. Avoids confusing values in the registry.
  • SETUP: Update the all projects list for Windows/Mac? installs.


  • MGR: fix some compile warnings on Unix.
  • client: Basic detection of how much capacity a host's battery has on Android and Windows.
  • client: show "%" correctly in messages from scheduler.
  • client: Fix typo.
  • client: job scheduler tweak to avoid CPU idleness in situation where GPU jobs use different CPU fractions.
  • client: work fetch: if there are idle devices, we need to ask the highest-prio project for work for all of them (don't scale by the fetchable resource share!). This should fix some device starvation problems.
  • client: Fix typo from previous commit.
  • client: fix more typos.
  • client (Unix): check whether VBoxManager is executable by us before trying to run it. Otherwise we get lots of msgs in stderr.
  • Manager: right-justify task deadline in advanced view. (Android?)
  • Fix wild card in Exclusive Apps dialog for Linux (from Gianfranco Costamagna).
  • client: Properly return the battery status as full when it is. (Android + laptop)
  • client: suspend_reason is not a bitmap; fix code that acted like it is.
  • WINSETUP: Fix the launch manager and tray functionality at the end of setup.


  • MGR: SimpleGUI: Make the Notices/Suspend/Resume/Help button borders transparent. The other buttons will take a bit more work.
  • WINSETUP: Fix the launch manager and tray functionality at the end of setup. (Applied to WCG.ism)
  • client (Android and other Unix without shmget()): Don't write spurious messages to stderr about shmem operations not being supported.
  • MGR: Limit event log to 2000 messages, deleting oldest if necessary.
  • MGR: Make my recent Event Log changes a little more robust. (Charlie)
  • client: show error notice if a GPU exclusion (in cc_config.xml) has an invalid URL, type, or app.
  • client: show nvidia driver version as 314.07 instead of 314.7
  • scheduler and web: store OpenCL version along with other GPU info in host.serialnum. Display it on web.
  • include OpenCL info when faking an NVIDIA GPU.
  • MGR: Simple View slide show area should be a fixed size.
  • MGR: Center the Simple View slide show area, fix wrapping of project description text when project has no slide show.
  • Client: on read_cc_config() GUI RPC, reread app_config.xml files as well as cc_config.xml
  • Attempt to fix appearance of Simple View buttons on Windows.
  • MGR: Fix a minor glitch rendering corners of backgrounds of Task and Project areas in Linux Simple View.
  • MGR: patch to change temporaries to long. Fixes #1226 (From: Alyssa Milburn) Thanks Gianfranco Costamagna.
  • WINSETUP: Remove RCSID tags from files.
  • MGR: Add missing template files.
  • client: Add some missing test files.
  • MGR: Add missing header file for VS Intellisense population of wxWidgets class information.
  • Add inert script file.
  • client: change work fetch policy to work better with GPU exclusions scale amount of work request by (# non-excluded instances)/#instances.

--> change policy: old: don't fetch work if #jobs > #non-excluded instances. new: don't fetch work if # of instance-seconds used in RR sim work_buf_min * (#non-exluded instances)/#instances

  • client: add --suppress_net_info cmdline option.
  • client/manager: isspace() throws an exception on Win for non-ASCII chars. Check isascii() first.
  • client, work fetch policy. Change policy for projects w/ GPU exclusions.
  • client (FreeBSD): detect running on batteries; from rustyBSD.
  • client: add <fetch_on_update> config option; requests work when you update a project even if it's not highest priority.
  • MGR: Limit event log to 2000 messages, deleting oldest if necessary.
  • MGR: Make the flags to InternetReadFileEx() match those of InternetOpen(). Mixed flags can cause unpredictable results.
  • MGR: if InternetReadFile() sets ERROR_IO_PENDING error, we need to call it again to get the next chunk of data.
  • client: parse <fetch_on_update> config flag, and show it on startup.
  • MGR: Fix memory leaks, add debug fprintf's trying to find cause of crashes when retrying load of images in notices.
  • MGR: don't show DCF in project properties page if it's 1.
  • build: Add -Wcast-align to list of compiler warnings we are interested in. It'll help prevent crashes in CPU Architectures that are strict on there alignment policies. (From: Jeffrey Walton).
  • client: Revert my changes for the --detach_console functionality back to the original implementation.
  • MGR: Remove temporary debugging fprintf's.
  • MGR (and possibly other components): XML parsing fix.
  • MGR: Remove temporary debugging fprintf's - missed one line before.
  • MGR: Disable the download of image files for now. Revisit policy after the next public release.


  • WINSETUP: When ENABLEUSEBYALLUSERS is true, create the automatic run key in the HKEY_LOCAL_MACHINE registry space. When it is false use HKEY_CURRENT_USER.
  • client (and maybe others): fix XML parsing bug when skipping large unrecognized elements.
  • client: don't show cache size in startup messages.


  • MGR: Modify the GUI for the Attach to Project Wizard for the World Community Grid version of the client. These changes should make clearer the difference between attaching to a new BOINC project vs changing which applications a user is choosing to run at World Community Grid.
  • MGR: Further modifications to the World Community Grid installer and skin for BOINC 7.
  • MGR: fix build breaks on Win. You can't just say "#elif".
  • client: write log flags in alpha order.
  • client and boinccmd: update usage text.
  • update Unix command completion script.
  • update XML man pages for client, manager, boinccmd.
  • man page tweak.
  • client: removed unused code for old work-fetch logic.
  • client: fix small work fetch bug that caused the client to not add a piggyback work request when it should have.


  • client: alphabetize log flags.
  • client: there were many places in the code where we keep track (usually in a static variable called "last_time") of the last time we did something, and we only do it again when now - last_time exceeds some interval.

Example: sending heartbeat messages to apps. -->Problem: if the system clock is decreased by X, we won't do any of these actions are time X, making it appear that the client is frozen. -->Solution: when we detect that the system clock has decreased, set a global var "clock_change" for 1 iteration of the polling loop, and disable these time checks if clock_change is set.

  • client: a couple of more clock-change fixes.
  • Client: debug last commit. Also fix bug where benchmarks don't end when clock goes backward.
  • client: updated Windows version identification, from Robert Kress.
  • client and wrapper (Linux): when parsing /proc/x/stat entries, handle command names that contains white space.
  • client: improve work fetch messages.
  • MGR: Add missing static text back to the welcome page for the attach wizard.


  • XML parser: when skipping unrecognized elements, don't read them into memory.
  • MGR: Update copyright year.


  • MGR (Win): case-insensitive check for .exe ending of exclusive apps.
  • client: if <dont_check_file_sizes> is set in config, still check for errors (e.g. verify failures) at startup, and reset file if so. Otherwise we'll never recover from those errors.
  • MGR: Downloading images in notices using asynchronous WinInet (Windows Internet I/O) code finally seems to be working for all 3 of us who have tested it.
  • client: code cleanup. Some variable/function/constant names contained "debt" when they actually refer to REC. Change these names to use "rec".
  • client, work fetch: request # instances so that we have enough jobs to use project's share of instances.
  • Remove Beta/Alpha flag for Linux builds.
  • MGR: Revise how CPU Architecture is determined in the about dialog box per Gianfranco's recommendation.


  • client: on startup, if new version, arrange to get new project list.
  • client: alphabetize fields in prefs structure.
  • XML parser: return error if string exceeds buffer size.
  • client: when parsing MD5, use 64 instead of 33 char buffer. When the XML parser reads a string, it enforces the buffer size limit BEFORE it strips whitespace. So if a project put whitespaces before or after the MD5, it would fail to parse.
  • MGR: fix crash bug in Simple View preferences dialog.


  • Remove more dead projects from project list.
  • client: detect new Win versions and AMD GPUs; from [P3D] Crashtest.
  • client: fix bug in work fetch that prevented resource backoff.
  • client: AMD GPU names; from Jord.
  • client: AMD GPU name tweaks.
  • client: put back --detach (because BoincTasks assumes it) and --detach_console (because the documentation says it exists). I'm not sure why --detach_phase_two is there, but leave it.
  • boinccmd: show correct error message if auth failure.
  • MGR: Fix minor cosmetic issue rendering Task Selection Control in Simple View on Mac.
  • MGR: Check the size of the stats vectors before attempting to tabulate the results.
  • MGR: Fix the text for the 'reread config files' menu option.
  • client: Make the detach console stuff backwards compatible with BOINCTasks.
  • WCG: Fix bug in WCG version of client when using the project_init.xml file it initiate auto-attach to World Community Grid.
  • WCG: Add signing requirement to installer. Need Rom to add key location and key password to file when he builds.


  • MGR: Remove fix of text for the 'reread config files' menu option. (Adding it now would break translations. This change will come in the next major revision.)


  • Fix issue with WCG build of client on the Add Project dialogue. If the user was not connected to WCG, then no option was selected by default. Now, the 'Add Project' option will be shown as selected.
  • client: don't prefix <task> messages with [task]
  • client: check return value of FormatMessageW() so we don't print garbage.
  • client: bugfix for Android in host_is_running_on_batteries(). Change filehandling back to fopen and fclose from rewind.
  • WINSETUP: Fix the Enable Use by All Users checkbox in the installer. The setting wasn't being properly restored.
  • WINSETUP: Special case the LAUNCHPROGRAM property, if the registry value is an empty string, enable the checkbox.
  • client: add AMD GPU name for HD 3650 (RV635).
  • MGR: Don't display architecture (x86 vs x86_64) in About Box on Macs.
  • MGR: Enforce a minimum username/email address length when we are prompting for a username or email address.
  • MGR: Cleanup up the about dialog a little bit.


  • MGR: Keep the BOINC logo visible in the about dialog box.


  • Mac: Fix compile errors.