in the following situation.
Suppose GPU job A is running,
and GPU job B (which has never run before) preempts it.
Then
1) an ACTIVE_TASK and slot dir are allocated for B (slot dir is empty)
2) A is told to quit; B isn't started until A exits
(because they're GPU jobs)
3) before A exits, B is suspended
4) eventually B is started.
Its scheduler state is SUSPENDED rather than UNINITIALIZED,
so the scheduler thinks it slot dir has already been populated.
But it hasn't, and when the app starts it fails immediately
because no files are there.
Fix: decide whether a slot dir needs to be populated by
seeing whether it's empty,
rather than looking at the scheduler state of the task.
svn path=/trunk/boinc/; revision=22206
which of those files to include
- Modified MAC address check to work on some non-Linux unixes.
(mac_address.cpp)
- Added suggested change to "already attached to project" checking.
(ProjectInfoPage.cpp)
- changed includes of standard c header files to their c++ equivalents
(i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
- replaced "using namespace std;" with more explicit "using std::function" in
several files.
- Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
to the build environment. (boinc_platform.m4,configure.ac)
- Changed build environment to not use -nostandardlibs unless we are using
G++ and static linkage is specified. (configure.ac)
- Added makefiles and package building files for solaris CSW package manager.
- Fixed bug with attempting to find login name using logname. (configure.ac)
- Added ifdef HAVE_* protection around some include files commonly found in
sys.
- Added support for unified binary for x86_64/i686-pc-solaris.
(cs_platforms.cpp)
- generate_host_cpid() now uses MAC address on non-linux unix.
(hostinfo_network.cpp)
- Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
compilers. (boinc_set_compile_flags.m4)
- Library compiles no longer depend upon the library extension or require
the library to be prefixed with lib.
- More fixes for fcgi builds.
- Added declaration of "struct ether_addr" and ether_ntoa(). Have not yet
implemented ether_ntoa() for machines that don't have it, or where it is
buggy. (unix_util.h)
- Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
- Fixed library Makefiles so that all required headers get installed.
svn path=/trunk/boinc/; revision=17388
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
and treats them as a special case.
Also, if the virtual file doesn't exist (as in the standalone case)
just return zero; otherwise if the app is running standalone
and checks the return value, it will error out.
NOTE: apps that check the return value of boinc_resolve_filename()
won't work on 6.12+ under Unix;
recompiling with this change will fix the problem.
svn path=/trunk/boinc/; revision=15012
this broke some projects' back-end code.
Make a new function (boinc_file_or_symlink_exists())
for use by the client when clearing out slot dirs
svn path=/trunk/boinc/; revision=14968
like source code and text files. I skipped to check most files in html/
and mac_*/ though.
- Added svn:executable to tools/watch_tcp because it has a shebang.
svn path=/trunk/boinc/; revision=13819
- move client sandbox-specific code to a new file, sandbox.C
- remove g_use_sandbox from util.C; move to MainDocument.cpp (manager)
and sandbox.C (client)
- don't declare check_security() in util.h; it's not in util.C
- don't call remove_project_owned_file_or_dir() in
boinc_delete_file_aux() or boinc_rmdir();
rather, at the points in the client that delete
dirs that are usually owned by boinc_projects,
call remove_project_owned_file_or_dir() first,
then clean_out_dir().
- rename boinc_exec() to switcher_exec() and move it to sandbox.C
Note: this change was sparked by needing to remove a call to getgrnam()
from boinclib, to avoid requiring the same version of glibc
on both compile and target hosts
svn path=/trunk/boinc/; revision=13784
in get_file_size() RPC, check if volume has < 1MB available space
and if so return transient error.
This prevents client from trying upload,
which apparently sends entire file even if
handler fails at the beginning
- API, Win: remove use of GetTickCount(); use dtime() instead
- use new BOINC logo in sample project home page
svn path=/trunk/boinc/; revision=13574
tells how much disk space BOINC is using
(not including projects).
- added project.max_infeasible_count to client simulator
client/
gui_rpc_server_ops.C
sim.C,h
sim_util.C
clientgui/
ViewResources.cpp
lib/
filesys.C
bui_rpc_client.h
bui_rpc_client_ops.C
svn path=/trunk/boinc/; revision=12615
lib advertise data file when new result is created.
code organization: create new lib function boinc_touch_file()
from code that was in locality scheduler module.
svn path=/trunk/boinc/; revision=6456
Fixed 'time to checkpoint' problem under Win32 with pure C code.
It turns out that MS VC++ up to version 4.2 defines bool as INT.
But more recent VC++ defines bool as CHAR. This broke
boinc_time_to_checkpoint() under Win32, when used within pure ANSI
C code, if you treated the return value as a bool. So this patch
defines bool as char if using C under recent MS compilers.
David, a better solution for API functions that should be
callable from C is to make them return 'int' not 'bool'.
Probably ditto for Fortran. Sigh.
svn path=/trunk/boinc/; revision=4767
- C extern statements so that 'API' header files can be included in C
programs as well as C++.
- Make install now only installs the header files needed for building
the external APIs.
svn path=/trunk/boinc/; revision=4755