Today's commit f0c39bdf5117d8f7dd5092033971d7f700bd22dc
>________________________________ > From: Raistmer the Sorcerer <[email protected]> >To: David Anderson <[email protected]> >Cc: [email protected]; Boinc Projects ><[email protected]> >Sent: Friday, October 31, 2014 10:22 PM >Subject: Re: [boinc_dev] OpenCL apps orphaned on BOINC client crash/kill > > >Thanks. I added additional check for that flag but orphaned state remained. >Could you specify in what BOINC API version that bug was fixed, please ? > > >Fri, 31 Oct 2014 11:24:26 -0700 от David Anderson <[email protected]>: >>There was a bug in the API that caused apps that use critical sections >>(like most GPU apps) >>to sometimes not exit when the client exits or crashes. >>I checked in a fix. >> >>BTW, for apps that handle status events themselves, >>the flag indicating the client has died is status.no_heartbeat. >> >>-- David >> >>On 26-Oct-2014 11:30 AM, Raistmer the Sorcerer wrote: >>> >>> If BOINC client stopped unexpectedly (crashed or killed via task manager >>> for example) CPU apps exit after some time. But SETI OpenCL apps continue >>> to run to completion. >>> Such behavior can and (was demonstrated) will result in subsequent result >>> computation error with some BOINC message like "result file too long" or >>> smth alike. >>> >>> OpenCL apps working in BOINC's "critical section" and poll flags >>> periodically to see if exit required. >>> >>> Currently I use next poll function to check exit condition: >>> >>> inline void ExitCheck(){ >>> check_repeat: >>> if (boinc_status.quit_request || boinc_status.abort_request || !canRun) { >>> /* fprintf(stderr,"DEBUG: polled for exit/suspend request: exit needed. >>> Flags are: boinc_status.quit_request=%d, \ >>> boinc_status.abort_request=%d, canRun=%d\n", >>> boinc_status.quit_request,boinc_status.abort_request,canRun);*/ >>> DoSyncExit(); >>> }else if(boinc_status.suspended){ >>> Sleep(100); //R:await in sleep 100ms >>> /* fprintf(stderr,"DEBUG: polled for exit/suspend request: sleep needed. >>> Flags are: boinc_status.quit_request=%d, \ >>> boinc_status.abort_request=%d, canRun=%d\n", >>> boinc_status.quit_request,boinc_status.abort_request,canRun);*/ >>> goto check_repeat;//R: check again if exit required or sleep continues >>> }else{ >>> /* fprintf(stderr,"DEBUG: polled for exit/suspend request: exit NOT needed. >>> Flags are: boinc_status.quit_request=%d, \ >>> boinc_status.abort_request=%d, canRun=%d\n", >>> boinc_status.quit_request,boinc_status.abort_request,canRun);*/ >>> } >>> } What another flags should be checked if any to prevent orphaned state for >>> GPU apps? Does BOINC API have measures to properly end task running in >>> "critical section" in case of BOINC client crash? >>> >>> wbr >>> >>_______________________________________________ >>boinc_dev mailing list >>[email protected] >>http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev >>To unsubscribe, visit the above URL and >>(near bottom of page) enter your email address. > >_______________________________________________ >boinc_dev mailing list >[email protected] >http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev >To unsubscribe, visit the above URL and >(near bottom of page) enter your email address. > > _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
