Commit Graph

144 Commits

Author SHA1 Message Date
David Anderson d43f78f97a vboxwrapper: compile fix, and error-check kill_program().
Note: utility functions like kill_program() should return
BOINC error codes, not Unix codes
2014-07-29 13:19:07 -07:00
David Anderson fc87332a82 lib: remove unused code 2014-07-29 11:13:51 -07:00
Rom Walton 934c10d8e5 lib: Normalize 'int kill_program()' around the error codes returned by errno. 2014-07-27 14:10:48 -04:00
Rom Walton 37fd62bd95 client/lib: Refactor kill code for Windows. Expose functionality for wrapper apps. 2014-07-27 13:47:01 -04:00
Eric J Korpela ebad3ff63f Fixes for Visual C++ problems caused by xcompile checkins. 2014-05-08 13:46:26 -07:00
Rom Walton 488ed2f43b VBOX: Tweak the process priority of vboxheadless/virtualbox.exe so that it is above regular science applications.
On systems with comparatively slow disk subsystems, the I/O can become saturated. This leads the Linux Kernel on guest OS's dumping out warning messages to the console of failure to write data to disk.  Since the device drivers are timer sensitive we will boost the priority of the process to boost its disk I/O requests above the other disk I/O of science applications.  Science applications themselves generally don't have timeouts when checkpointing and the like.
2014-03-13 12:39:01 -04:00
David Anderson 04327eb7e7 vboxwrapper: fix VM-launch code for UNIX 2014-01-20 23:34:35 -08:00
David Anderson 3aa9ae0e16 Manager: display notices in Helvetica font; message tweak 2014-01-14 23:30:08 -08:00
Rom Walton 076858a729 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
2013-03-04 17:39:24 +01:00
David Anderson 17a4ab8db9 David 11 Dec 2012
- 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.
2013-03-04 17:02:40 +01:00
David Anderson 19458ba4de - Compile fixes for Fedora core 17. From Christian B. Fixes #1194.
- 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


svn path=/trunk/boinc/; revision=25837
2012-07-02 18:51:02 +00:00
David Anderson e279b59913 - 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


svn path=/trunk/boinc/; revision=24303
2011-09-27 19:45:27 +00:00
David Anderson 864ee7e3a3 - scheduler: in some cases the system may have a too-low estimate
of the performance of an app version on a host.
    It will then stop using that app version,
    so the estimate never has a chance to converge to its correct value.
    Fix: multiply by a random factor (mean 1, stddev .1)
    when comparing the FLOPS estimates of app versions.

svn path=/trunk/boinc/; revision=22837
2010-12-09 00:32:50 +00:00
David Anderson 4edfe2ec28 - client: small initial checkin for new scheduling system.
Keep track of per-project recent estimated credit

svn path=/trunk/boinc/; revision=22608
2010-10-29 23:41:34 +00:00
David Anderson 40c50852f5 - scheduler: fix logic that deals with jobs that need > 2GB RAM.
My change of 1 Oct ([22440]) required that such jobs
    be processed with 64-bit apps,
    on the assumption that 32-bit apps have a 2 GB user address space limit.
    However, it turns out this limit applies only to Windows
    (kernel and user mode share the 4GB address space; each gets half).
    On Linux, the split is 3GB user / 1 GB kernel.
    On Mac OS X, user mode and kernel mode have separate address spaces,
    each of them 4 GB.


svn path=/trunk/boinc/; revision=22599
2010-10-27 22:58:16 +00:00
Rom Walton 8a79417f19 - Win/Linux: Implement the launch new manager functionality for Windows
and Linux.
        
    clientgui/
        AdvancedFrame.cpp
        BOINCGUIApp.cpp, .h
    lib/
        util.h

svn path=/trunk/boinc/; revision=22497
2010-10-13 21:02:42 +00:00
David Anderson 9527cb6534 - install: don't install std_fixes.h or msg_queue.cpp
- remove some unused code
- scheduler: small code cleanup

svn path=/trunk/boinc/; revision=18465
2009-06-19 17:21:34 +00:00
David Anderson ad6a61a3a6 - sample bitwise validator: make it work for binary files
fixes #886, #887

svn path=/trunk/boinc/; revision=17966
2009-05-01 18:25:17 +00:00
David Anderson 338c751d5c - compile fix
svn path=/trunk/boinc/; revision=17682
2009-03-27 21:03:41 +00:00
David Anderson 98d6931d63 - client (Unix): if app uses < 1 CPU, run at nice 10 (not 0)
- client: suppress specious error message

