tetromino 15/03/08 07:00:24
Added: wine-1.7.38-gstreamer-v5-staging-post.patch
wine-1.7.38-gstreamer-v5-staging-pre.patch
Removed: wine-1.7.28-gstreamer-v4.patch
Log:
Belated version bump (bug #536380), see
https://www.winehq.org/announce/1.7.38 for the announcement. Sync changes from
NP-Hardass's overlay and add him as proxy maintainer. Move big gstreamer
patches out of filesdir and into compressed downloads.
(Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key
0x18E5B6F2D8D5EC8D)
Revision Changes Path
1.1
app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch?rev=1.1&content-type=text/plain
Index: wine-1.7.38-gstreamer-v5-staging-post.patch
===================================================================
>From 0f579172142d290dc48b9d466f9cd699987aacf3 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <[email protected]>
Date: Wed, 25 Feb 2015 22:45:42 +0100
Subject: [PATCH] ntdll: Fix race-condition when threads are killed during
shutdown.
When exit_thread is executed, nb_threads is decremented before the thread is
fully shutdown. When another thread runs ExitProcess() this will cause a SIGQUIT
signal to all threads, effectively decrementing nb_threads twice. The process
will terminate with a wrong exitcode then because the refcount reaches zero too
early.
Currently Wine has no locking protection of LdrShutdownProcess(), so it can
only be executed safely when all other threads have terminated before. Most
likely there are more Wine bugs in this area, but the attached patch should
fix the most critical one (messed up refcounting of threads) for now.
[Alexandre Rostovtsev <[email protected]> : rebase to be applied after
Maarten Lankhorst's "override pthreads to fix gstreamer v5" patch.]
---
dlls/ntdll/thread.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 936cabe..98e679e 100755
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -459,6 +459,7 @@ static void exit_thread_common( int status )
{
#ifndef __linux__
static void *prev_teb;
+ sigset_t sigset;
TEB *teb;
#endif
@@ -495,6 +496,11 @@ static void exit_thread_common( int status )
signal_free_thread( teb );
}
}
+
+ sigemptyset( &sigset );
+ sigaddset( &sigset, SIGQUIT );
+ pthread_sigmask( SIG_BLOCK, &sigset, NULL );
+ if (interlocked_xchg_add( &nb_threads, -1 ) <= 1) _exit( status );
#else
reap_thread(NtCurrentTeb());
#endif
--
2.3.1
1.1
app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch?rev=1.1&content-type=text/plain
Index: wine-1.7.38-gstreamer-v5-staging-pre.patch
===================================================================
>From 0d92921d264d5d0d1041c66353f022f1bc88577f Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <[email protected]>
Date: Sun, 8 Mar 2015 00:10:31 -0500
Subject: [PATCH] Revert "ntdll: Fix race-condition when threads are killed
during shutdown."
This reverts Sebastian Lackner's Wine-Staging patch to allow Maarten
Lankhorst's "override pthreads to fix gstreamer v5" to apply
---
dlls/ntdll/thread.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 74e64c9..3696c8e 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -370,7 +370,6 @@ void terminate_thread( int status )
void exit_thread( int status )
{
static void *prev_teb;
- sigset_t sigset;
TEB *teb;
if (status) /* send the exit code to the server (0 is already the
default) */
@@ -384,7 +383,7 @@ void exit_thread( int status )
SERVER_END_REQ;
}
- if (interlocked_xchg_add( &nb_threads, 0 ) <= 1)
+ if (interlocked_xchg_add( &nb_threads, -1 ) <= 1)
{
LdrShutdownProcess();
exit( status );
@@ -406,11 +405,6 @@ void exit_thread( int status )
}
}
- sigemptyset( &sigset );
- sigaddset( &sigset, SIGQUIT );
- pthread_sigmask( SIG_BLOCK, &sigset, NULL );
- if (interlocked_xchg_add( &nb_threads, -1 ) <= 1) _exit( status );
-
close( ntdll_get_thread_data()->wait_fd[0] );
close( ntdll_get_thread_data()->wait_fd[1] );
close( ntdll_get_thread_data()->reply_fd );
--
2.3.1