[PATCH] nptl: Fix issue unwinding through sem_wait futex

Stafford Horne shorne@gmail.com
Wed Nov 11 21:46:45 GMT 2020


Calls to sem_wait may use the __futex_abstimed_wait_cancelable64
function that is built in futex-internal.  If we get a C++ exception,
i.e. thread cancel when we are waiting on a semaphore thread unwinding
fails.  Example test: nptl/tst-cancel24

Adding -fexceptions flag when building futex-internal fixes this.
---
 nptl/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/nptl/Makefile b/nptl/Makefile
index b30d263ca4..a1ffb6258a 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -220,6 +220,7 @@ CFLAGS-pthread_cond_wait.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sem_wait.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sem_timedwait.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sem_clockwait.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-futex-internal.c += -fexceptions -fasynchronous-unwind-tables
 
 # These are the function wrappers we have to duplicate here.
 CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables
-- 
2.26.2



More information about the Libc-alpha mailing list