From d8f3032bc210deb79fc150e52fdcd0f3d70f0f46 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 28 Oct 2004 15:56:55 +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. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2871 --- 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 8340dfa97..ec37dbf45 100644 --- a/coregrind/vg_scheduler.c +++ b/coregrind/vg_scheduler.c @@ -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,