svn path=/trunk/boinc/; revision=16496
2008-11-14 22:08:50 +00:00
David Anderson f17a800807 - API: in boinc_exit(), release the lockfile only if
we're the main program (otherwise we didn't lock it in
    the first place, and a crash results).  From Artyom Sharov.
- scheduler: add support for the GCL simulator,
    which uses special versions of backend programs
    that use virtual time,
    and that wait for signals instead of sleep()ing.

    To compile:
        make clean
        configure CXXFLAGS="-DGCL_SIMULATOR"
        make

svn path=/trunk/boinc/; revision=16038
2008-09-22 20:33:59 +00:00
David Anderson 4f66bb4c95 - added copyright and license info to .C, .cpp, .h files
- 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
2008-08-06 18:36:30 +00:00
David Anderson 671524df2a - Second pass at the above. We still need run_program() in util.C.
The problem was that there's a lot of extra stuff needed
    for running apps on Windows (e.g. related to sandboxing).
    This needed to be a new function.

svn path=/trunk/boinc/; revision=14879
2008-03-10 22:36:22 +00:00
David Anderson cc2f1a20a0 - lib: moved "run program as user" stuff to a separate file,
so it doesn't screw up the linkage of apps that don't use it
- start of server-side support for coprocessors

svn path=/trunk/boinc/; revision=14878
2008-03-10 21:59:27 +00:00
Rom Walton 75e334811a - client: prevent information disclosure by creating a new environment
block for applications launched using the 'boinc_project' account.
        
        Windows contains environment variables that describe username,
        domain name, profile directory and even logon server.
        
    - client: correctly parse domain name information from the
        client_auth.xml file when a different account is used for
        'boinc_master'.
    - SCR/MGR: Add two API's to adjust the ACLs on the current users
        desktop and windowstation so that graphics applications can
        properly create controls and dialogs for applications
        launched using 'boinc_project'.
        
    client/
        app_start.C
    lib/
        boinc_win.h
        util.C, .h
    lib/
        win_util.C, .h
    win_build/
        boinc_cli_curl.vcproj

svn path=/trunk/boinc/; revision=14748
2008-02-15 15:52:16 +00:00
David Anderson 51764d5abc compile fixes
svn path=/trunk/boinc/; revision=14726
2008-02-12 20:49:44 +00:00
David Anderson 35dab13859 - client code: my next-to-last checkin was flawed
svn path=/trunk/boinc/; revision=14725
2008-02-12 20:33:05 +00:00
David Anderson cf9b2b7c4a - compile fixes
svn path=/trunk/boinc/; revision=14722
2008-02-12 15:28:31 +00:00
David Anderson ee34cf3ab7 - client: removed sprawl
svn path=/trunk/boinc/; revision=14721
2008-02-12 15:04:27 +00:00
Rom Walton bda057588a - WINSETUP: disable creation of client_auth.xml on Win2k.
Win2k requires any user account that is going to attempt
        to logon as another account to have admin privs.
    - WINSETUP: Give 'boinc_project' the right to be able to
        logon as a service, we denied the right to logon
        interactively.
    - WINSETUP: Disable the 'failed to shutdown BOINC service'
        dialog box.
    - CC: Use the client_auth.xml file if present to launch
        boinc applications as boinc_project if it exists.
    - LIB: Use the client_auth.xml file if present to launch
        boinc graphics applications as boinc_project if it
        exists.
        
    client/
        app_start.C
    lib/
        diagnostics_win.C
    lib/
        util.C, .h
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CACreateBOINCGroups.cpp
        CACreateClientAuthFile.cpp
        CAGrantBOINCMasterRights.cpp
        CAGrantBOINCProjectRights.cpp
        CAShutdownBOINC.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll
    win_build/
        boinc_ss.vcproj
        boincmgr_curl.vcproj
        libboinc.vcproj

svn path=/trunk/boinc/; revision=14659
2008-02-01 22:08:48 +00:00
David Anderson 028544e184 - API: get rid of getrusage_mutex to synchronize calls to getrusage()
and access to worker_thread_ru.
    This was being used in the worker signal handler,
    which is bad because pthread_mutex_lock() can allocate memory.
    I don't think this matters; at worst we might get
    CPU times off by < 1 sec.

