When a thread is cancelled only abort pending system calls if

the thread is set for asynchronous cancellation and cancellation
is enabled. This fixes a long standing occasional failure in
the pth_cancel2 test.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2871
This commit is contained in:
Tom Hughes
2004-10-28 15:56:55 +00:00
parent e45ef10b13
commit d8f3032bc2

View File

@@ -1605,8 +1605,11 @@ void do__set_cancelpend ( ThreadId tid,
VG_(threads)[cee].cancel_pend = cancelpend_hdlr;
/* interrupt a pending syscall */
VG_(proxy_abort_syscall)(cee);
/* interrupt a pending syscall if asynchronous cancellation
is enabled for the target thread */
if (VG_(threads)[cee].cancel_st && !VG_(threads)[cee].cancel_ty) {
VG_(proxy_abort_syscall)(cee);
}
if (VG_(clo_trace_sched)) {
VG_(sprintf)(msg_buf,