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.

Reply via email to