svn path=/trunk/boinc/; revision=13844
2007-10-12 19:28:30 +00:00
Frank Thomas fbcfeaf456 - Removed the svn:executable property from files that should not be executable,
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
2007-10-10 09:25:40 +00:00
Frank Thomas 3bfc78b511 Updated the postal address of the Free Software Foundation in all license headers. See http://lists.ssl.berkeley.edu/pipermail/boinc_dev/2007-October/008939.html for reference.
svn path=/trunk/boinc/; revision=13804
2007-10-09 11:35:47 +00:00
David Anderson d302a5e107 - client/manager/API: code cleanup to disentangle sandbox code from lib/.
- 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
2007-10-05 16:47:07 +00:00
David Anderson ab09ba8834 - graphics API: redo the code for backwards compatibility with V5 so that
at most one regular and one full-screen graphics window can be open,
    and a "hide" message kills the full-screen window if one exists,
    else a regular window.
    Keep track of the PIDs separately for regular and full-screen.
    Also, don't send a "hide" ack if we don't do graphics.

svn path=/trunk/boinc/; revision=13697
2007-09-28 04:23:34 +00:00
David Anderson dabba949a4 - client: when a job finishes, read last (not first) 63KB of stderr
- client: parse <cpid_time> in scheduler reply;
        add cpid_time field to PROJECT.
        This defaults to the user_create_time.
        In deciding which CPID to send in a scheduler request,
        use the one with oldest cpid_time (not user_create_time).
        This is the client half of fixing a bug that causes
        CPID to flip/flop between to values in a certain case.

svn path=/trunk/boinc/; revision=13531
2007-09-03 23:00:22 +00:00
David Anderson e1a0c552e2 - compile fixes for Win
client/
		acct_setup.C
		cs_prefs.C
		cs_trickle.C
	lib/
		filesys.C
		str_util.C,h
		util.C,h
	tools/
		updater.C
	win_build/
		sim.vcproj

svn path=/trunk/boinc/; revision=12985
2007-06-22 20:17:08 +00:00
David Anderson 7b74befedc - client: when you read a file into a string with:
loop
            read a line X
            S += X
    it performs real bad if the file is large
    (allocation of std::string seems to stupid)
    So I changed this to
        find file size n
        read file into malloced buf size n
        S = buf
        free buf
- lib: moved functions to appropriate file
        
client/
    acct_setup.C
    cs_prefs.C
lib/
    parse.C,h
    str_util.C,h
    util.C,h

svn path=/trunk/boinc/; revision=12983
2007-06-22 18:53:55 +00:00
David Anderson 6b4e912b27 - random compile warning fixes
client/
    auto_update.C
    file_names.h
    scheduler_op.C
    time_stats.C
lib/
    util.C,h
tools/
    create_work.C
    updater.C

svn path=/trunk/boinc/; revision=12971
2007-06-20 23:16:30 +00:00
David Anderson b7fad32d14 svn path=/trunk/boinc/; revision=12960 2007-06-19 15:46:53 +00:00
David Anderson 90374052f2 - debug version 6-style graphics on Windows.
New example app works now!

	api/
		graphics2.C,h
		graphics2_util.C
		graphics2_win.C
	lib/
		util.C,h

svn path=/trunk/boinc/; revision=12735
2007-05-23 21:02:19 +00:00
David Anderson 11869bc0be *** empty log message ***
svn path=/trunk/boinc/; revision=12333
2007-04-09 02:17:26 +00:00
David Anderson 52793262e1 *** empty log message ***
svn path=/trunk/boinc/; revision=12257
2007-03-20 23:12:22 +00:00
David Anderson aacfe0c952 *** empty log message ***
svn path=/trunk/boinc/; revision=12255
2007-03-20 19:55:53 +00:00
David Anderson 81effa6a7b *** empty log message ***
svn path=/trunk/boinc/; revision=12127
2007-02-21 16:26:51 +00:00
David Anderson 6a10211584 *** empty log message ***
svn path=/trunk/boinc/; revision=11960
2007-01-24 22:55:00 +00:00
David Anderson eba028a27d *** empty log message ***
svn path=/trunk/boinc/; revision=11946
2007-01-23 22:29:19 +00:00
David Anderson 3967a1f924 *** empty log message ***
svn path=/trunk/boinc/; revision=11850
2007-01-12 17:42:29 +00:00
David Anderson 46695c2155 *** empty log message ***
svn path=/trunk/boinc/; revision=11683
2006-12-14 20:44:39 +00:00
David Anderson 86ad19ce5f *** empty log message ***
svn path=/trunk/boinc/; revision=11672
2006-12-14 00:42:43 +00:00