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.
