Old: get_shmem_seg_name() tries names of the form shm_boinc_N
until it finds one for which creating succeeds.
Then it detaches (deletes) the segment and records the name.
Later, the segment is created again.
This creates a race condition if two core clients
are running on the same host.
It's also kind of silly.
New: get_shmem_seg_name() doesn't detach the segment,
and we dont have to create it again later.
svn path=/trunk/boinc/; revision=15172
to avoid confusion with "name" field of CUDA.
This is a bug fix - please port.
- start script: don't error out if run_state.xml file is empty
(which happens if project runs out of disk space)
svn path=/trunk/boinc/; revision=15168
so CUDA detection failed.
For reasons I don't understand,
adding "/usr/local/cuda/lib" to LD_LIBRARY_PATH
and then doing dlopen("libcudart.so") wasn't working,
even though the library is in that dir.
I worked around this by calling
dlopen("/usr/local/cuda/lib/libcudart.so") and if that fails call
dlopen("libcudart.so"),
- Unix: commented out Eric's setenv() stuff.
After doing a configure, HAVE_SETENV is not in config.h,
so something's messed up with it.
- client: trimmed down "pre-release software" message
svn path=/trunk/boinc/; revision=15143
(attempt to send big jobs to fast hosts, small jobs to slow hosts).
- have "census" compute mean/stdev of host speeds,
write it to a file perf_info.txt
- have feeder compute mean/stdev of sizes of jobs in shmem
- have feeder read perf_info.txt into shmem
- scheduler: add some debugging messages for app version selection
- Add LGPL license to a few files
- upgrade/setup scripts: copy census to bin/
svn path=/trunk/boinc/; revision=15136
in <app_version>s from the server,
keep track of the number free of each type of coproc,
and don't run an app that needs more than are available.
(not quite working yet)
svn path=/trunk/boinc/; revision=14992
- update_versions: use __ (not :) as separator for plan class
- client: add plan_class to APP_VERSION;
an app version is now identified by platform/version/plan_class
- client CPU scheduler: don't assume apps use 1 CPU
- client: add avg_ncpus, max_cpus, flops, cmdline to RESULT
- scheduler: implement app planning scheme
Other changes:
- client: if symlink() fails, make a XML soft link instead
(for Unix running off a FAT32 FS)
- client: don't accept nonpositive resource share from AMS
- daemons and DB: check for error returns from enumerations,
and exit if so. Thus, if the MySQL server goes down,
all the daemons will soon exit.
The cron script will restart them every 5 min,
so when the DB server comes back up so will the project.
- web: show empty max CPU % as ---
- API: get rid of all_threads_cpu_time option (always the case now)
svn path=/trunk/boinc/; revision=14966
in case someone else changed since we read it.
Hopefully this will fix a race condition
where WU results get sent to different HR classes.
(Alternatively we could use transactions,
or acquire the semaphore during read/update,
but this could impact performance).
svn path=/trunk/boinc/; revision=14710
use most recently created host with same domain name,
IP addr, OS name, and CPU model, if one exists.
(from Kevin Reed)
svn path=/trunk/boinc/; revision=14597
(should this be set by default?)
- web: removed addslashes() when building language translation arrays.
These caused 's to be displayed as \' everywhere.
They may serve some purpose, but I can't think of what it is.
- web: changed max profile image dimensions from 800x600 to 640x480.
The new profile page puts a column to the right
of the image, so it shouldn't be quite that wide.
svn path=/trunk/boinc/; revision=14562
(this causes confusing output in the Manager,
bytes xferred greater than file size)
- API and client: make boinc_sleep() work regardless of signals
- some code cleanup in http_curl.C
svn path=/trunk/boinc/; revision=14522
Each account has an associated weak account key.
The user can see it by visiting weak_auth.php.
If you put the weak account key in the account file on a computer
(instead of the regular account key)
the computer will attach to the account.
But the weak account key cannot be used to log in
to the account on the web, or to do web RPCs, or anything else.
Note: this involves a scheduler change.
svn path=/trunk/boinc/; revision=14367
- add more info about team message board (if it exists)
- show list of admins
- show list of new members (in last 24 hours)
- show number of members total, with credit, and with average credit
- move actual list of members to new page (team_members.php)
svn path=/trunk/boinc/; revision=14230
This lets you lookup up users sorted by
- descending join time
- descending total credit, or
- descending RAC
and lets you filter them by
- country
- presence/absence of team
- presence/absence of profile
It's implemented in such a way that no more than N
DB rows are examined
(i.e. it doesn't necessarily show you all the results)
- PHP database: add enum_fields() member to DbConn and BoincUser.
This is to select a limited number of fields
e.g. to make large queries more efficient.
Also added BoincTeam::lookup_id_cache(); this is an example
of how to look up items likely to be repeated
(like teams when you're showing a list of users)
svn path=/trunk/boinc/; revision=14082
1) a WU is marked as ready for assimilation and has no errors;
2) it has no canonical result
In this case, the assimilate handler gets called anyway,
typically with the canonical result of the previous WU as arg.
Note: this situation doesn't arise normally;
it might happen if some results are deleted accidentally.
The fix:
- identify this situation, and set the WU.error_mask to a new code
(WU_ERROR_NO_CANONICAL_RESULT)
- zero out the "canonical_result" variable passed to the handler,
so even if the handler fails to check wu.error_mask,
at least it won't assimilate the same result twice.
Thanks to Hendrik Verhoek for finding this bug.
- DB schema: team table type is MyISAM, not InnoDB
svn path=/trunk/boinc/; revision=13938
- check for infinity/NaN
- check for CPU time decreasing
- check for CPU time increasing faster than real time
... and deal with each of these in a hopefully reasonable way
svn path=/trunk/boinc/; revision=13847
- 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
there's a single GUI_HTTP object,
and it works only if used sequentially,
i.e. an op is started only after the previous one ends.
This breaks if a GUI RPC triggerse and op while
a project-list fetch (initiated by the client itself) is in progress.
Or if two managers are connected at the same time,
and both do HTTP ops.
The solution: have a separate GUI_HTTP object for each GUI_RPC_CONN,
and an additional one for use by the client itself.
svn path=/trunk/boinc/; revision=13692
NOTE: as of this checkin, applications built with the API
code in the trunk are assumed to do V6-type graphics.
If your app doesn't, then you must set
backwards_compatible_graphics to false
(and use boinc_init_graphics_options())
svn path=/trunk/boinc/; revision=13675
update_versions to add version 6 apps.
It looks for API_VERSION string in main executable,
adds the API version to the app_version XML,
and sets min_core_version to 6 for version 6+ apps
- API: include API_VERSION string
- convert tabs to spaces here and there
- scheduler: parse unused elements in <net_stats>
- ops/show_log.php: if no URL args, just show form (fixes#415)
- client: parse and store api_version (not used yet)
svn path=/trunk/boinc/; revision=13627
but don't do anything other than handle GUI RPCs.
After 50 secs, print an "about to exit" message.
After 60 seconds, exit
svn path=/trunk/boinc/; revision=13162