yang zhang created an issue:
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5181
## Summary
I use a sample code in man pthread_cancel to test pthread_cancle it rtems, but
it can't work.
## Steps to reproduce
1. I reusing posix testcases -- psxcancel
2. Modify in by sample code in man pthread_cancel
3. Check the output log, it should be as below:
thread_func(): started; cancellation disabled
main(): sending cancellation request
thread_func(): about to enable cancellation
main(): thread was canceled
But actually, it's as below:
thread_func(): started; cancellation disabled
main(): sending cancellation request
thread_func(): about to enable cancellation
//sleep 100s
thread_func(): not canceled!
main(): thread wasn't canceled (shouldn't happen!)
## Information
As man pthread_cancel say
"If a thread has disabled cancellation, then a cancellation request remains
queued until the thread enables cancellation."
" Deferred cancelability means that cancellation will be delayed until the
thread next calls a function that is a cancellation point. "
" Cancellation points
POSIX.1 specifies that certain functions must, and certain
other functions may, be cancellation points. If a thread is
cancelable, its cancelability type is deferred, and a cancella‐
tion request is pending for the thread, then the thread is can‐
celed when it calls a function that is a cancellation point."
//the test case for rtems
[pthread_cancel.diff](/uploads/3802221a7da3d2e8b85d35e8477158dc/pthread_cancel.diff)
//the sample code in man pthread_cancel
[test_cancel_posix.c](/uploads/96a574a3d50ddd4d06e4b809ef3a4237/test_cancel_posix.c)
--
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5181
You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs