diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2013-04-16 23:29:28 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2013-04-16 23:29:28 +0200 |
commit | adbfe5d8b9645308dc03d6da922acc07802750b8 (patch) | |
tree | 6ee4efecfc41f87ad760153be15983ad404712cc | |
parent | ffea75aa308030dce86a9449cb8bde3868319332 (diff) | |
parent | bbce85a26c3749017acbef2983b1a2fade6510cc (diff) |
Merge remote-tracking branch 'savannah/master' into HEAD
-rw-r--r-- | open_issues/libpthread_cancellation_points.mdwn | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/open_issues/libpthread_cancellation_points.mdwn b/open_issues/libpthread_cancellation_points.mdwn new file mode 100644 index 00000000..af0efa9d --- /dev/null +++ b/open_issues/libpthread_cancellation_points.mdwn @@ -0,0 +1,41 @@ +[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="cancellation points are not cancelling threads"]] + +[[!tag open_issue_libpthread]] + + #include <pthread.h> + #include <stdio.h> + #include <sys/select.h> + #include <unistd.h> + + void *f (void*foo) + { + char buf[128]; + //pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + while (1) { + read (0, buf, sizeof(buf)); + } + } + int main (void) { + pthread_t t; + pthread_create (&t, NULL, f, NULL); + sleep (1); + pthread_cancel (t); + pthread_join (t, NULL); + exit(0); + } + +read() is not behaving as a cancellation point, only setting the cancel +type to asynchronous permits this testcase to terminate. We do have the +pthread_setcanceltype glibc/libpthread hook in the forward structure, but we are +not using it: the LIBC_CANCEL_ASYNC macros are void, and we're not using them in +the mig msg call either. |