0012625
diff -rup a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
0012625
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S	2012-02-10 12:49:42.609737373 -0700
0012625
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S	2012-02-10 12:52:00.962150379 -0700
0012625
@@ -438,6 +438,10 @@ __pthread_cond_wait:
0012625
 	addl	$1, cond_futex(%ebx)
0012625
 	movl	cond_futex(%ebx), %ebp
0012625
 
0012625
+	/* Increment total_seq to ensure we do not lose wakeups.  */
0012625
+	addl	$1, total_seq(%ebx)
0012625
+	adcl	$0, total_seq+4(%ebx)
0012625
+
0012625
 	/* Unlock.  */
0012625
 	LOCK
0012625
 #if cond_lock == 0
0012625
diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
0012625
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S	2012-02-10 12:49:42.612737361 -0700
0012625
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S	2012-02-10 12:52:36.179000963 -0700
0012625
@@ -366,6 +366,9 @@ __pthread_cond_wait:
0012625
 	incl	cond_futex(%rdi)
0012625
 	movl	cond_futex(%rdi), %edx
0012625
 
0012625
+	/* Increment total_seq to ensure we do not lose wakeups.  */
0012625
+	incq	total_seq(%rdi)
0012625
+
0012625
 	/* Release internal lock.  */
0012625
 	LOCK
0012625
 #if cond_lock == 0