From 5345c9b884e7c4e73eb2c8bb83b8d0df20f95afb Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 23 Aug 2014 23:35:10 -0400 Subject: fix false ownership of stdio FILEs due to tid reuse this is analogous commit fffc5cda10e0c5c910b40f7be0d4fa4e15bb3f48 which fixed the corresponding issue for mutexes. the robust list can't be used here because the locks do not share a common layout with mutexes. at some point it may make sense to simply incorporate a mutex object into the FILE structure and use it, but that would be a much more invasive change, and it doesn't mesh well with the current design that uses a simpler code path for internal locking and pulls in the recursive-mutex-like code when the flockfile API is used explicitly. --- src/thread/pthread_create.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/thread') diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 1601614a..e441bdac 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -12,6 +12,7 @@ weak_alias(dummy_0, __acquire_ptc); weak_alias(dummy_0, __release_ptc); weak_alias(dummy_0, __pthread_tsd_run_dtors); weak_alias(dummy_0, __do_private_robust_list); +weak_alias(dummy_0, __do_orphaned_stdio_locks); _Noreturn void pthread_exit(void *result) { @@ -66,6 +67,7 @@ _Noreturn void pthread_exit(void *result) } __do_private_robust_list(); + __do_orphaned_stdio_locks(); if (self->detached && self->map_base) { /* Detached threads must avoid the kernel clear_child_tid -- cgit v1.2.1