mirror of https://github.com/BOINC/boinc.git
- API and sample apps: pass buf length arg to boinc_msg_prefix()
and use snprintf() to avoid overrun. Can't see why this could ever happen. Attempt to fix crash in E@h apps. svn path=/trunk/boinc/; revision=22363
This commit is contained in:
parent
70ad1dcb4b
commit
1637c19e08
|
@ -193,17 +193,18 @@ static void boinc_exit(int);
|
|||
static void block_sigalrm();
|
||||
static int start_worker_signals();
|
||||
|
||||
char* boinc_msg_prefix(char* sbuf) {
|
||||
char* boinc_msg_prefix(char* sbuf, int len) {
|
||||
char buf[256];
|
||||
|
||||
time_t x = time(0);
|
||||
struct tm* tm = localtime(&x);
|
||||
strftime(buf, sizeof(buf)-1, "%H:%M:%S", tm);
|
||||
#ifdef _WIN32
|
||||
sprintf(sbuf, "%s (%d):", buf, GetCurrentProcessId());
|
||||
snprintf(sbuf, len, "%s (%d):", buf, GetCurrentProcessId());
|
||||
#else
|
||||
sprintf(sbuf, "%s (%d):", buf, getpid());
|
||||
snprintf(sbuf, len, "%s (%d):", buf, getpid());
|
||||
#endif
|
||||
sbuf[len-1] = 0; // just in case
|
||||
return sbuf;
|
||||
}
|
||||
|
||||
|
@ -212,7 +213,7 @@ static int setup_shared_mem() {
|
|||
if (standalone) {
|
||||
fprintf(stderr,
|
||||
"%s Standalone mode, so not using shared memory.\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
@ -367,7 +368,7 @@ int boinc_init_options_general(BOINC_OPTIONS& opt) {
|
|||
// give any previous occupant a chance to timeout and exit
|
||||
//
|
||||
fprintf(stderr, "%s Can't acquire lockfile (%d) - waiting %ds\n",
|
||||
boinc_msg_prefix(buf),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
retval, LOCKFILE_TIMEOUT_PERIOD
|
||||
);
|
||||
boinc_sleep(LOCKFILE_TIMEOUT_PERIOD);
|
||||
|
@ -375,13 +376,13 @@ int boinc_init_options_general(BOINC_OPTIONS& opt) {
|
|||
}
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s Can't acquire lockfile (%d) - exiting\n",
|
||||
boinc_msg_prefix(buf),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
retval
|
||||
);
|
||||
#ifdef _WIN32
|
||||
char buf[256];
|
||||
windows_error_string(buf, 256);
|
||||
fprintf(stderr, "%s Error: %s\n", boinc_msg_prefix(buf), buf);
|
||||
char buf2[256];
|
||||
windows_error_string(buf2, 256);
|
||||
fprintf(stderr, "%s Error: %s\n", boinc_msg_prefix(buf, sizeof(buf)), buf2);
|
||||
#endif
|
||||
// if we can't acquire the lock file there must be
|
||||
// another app instance running in this slot.
|
||||
|
@ -400,7 +401,7 @@ int boinc_init_options_general(BOINC_OPTIONS& opt) {
|
|||
if (retval) {
|
||||
fprintf(stderr,
|
||||
"%s Can't set up shared mem: %d. Will run in standalone mode.\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
standalone = true;
|
||||
}
|
||||
|
@ -463,7 +464,10 @@ static void send_trickle_up_msg() {
|
|||
int boinc_finish(int status) {
|
||||
char buf[256];
|
||||
fraction_done = 1;
|
||||
fprintf(stderr, "%s called boinc_finish\n", boinc_msg_prefix(buf));
|
||||
fprintf(stderr,
|
||||
"%s called boinc_finish\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
boinc_sleep(2.0); // let the timer thread send final messages
|
||||
g_sleep = true; // then disable it
|
||||
|
||||
|
@ -509,11 +513,12 @@ void boinc_exit(int status) {
|
|||
windows_error_string(buf, 256);
|
||||
fprintf(stderr,
|
||||
"%s Can't unlock lockfile (%d): %s\n",
|
||||
boinc_msg_prefix(buf), retval, buf
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval, buf
|
||||
);
|
||||
#else
|
||||
fprintf(stderr,
|
||||
"%s Can't unlock lockfile (%d)\n", boinc_msg_prefix(buf), retval
|
||||
"%s Can't unlock lockfile (%d)\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
perror("file unlock failed");
|
||||
#endif
|
||||
|
@ -556,7 +561,7 @@ static void exit_from_timer_thread(int status) {
|
|||
#ifdef DEBUG_BOINC_API
|
||||
char buf[256];
|
||||
fprintf(stderr, "%s exit_from_timer_thread(%d) called\n",
|
||||
boinc_msg_prefix(buf), status
|
||||
boinc_msg_prefix(buf, sizeof(buf)), status
|
||||
);
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
|
@ -595,7 +600,7 @@ int boinc_parse_init_data_file() {
|
|||
if (!boinc_file_exists(INIT_DATA_FILE)) {
|
||||
fprintf(stderr,
|
||||
"%s Can't open init data file - running in standalone mode\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
return ERR_FOPEN;
|
||||
}
|
||||
|
@ -605,7 +610,7 @@ int boinc_parse_init_data_file() {
|
|||
if (retval) {
|
||||
fprintf(stderr,
|
||||
"%s Can't parse init data file - running in standalone mode\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
return retval;
|
||||
}
|
||||
|
@ -723,7 +728,7 @@ static void handle_upload_file_status() {
|
|||
if (!f) {
|
||||
fprintf(stderr,
|
||||
"%s handle_file_upload_status: can't open %s\n",
|
||||
boinc_msg_prefix(buf), filename.c_str()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), filename.c_str()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -736,7 +741,7 @@ static void handle_upload_file_status() {
|
|||
upload_file_status.push_back(uf);
|
||||
} else {
|
||||
fprintf(stderr, "%s handle_upload_file_status: can't parse %s\n",
|
||||
boinc_msg_prefix(log_buf), buf
|
||||
boinc_msg_prefix(log_buf, sizeof(log_buf)), buf
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -765,7 +770,7 @@ static void handle_process_control_msg() {
|
|||
#ifdef DEBUG_BOINC_API
|
||||
char log_buf[256]
|
||||
fprintf(stderr, "%s got process control msg %s\n",
|
||||
boinc_msg_prefix(log_buf), buf
|
||||
boinc_msg_prefix(log_buf, sizeof(log_buf)), buf
|
||||
);
|
||||
#endif
|
||||
if (match_tag(buf, "<suspend/>")) {
|
||||
|
@ -937,7 +942,8 @@ static void timer_handler() {
|
|||
#ifdef DEBUG_BOINC_API
|
||||
if (in_critical_section) {
|
||||
fprintf(stderr,
|
||||
"%s: timer_handler(): in critical section\n", boinc_msg_prefix(buf)
|
||||
"%s: timer_handler(): in critical section\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
@ -962,7 +968,7 @@ static void timer_handler() {
|
|||
if (interrupt_count % TIMERS_PER_SEC) return;
|
||||
|
||||
#ifdef DEBUG_BOINC_API
|
||||
fprintf(stderr, "%s 1 sec elapsed\n", boinc_msg_prefix(buf));
|
||||
fprintf(stderr, "%s 1 sec elapsed\n", boinc_msg_prefix(buf, sizeof(buf)));
|
||||
#endif
|
||||
|
||||
// here it we're at a one-second boundary; do slow stuff
|
||||
|
@ -982,7 +988,7 @@ static void timer_handler() {
|
|||
if (heartbeat_giveup_time < interrupt_count) {
|
||||
fprintf(stderr,
|
||||
"%s No heartbeat from core client for 30 sec - exiting\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
if (options.direct_process_action) {
|
||||
exit_from_timer_thread(0);
|
||||
|
@ -1092,7 +1098,7 @@ int start_timer_thread() {
|
|||
if (!CreateThread(NULL, 0, timer_thread, 0, 0, &timer_thread_id)) {
|
||||
fprintf(stderr,
|
||||
"%s start_timer_thread(): CreateThread() failed, errno %d\n",
|
||||
boinc_msg_prefix(buf), errno
|
||||
boinc_msg_prefix(buf, sizeof(buf)), errno
|
||||
);
|
||||
return errno;
|
||||
}
|
||||
|
@ -1110,7 +1116,7 @@ int start_timer_thread() {
|
|||
if (retval) {
|
||||
fprintf(stderr,
|
||||
"%s start_timer_thread(): pthread_create(): %d",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -125,7 +125,7 @@ extern int boinc_wu_cpu_time(double&);
|
|||
extern double boinc_elapsed_time();
|
||||
extern int boinc_upload_file(std::string& name);
|
||||
extern int boinc_upload_status(std::string& name);
|
||||
extern char* boinc_msg_prefix(char*);
|
||||
extern char* boinc_msg_prefix(char*, int);
|
||||
|
||||
/////////// API ENDS HERE
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ bool fullscreen;
|
|||
|
||||
void boinc_close_window_and_quit(const char* p) {
|
||||
char buf[256];
|
||||
fprintf(stderr, "%s Quitting: %s\n", boinc_msg_prefix(buf), p);
|
||||
fprintf(stderr, "%s Quitting: %s\n", boinc_msg_prefix(buf, sizeof(buf)), p);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ static bool fullscreen;
|
|||
void boinc_close_window_and_quit(const char* p) {
|
||||
char buf[256];
|
||||
fprintf(stderr, "%s Close event (%s) detected, shutting down.\n",
|
||||
boinc_msg_prefix(buf), p
|
||||
boinc_msg_prefix(buf, sizeof(buf)), p
|
||||
);
|
||||
|
||||
window_ready = false;
|
||||
|
@ -105,7 +105,7 @@ void SetupPixelFormat(HDC win_dc) {
|
|||
if (!SetPixelFormat(win_dc, nPixelFormat, &pfd)) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: Couldn't set pixel format for device context (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -168,14 +168,14 @@ static void make_window(const char* title) {
|
|||
if (!SetForegroundWindow(window)) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: SetForegroundWindow() failed (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
}
|
||||
|
||||
if (!GetCursorPos(&mousePos)) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: GetCursorPos() failed (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -183,7 +183,7 @@ static void make_window(const char* title) {
|
|||
if (!win_dc) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: GetDC() failed (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
}
|
||||
SetupPixelFormat(win_dc);
|
||||
|
@ -192,7 +192,7 @@ static void make_window(const char* title) {
|
|||
if (!gl_dc) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: wglCreateContext() failed (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
ReleaseDC(window, win_dc);
|
||||
return;
|
||||
|
@ -201,7 +201,7 @@ static void make_window(const char* title) {
|
|||
if(!wglMakeCurrent(win_dc, gl_dc)) {
|
||||
fprintf(stderr,
|
||||
"%s ERROR: wglMakeCurrent() failed (0x%x).\n",
|
||||
boinc_msg_prefix(buf), GetLastError()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), GetLastError()
|
||||
);
|
||||
ReleaseDC(window, win_dc);
|
||||
wglDeleteContext(gl_dc);
|
||||
|
@ -416,13 +416,16 @@ void boinc_graphics_loop(int argc, char** argv, const char* title) {
|
|||
boinc_init_graphics_diagnostics(BOINC_DIAG_DEFAULTS);
|
||||
}
|
||||
|
||||
fprintf(stderr, "%s Starting graphics application.\n", boinc_msg_prefix(buf));
|
||||
fprintf(stderr,
|
||||
"%s Starting graphics application.\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
|
||||
for (int i=1; i<argc; i++) {
|
||||
if (!strcmp(argv[i], "--fullscreen")) {
|
||||
fullscreen = true;
|
||||
fprintf(stderr, "%s fullscreen mode requested.\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -450,7 +453,7 @@ void boinc_graphics_loop(int argc, char** argv, const char* title) {
|
|||
unreg_win_class();
|
||||
|
||||
fprintf(stderr, "%s Shutting down graphics application.\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char **argv) {
|
|||
retval = boinc_init();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ int main(int argc, char **argv) {
|
|||
if (!infile) {
|
||||
fprintf(stderr,
|
||||
"%s Couldn't find input file, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf), input_path
|
||||
boinc_msg_prefix(buf, sizeof(buf)), input_path
|
||||
);
|
||||
exit(-1);
|
||||
}
|
||||
|
@ -192,10 +192,10 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case output open failed:\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
fprintf(stderr, "%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf), output_path, retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), output_path, retval
|
||||
);
|
||||
perror("open");
|
||||
exit(1);
|
||||
|
@ -207,7 +207,7 @@ int main(int argc, char **argv) {
|
|||
shmem = (UC_SHMEM*)boinc_graphics_make_shmem("uppercase", sizeof(UC_SHMEM));
|
||||
if (!shmem) {
|
||||
fprintf(stderr, "%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
update_shmem();
|
||||
|
@ -243,7 +243,7 @@ int main(int argc, char **argv) {
|
|||
retval = do_checkpoint(out, nchars);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ int main(int argc, char **argv) {
|
|||
retval = out.flush();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case flush failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ int main(int argc, char **argv) {
|
|||
retval = do_checkpoint(out, nchars);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -6596,3 +6596,17 @@ David 15 Sept 2010
|
|||
|
||||
lib/
|
||||
gui_rpc_client.cpp
|
||||
|
||||
David 15 Sept 2010
|
||||
- API and sample apps: pass buf length arg to boinc_msg_prefix()
|
||||
and use snprintf() to avoid overrun.
|
||||
Can't see why this could ever happen.
|
||||
Attempt to fix crash in E@h apps.
|
||||
|
||||
apps/
|
||||
upper_case.cpp
|
||||
samples/*/*.cpp
|
||||
api/
|
||||
boinc_api.cpp,h
|
||||
graphics2_unix.cpp
|
||||
graphics2_win.cpp
|
||||
|
|
|
@ -58,7 +58,7 @@ int main(int argc, char * argv[]) {
|
|||
retval = boinc_init();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf), retval );
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval );
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ int main(int argc, char * argv[]) {
|
|||
if (!infile) {
|
||||
fprintf(stderr,
|
||||
"%s Couldn't find input file in boinc\\win_build, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf), input_path
|
||||
boinc_msg_prefix(buf, sizeof(buf)), input_path
|
||||
);
|
||||
getchar();
|
||||
exit(-1);
|
||||
|
@ -102,10 +102,10 @@ int main(int argc, char * argv[]) {
|
|||
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion output open failed:\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
fprintf(stderr, "%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf), output_path, retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), output_path, retval
|
||||
);
|
||||
perror("open");
|
||||
exit(1);
|
||||
|
@ -117,7 +117,7 @@ int main(int argc, char * argv[]) {
|
|||
shmem = (UC_SHMEM*)boinc_graphics_make_shmem("matrix_inversion", sizeof(UC_SHMEM));
|
||||
if (!shmem) {
|
||||
fprintf(stderr, "%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
update_shmem();
|
||||
|
@ -180,7 +180,7 @@ int main(int argc, char * argv[]) {
|
|||
retval = do_checkpoint(out, i, input, matrixSize);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ int main(int argc, char * argv[]) {
|
|||
retval = out.flush(); //force the output file to be closed.
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion flush failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ int main(int argc, char * argv[]) {
|
|||
retval = do_checkpoint(out, NUM_ITERATIONS, input, matrixSize);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: maxtrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char **argv) {
|
|||
retval = boinc_init();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ int main(int argc, char **argv) {
|
|||
if (!infile) {
|
||||
fprintf(stderr,
|
||||
"%s Couldn't find input file, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf), input_path
|
||||
boinc_msg_prefix(buf, sizeof(buf)), input_path
|
||||
);
|
||||
exit(-1);
|
||||
}
|
||||
|
@ -192,10 +192,10 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case output open failed:\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
fprintf(stderr, "%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf), output_path, retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), output_path, retval
|
||||
);
|
||||
perror("open");
|
||||
exit(1);
|
||||
|
@ -207,7 +207,7 @@ int main(int argc, char **argv) {
|
|||
shmem = (UC_SHMEM*)boinc_graphics_make_shmem("uppercase", sizeof(UC_SHMEM));
|
||||
if (!shmem) {
|
||||
fprintf(stderr, "%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf)
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
update_shmem();
|
||||
|
@ -243,7 +243,7 @@ int main(int argc, char **argv) {
|
|||
retval = do_checkpoint(out, nchars);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ int main(int argc, char **argv) {
|
|||
retval = out.flush();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case flush failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ int main(int argc, char **argv) {
|
|||
retval = do_checkpoint(out, nchars);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: upper_case checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -82,14 +82,18 @@ struct THREAD {
|
|||
NULL
|
||||
);
|
||||
if (!id) {
|
||||
fprintf(stderr, "%s Can't start thread\n", boinc_msg_prefix(buf));
|
||||
fprintf(stderr, "%s Can't start thread\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
#else
|
||||
int retval;
|
||||
retval = pthread_create(&id, 0, func, (void*)this);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s can't start thread\n", boinc_msg_prefix(buf));
|
||||
fprintf(stderr, "%s can't start thread\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
@ -139,7 +143,7 @@ void* worker(void* p) {
|
|||
double x = do_a_giga_flop(i);
|
||||
t->units_done++;
|
||||
fprintf(stderr, "%s thread %d finished %d: %f\n",
|
||||
boinc_msg_prefix(buf), t->index, i, x
|
||||
boinc_msg_prefix(buf, sizeof(buf)), t->index, i, x
|
||||
);
|
||||
}
|
||||
t->id = THREAD_ID_NULL;
|
||||
|
@ -160,7 +164,7 @@ int main(int argc, char** argv) {
|
|||
nthreads = atoi(argv[++i]);
|
||||
} else {
|
||||
fprintf(stderr, "%s unrecognized arg: %s\n",
|
||||
boinc_msg_prefix(buf), argv[i]
|
||||
boinc_msg_prefix(buf, sizeof(buf)), argv[i]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -181,7 +185,7 @@ int main(int argc, char** argv) {
|
|||
double elapsed_time = dtime()-start_time;
|
||||
fprintf(stderr,
|
||||
"%s All done. Used %d threads. Elapsed time %f\n",
|
||||
boinc_msg_prefix(buf), nthreads, elapsed_time
|
||||
boinc_msg_prefix(buf, sizeof(buf)), nthreads, elapsed_time
|
||||
);
|
||||
boinc_finish(0);
|
||||
}
|
||||
|
|
|
@ -44,8 +44,7 @@ bool early_crash = false;
|
|||
bool early_sleep = false;
|
||||
double cpu_time = 20, comp_result;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int main(int argc, char** argv) {
|
||||
int i, retval, lastInversion=0, checkpointExists=0, dimension=0;
|
||||
double fd;
|
||||
char input_path[512], output_path[512], chkpt_path[512], buf[256];
|
||||
|
@ -68,9 +67,10 @@ int main(int argc, char** argv)
|
|||
|
||||
retval = boinc_init();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
|
@ -80,9 +80,9 @@ int main(int argc, char** argv)
|
|||
infile = boinc_fopen(input_path, "r");
|
||||
if (!infile) {
|
||||
fprintf(stderr,
|
||||
"%s Couldn't find input file, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf), input_path
|
||||
);
|
||||
"%s Couldn't find input file, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), input_path
|
||||
);
|
||||
getchar();
|
||||
exit(-1);
|
||||
}
|
||||
|
@ -113,12 +113,14 @@ int main(int argc, char** argv)
|
|||
retval = out.open(output_path, "wb");
|
||||
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion output open failed:\n",
|
||||
boinc_msg_prefix(buf)
|
||||
);
|
||||
fprintf(stderr, "%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf), output_path, retval
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion output open failed:\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), output_path, retval
|
||||
);
|
||||
perror("open");
|
||||
exit(1);
|
||||
}
|
||||
|
@ -128,9 +130,10 @@ int main(int argc, char** argv)
|
|||
//
|
||||
shmem = (UC_SHMEM*)boinc_graphics_make_shmem("matrix_inversion", sizeof(UC_SHMEM));
|
||||
if (!shmem) {
|
||||
fprintf(stderr, "%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf)
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
update_shmem();
|
||||
boinc_register_timer_callback(update_shmem);
|
||||
|
@ -175,9 +178,10 @@ int main(int argc, char** argv)
|
|||
//we'll need to write the current matrix to the state file.
|
||||
retval = do_checkpoint(out, i, h_idata, dimension);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
boinc_checkpoint_completed();
|
||||
|
@ -194,9 +198,10 @@ int main(int argc, char** argv)
|
|||
cudaFreeHost( h_idata );
|
||||
retval = out.flush(); //force the output file to be closed.
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion flush failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion flush failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -214,9 +219,10 @@ int main(int argc, char** argv)
|
|||
if (boinc_time_to_checkpoint()) {
|
||||
retval = do_checkpoint(out, NUM_ITERATIONS, h_idata, dimension);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: maxtrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
);
|
||||
fprintf(stderr,
|
||||
"%s APP: maxtrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
boinc_checkpoint_completed();
|
||||
|
@ -381,4 +387,4 @@ void print_to_file(MFILE *out, float *h_odata, int dimension) {
|
|||
}
|
||||
--num_elements;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,8 +57,10 @@ int main(int argc, char * argv[]) {
|
|||
|
||||
retval = boinc_init();
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf), retval );
|
||||
fprintf(stderr,
|
||||
"%s boinc_init returned %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
|
@ -69,7 +71,7 @@ int main(int argc, char * argv[]) {
|
|||
if (!infile) {
|
||||
fprintf(stderr,
|
||||
"%s Couldn't find input file in boinc\\win_build, resolved name %s.\n",
|
||||
boinc_msg_prefix(buf), input_path
|
||||
boinc_msg_prefix(buf, sizeof(buf)), input_path
|
||||
);
|
||||
getchar();
|
||||
exit(-1);
|
||||
|
@ -101,11 +103,13 @@ int main(int argc, char * argv[]) {
|
|||
retval = out.open(output_path, "wb");
|
||||
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion output open failed:\n",
|
||||
boinc_msg_prefix(buf)
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion output open failed:\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
fprintf(stderr, "%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf), output_path, retval
|
||||
fprintf(stderr,
|
||||
"%s resolved name %s, retval %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), output_path, retval
|
||||
);
|
||||
perror("open");
|
||||
exit(1);
|
||||
|
@ -116,8 +120,9 @@ int main(int argc, char * argv[]) {
|
|||
//
|
||||
shmem = (UC_SHMEM*)boinc_graphics_make_shmem("matrix_inversion", sizeof(UC_SHMEM));
|
||||
if (!shmem) {
|
||||
fprintf(stderr, "%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf)
|
||||
fprintf(stderr,
|
||||
"%s failed to create shared mem segment\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
}
|
||||
update_shmem();
|
||||
|
@ -179,8 +184,9 @@ int main(int argc, char * argv[]) {
|
|||
//we'll need to write the current matrix to the state file.
|
||||
retval = do_checkpoint(out, i, input, matrixSize);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(retval);
|
||||
}
|
||||
|
@ -197,8 +203,9 @@ int main(int argc, char * argv[]) {
|
|||
|
||||
retval = out.flush(); //force the output file to be closed.
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: matrix_inversion flush failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
fprintf(stderr,
|
||||
"%s APP: matrix_inversion flush failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -226,8 +233,9 @@ int main(int argc, char * argv[]) {
|
|||
if (boinc_time_to_checkpoint()) {
|
||||
retval = do_checkpoint(out, NUM_ITERATIONS, input, matrixSize);
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s APP: maxtrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf), retval
|
||||
fprintf(stderr,
|
||||
"%s APP: maxtrix_inversion checkpoint failed %d\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)), retval
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ int TASK::parse(XML_PARSER& xp) {
|
|||
while (!xp.get(tag, sizeof(tag), is_tag)) {
|
||||
if (!is_tag) {
|
||||
fprintf(stderr, "%s TASK::parse(): unexpected text %s\n",
|
||||
boinc_msg_prefix(buf), tag
|
||||
boinc_msg_prefix(buf, sizeof(buf)), tag
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -172,7 +172,10 @@ int parse_job_file() {
|
|||
boinc_resolve_filename(JOB_FILENAME, buf, 1024);
|
||||
FILE* f = boinc_fopen(buf, "r");
|
||||
if (!f) {
|
||||
fprintf(stderr, "%s can't open job file %s\n", boinc_msg_prefix(buf2), buf);
|
||||
fprintf(stderr,
|
||||
"%s can't open job file %s\n",
|
||||
boinc_msg_prefix(buf2, sizeof(buf2)), buf
|
||||
);
|
||||
return ERR_FOPEN;
|
||||
}
|
||||
mf.init_file(f);
|
||||
|
@ -181,8 +184,9 @@ int parse_job_file() {
|
|||
if (!xp.parse_start("job_desc")) return ERR_XML_PARSE;
|
||||
while (!xp.get(tag, sizeof(tag), is_tag)) {
|
||||
if (!is_tag) {
|
||||
fprintf(stderr, "%s SCHED_CONFIG::parse(): unexpected text %s\n",
|
||||
boinc_msg_prefix(buf2), tag
|
||||
fprintf(stderr,
|
||||
"%s SCHED_CONFIG::parse(): unexpected text %s\n",
|
||||
boinc_msg_prefix(buf2, sizeof(buf2)), tag
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -283,7 +287,7 @@ int TASK::run(int argct, char** argvt) {
|
|||
}
|
||||
|
||||
fprintf(stderr, "%s wrapper: running %s (%s)\n",
|
||||
boinc_msg_prefix(buf), app_path, command_line.c_str()
|
||||
boinc_msg_prefix(buf, sizeof(buf)), app_path, command_line.c_str()
|
||||
);
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
Loading…
Reference in New Issue