From 7cfe9a052bf39da30ca62330ab335ca47f2d7c40 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 29 Oct 2004 18:36:17 +0000 Subject: [PATCH] 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. MERGE TO STABLE git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_2_2_0_BRANCH@2878 --- coregrind/vg_scheduler.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/coregrind/vg_scheduler.c b/coregrind/vg_scheduler.c index a42f6dcb29..12429cee51 100644 --- a/coregrind/vg_scheduler.c +++ b/coregrind/vg_scheduler.c @@ -1749,8 +1749,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, -- 2.47.2