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.

Reply via email to