From: Tom Hughes Date: Thu, 28 Oct 2004 15:56:55 +0000 (+0000) Subject: When a thread is cancelled only abort pending system calls if X-Git-Tag: svn/VALGRIND_3_0_0~1431 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d8f3032bc210deb79fc150e52fdcd0f3d70f0f46;p=thirdparty%2Fvalgrind.git 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 --- diff --git a/coregrind/vg_scheduler.c b/coregrind/vg_scheduler.c index 8340dfa970..ec37dbf458 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,