7.4.9

Aus BC-Wiki
Zur Navigation springen Zur Suche springen

7x

  • MGR: Fix compiler warning
  • MGR: fix alignment of items in Computing Preferences Network Tab
  • client: add <dont_send_work> element to scheduler request; set if dont_request_more_work is set. Prevents projects w/ NCI apps from sending jobs
  • LIB: Get rid of the spurious 'dyld: DYLD_ environment variables being ignored' stderr messages on Mac OS X 10.8 machines across all of our apps.
  • LIB: A more efficient fix than commit e7035dd to eliminate the spurious 'dyld: DYLD_ environment variables being ignored' stderr messages on Mac OS X 10.8.
  • Update line breaks
  • client: fix job scheduling bug. Sort by avg_ncpus doesn't apply to GPU jobs
  • client: check for negative usage values in app_config.xml
  • client: tweaks to log output for <rrsim_detail>
  • client: Include error code in error string when process creation fails. It'll help to quickly identify the problem for localized systems.
  • client: don't assume that notices with same GUID are identical; a project may have edited a news item.
  • client (Win): if CreateProcess() fails because of mem, wait and retry Apparently on some Win 7/8 with SSD drives, CreateProcess() sometimes returns ERROR_NOT_ENOUGH_MEMORY; presumably it then allocates more swap space. Treat this case using the "temporary exit" logic: delay for 10 min, then try again. If 100 failures, abort task. Note: not tested. This may be a bad idea.
  • Client: improve task duration estimates for apps that don't report fraction done. The "static estimate" is wu.rsc_fpops_est/app_version.flops. The problem is: what if the elapsed time exceeds this. In this case we were returning elapsed time, resulting in a "time remaining" of zero, which is bad. Instead, use the same exponential model that we use to estimate fraction done when it's not reported. This has the advantages that:
    • time remaining monotonically decreases (though potentially at a very slow rate)
    • the combo of fraction done, elapsed time, and time remaining is consistent for apps that don't report fraction done
  • GUI RPC: add cross_project_id to PROJECT, for BoincTasks. This was already in the XML written by the client; no client change needed.
  • GUI RPC: add missing clear of PROJECT::cross_project_id
  • Client (Win): if 32 bit client on 64 bit host, warn about VirtualBox. The 32-bit client won't be able to detect VBox on a 64-bit host. Say this in a startup message.
  • client/scheduler: add support for "client brand". Currently the server doesn't know about different client "brands", e.g. HTC Power to Give, Charity Engine, GridRepublic, etc., so there's no way to collect statistics about them. Changes:
    • client: at startup, read a "client brand" string from client_brand.txt (i.e. branded clients will have to include this file in their installer) Report this string in scheduler requests.
    • scheduler: parse this request element, and store it in host.serialnum as [BOINC|7.4.2|brand]
  • client: Make sure handle_temporary_exit() cleans up any descendents and any other processes of interest determined by other_pid.
  • client: Cleanup any descendants or other_pids on a premature exit as well.
  • client: fix logic for cleaning up subsidiary processes "Subsidiary processes" are 1) descendants 2) "other PIDs" as reported by the app, e.g. VMs which are not descendants We were failing to clean up these processes in some cases.
    • Add a function ACTIVE_TASK::kill_exited_app() for killing the subsidiary processes of a task whose main process has already exited. At this point we can't enumerate its current descendants; but we have the list of descendants from the last time we computed memory usage (within the last 10 sec). So kill this, and kill the other PIDs
    • call this function when appropriate:
      • too many temporary exits
      • too many premature exits
      • main process has exited in response to abort or quit message (the existing code failed to kill other PIDs)
      • rename ACTIVE_TASK::kill_task() to kill_running_task() to emphasize its intended use. Also remove code that, in case of secure install on Windows, didn't try to kill any subsidiary processes at all; there used to be a permission problem in doing so, now there isn't.
  • client: return a possible error code to the core client if execv fails for some reason in the switcher tool.
  • client: attempt to get a more useful error message from kill_app_process() on non-Windows platforms.
  • client: try to get a return code from switcher (i.e., from the command that switcher executed.)
  • client: add <project_max_concurrent> option for app_config.xml Lets you limit the number of running jobs over the whole project. Note: this is not taken into account in work fetch.
  • client: fix bug in last commit
  • client: write log messages for trickle-ups (if <trickle_debug> set)
  • client: In switcher, return the actual error code from execv (usually -1) rather than errno, and let the invoking call retrieve errno if appropriate (modify commit f014b0d).
  • client: Avoid needless error messages about kill failing. Only call kill_by_switcher() if we are running in sandbox mode, otherwise call kill.
  • client: Remove unneeded SANDBOX ifdefs. Use g_use_sandbox instead. I left one in main.cpp since I do not know where check_security() is.
  • client/lib: Refactor kill code for Windows. Expose functionality for wrapper apps.
  • lib: Normalize 'int kill_program()' around the error codes returned by errno.
  • client: Use strerror() in kill_app_processes() on Windows instead of boincerror().
  • client: Add missing stub functions for Windows related to removing the SANDBOX ifdef.
  • client: Use pipes to redirect sdtout/stderr output from switcher, report any failures as task_debug output with msg_printf().
  • client: Append the stdout and stderr buffer in switcher_exec in case the output is more than 1k.
  • client: fix error reporting from kill_app_process() on non-Windows platforms when not sandboxed.
  • client: Fix use of pipes to redirect sdtout/stderr output from switcher and tweak reporting failures as task_debug output with msg_printf().
  • client: if execv ever fails when attempting to launch switcher, exit as quickly as possible in the forked process. Returning from the switcher_exec() may leave 2 boinc processes running until one crashes.