--- Begin Message ---
Package: libc6
Version: 2.16-0experimental1
Severity: important
Dear Maintainer,
http://sourceware.org/bugzilla/show_bug.cgi?id=14417
libcanberra and gstreamer hangs on pulseaudio calls.
Upstream fixed this only in master at :
http://sourceware.org/git/?p=glibc.git;a=commit;h=c30e8edf7c56e55a81173da39f3e721ab17b9db6
Seems like debian handled it by reverting an upstream commit via:
debian/patches/i386/local-pthread_cond_wait.diff
but only for x86 arch (I am on x86_64 here).
Thus I hacked down this patch for debian from former upstream fix to
debian 2.16 experimental1 quilt patched sources. Ie the i386 fix is
partially missing as the latter debian i386 change removed one of the
files it patched.
"It works" but I have not done a review yet. Might serve as a starting
point. All in all I guess the debian revert
i386/local-pthread_cond_wait.diff should be added back and the upstream
fixe used instead. But sadly upstream did not backported this patch to
release/2.16/master so it is hard to tell if there are former diff in
master that might fixes others issues than this pulseaudio hang.
Best regards,
Alban
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.7.0-rc4test0-00020-g0e4a43e (SMP w/2 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libc6:amd64 depends on:
ii debconf [debconf-2.0] 1.5.46
ii libgcc1 1:4.7.2-12
libc6:amd64 recommends no packages.
Versions of packages libc6:amd64 suggests:
pn glibc-doc <none>
pn locales <none>
-- debconf information:
* glibc/upgrade: true
glibc/disable-screensaver:
glibc/restart-failed:
* glibc/restart-services: spamassassin ssh saslauthd samba openbsd-inetd mysql
exim4 cups cron atd apache2
* libraries/restart-without-asking: false
>From c30e8edf7c56e55a81173da39f3e721ab17b9db6 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddh...@redhat.com>
Date: Fri, 5 Oct 2012 18:52:35 +0530
Subject: [PATCH] Unlock mutex before going back to waiting for PI mutexes
[BZ #14417]
A futex call with FUTEX_WAIT_REQUEUE_PI returns with the mutex locked
on success. If such a successful thread is pipped to the cond_lock by
another spuriously woken waiter, it could be sent back to wait on the
futex with the mutex lock held, thus causing a deadlock. So it is
necessary that the thread relinquishes the mutex before going back to
sleep.
---
NEWS | 6 +-
nptl/ChangeLog | 19 ++
nptl/Makefile | 4 +-
.../sysv/linux/i386/i486/pthread_cond_timedwait.S | 38 +++-
.../unix/sysv/linux/i386/i486/pthread_cond_wait.S | 117 +++-------
.../sysv/linux/x86_64/pthread_cond_timedwait.S | 51 ++++-
.../unix/sysv/linux/x86_64/pthread_cond_wait.S | 121 ++++------
nptl/tst-cond24.c | 249 ++++++++++++++++++++
8 files changed, 430 insertions(+), 175 deletions(-)
create mode 100644 nptl/tst-cond24.c
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -210,7 +210,7 @@
tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \
tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \
tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \
- tst-cond20 tst-cond21 tst-cond22 tst-cond23 \
+ tst-cond20 tst-cond21 tst-cond22 tst-cond23 tst-cond24 \
tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \
tst-robust6 tst-robust7 tst-robust8 tst-robust9 \
tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 tst-robustpi5 \
@@ -288,6 +288,7 @@
LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst
+LDFLAGS-tst-cond24 = -lrt
include ../Makeconfig
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -214,8 +214,23 @@
sete 24(%esp)
je 41f
- /* Normal and PI futexes dont mix. Use normal futex functions only
- if the kernel does not support the PI futex functions. */
+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns
+ successfully, it has already locked the mutex for us and the
+ pi_flag (24(%esp)) is set to denote that fact. However, if another
+ thread changed the futex value before we entered the wait, the
+ syscall may return an EAGAIN and the mutex is not locked. We go
+ ahead with a success anyway since later we look at the pi_flag to
+ decide if we got the mutex or not. The sequence numbers then make
+ sure that only one of the threads actually wake up. We retry using
+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal
+ and PI futexes don't mix.
+
+ Note that we don't check for EAGAIN specifically; we assume that the
+ only other error the futex function could return is EAGAIN (barring
+ the ETIMEOUT of course, for the timeout case in futex) since
+ anything else would mean an error in our function. It is too
+ expensive to do that check for every call (which is quite common in
+ case of a large number of threads), so it has been skipped. */
cmpl $-ENOSYS, %eax
jne 41f
xorl %ecx, %ecx
@@ -275,9 +290,24 @@
jne 9f
15: cmpl $-ETIMEDOUT, %esi
- jne 8b
+ je 28f
- addl $1, wakeup_seq(%ebx)
+ /* We need to go back to futex_wait. If we're using requeue_pi, then
+ release the mutex we had acquired and go back. */
+ movl 24(%esp), %edx
+ test %edx, %edx
+ jz 8b
+
+ /* Adjust the mutex values first and then unlock it. The unlock
+ should always succeed or else the kernel did not lock the mutex
+ correctly. */
+ movl dep_mutex(%ebx), %eax
+ call __pthread_mutex_cond_lock_adjust
+ xorl %edx, %edx
+ call __pthread_mutex_unlock_usercnt
+ jmp 8b
+
+28: addl $1, wakeup_seq(%ebx)
adcl $0, wakeup_seq+4(%ebx)
addl $1, cond_futex(%ebx)
movl $ETIMEDOUT, %esi
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -103,7 +103,7 @@
mov %RSI_LP, dep_mutex(%rdi)
22:
- xorl %r15d, %r15d
+ xorb %r15b, %r15b
#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
# ifdef PIC
@@ -190,18 +190,39 @@
movl $SYS_futex, %eax
syscall
- movl $1, %r15d
+ cmpl $0, %eax
+ sete %r15b
+
#ifdef __ASSUME_REQUEUE_PI
jmp 62f
#else
- cmpq $-4095, %rax
- jnae 62f
+ je 62f
+
+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns
+ successfully, it has already locked the mutex for us and the
+ pi_flag (%r15b) is set to denote that fact. However, if another
+ thread changed the futex value before we entered the wait, the
+ syscall may return an EAGAIN and the mutex is not locked. We go
+ ahead with a success anyway since later we look at the pi_flag to
+ decide if we got the mutex or not. The sequence numbers then make
+ sure that only one of the threads actually wake up. We retry using
+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal
+ and PI futexes don't mix.
+
+ Note that we don't check for EAGAIN specifically; we assume that the
+ only other error the futex function could return is EAGAIN (barring
+ the ETIMEOUT of course, for the timeout case in futex) since
+ anything else would mean an error in our function. It is too
+ expensive to do that check for every call (which is quite common in
+ case of a large number of threads), so it has been skipped. */
+ cmpl $-ENOSYS, %eax
+ jne 62f
subq $cond_futex, %rdi
#endif
61: movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG), %esi
-60: xorl %r15d, %r15d
+60: xorb %r15b, %r15b
xorl %eax, %eax
/* The following only works like this because we only support
two clocks, represented using a single bit. */
@@ -248,7 +269,23 @@
ja 39f
45: cmpq $-ETIMEDOUT, %r14
- jne 38b
+ je 99f
+
+ /* We need to go back to futex_wait. If we're using requeue_pi, then
+ release the mutex we had acquired and go back. */
+ test %r15b, %r15b
+ jz 38b
+
+ /* Adjust the mutex values first and then unlock it. The unlock
+ should always succeed or else the kernel did not lock the
+ mutex correctly. */
+ movq %r8, %rdi
+ callq __pthread_mutex_cond_lock_adjust
+ xorl %esi, %esi
+ callq __pthread_mutex_unlock_usercnt
+ /* Reload cond_var. */
+ movq 8(%rsp), %rdi
+ jmp 38b
99: incq wakeup_seq(%rdi)
incl cond_futex(%rdi)
@@ -298,7 +335,7 @@
/* If requeue_pi is used the kernel performs the locking of the
mutex. */
41: movq 16(%rsp), %rdi
- testl %r15d, %r15d
+ testb %r15b, %r15b
jnz 64f
callq __pthread_mutex_cond_lock
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -136,19 +136,36 @@
cmpl $PI_BIT, %eax
jne 61f
-90:
movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
movl $SYS_futex, %eax
syscall
- movl $1, %r8d
- cmpq $-EAGAIN, %rax
- je 91f
+ cmpl $0, %eax
+ sete %r8b
+
#ifdef __ASSUME_REQUEUE_PI
jmp 62f
#else
- cmpq $-4095, %rax
- jnae 62f
+ je 62f
+
+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns
+ successfully, it has already locked the mutex for us and the
+ pi_flag (%r8b) is set to denote that fact. However, if another
+ thread changed the futex value before we entered the wait, the
+ syscall may return an EAGAIN and the mutex is not locked. We go
+ ahead with a success anyway since later we look at the pi_flag to
+ decide if we got the mutex or not. The sequence numbers then make
+ sure that only one of the threads actually wake up. We retry using
+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal
+ and PI futexes don't mix.
+
+ Note that we don't check for EAGAIN specifically; we assume that the
+ only other error the futex function could return is EAGAIN since
+ anything else would mean an error in our function. It is too
+ expensive to do that check for every call (which is quite common in
+ case of a large number of threads), so it has been skipped. */
+ cmpl $-ENOSYS, %eax
+ jne 62f
# ifndef __ASSUME_PRIVATE_FUTEX
movl $FUTEX_WAIT, %esi
@@ -161,7 +178,7 @@
#else
orl %fs:PRIVATE_FUTEX, %esi
#endif
-60: xorl %r8d, %r8d
+60: xorb %r8b, %r8b
movl $SYS_futex, %eax
syscall
@@ -191,10 +208,10 @@
jne 16f
cmpq 24(%rsp), %r9
- jbe 8b
+ jbe 19f
cmpq %rax, %r9
- jna 8b
+ jna 19f
incq woken_seq(%rdi)
@@ -236,7 +253,7 @@
/* If requeue_pi is used the kernel performs the locking of the
mutex. */
11: movq 16(%rsp), %rdi
- testl %r8d, %r8d
+ testb %r8b, %r8b
jnz 18f
callq __pthread_mutex_cond_lock
@@ -253,6 +270,23 @@
xorl %eax, %eax
jmp 14b
+ /* We need to go back to futex_wait. If we're using requeue_pi, then
+ release the mutex we had acquired and go back. */
+19: testb %r8b, %r8b
+ jz 8b
+
+ /* Adjust the mutex values first and then unlock it. The unlock
+ should always succeed or else the kernel did not lock the mutex
+ correctly. */
+ movq 16(%rsp), %rdi
+ callq __pthread_mutex_cond_lock_adjust
+ movq %rdi, %r8
+ xorl %esi, %esi
+ callq __pthread_mutex_unlock_usercnt
+ /* Reload cond_var. */
+ movq 8(%rsp), %rdi
+ jmp 8b
+
/* Initial locking failed. */
1:
#if cond_lock != 0
@@ -331,72 +365,6 @@
13: movq %r10, %rax
jmp 14b
-91:
-.LcleanupSTART2:
- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to
- call it again. */
- movq 8(%rsp), %rdi
-
- /* Get internal lock. */
- movl $1, %esi
- xorl %eax, %eax
- LOCK
-#if cond_lock == 0
- cmpxchgl %esi, (%rdi)
-#else
- cmpxchgl %esi, cond_lock(%rdi)
-#endif
- jz 92f
-
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- callq __lll_lock_wait
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
-92:
- /* Increment the cond_futex value again, so it can be used as a new
- expected value. */
- incl cond_futex(%rdi)
- movl cond_futex(%rdi), %edx
-
- /* Increment total_seq to ensure we do not lose wakeups. */
- incq total_seq(%rdi)
-
- /* Release internal lock. */
- LOCK
-#if cond_lock == 0
- decl (%rdi)
-#else
- decl cond_lock(%rdi)
-#endif
- jz 93f
-
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- /* The call preserves %rdx. */
- callq __lll_unlock_wake
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
-93:
- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
- xorq %r10, %r10
- mov dep_mutex(%rdi), %R8_LP
- leaq cond_futex(%rdi), %rdi
- jmp 90b
-.LcleanupEND2:
-
.size __pthread_cond_wait, .-__pthread_cond_wait
versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
GLIBC_2_3_2)
@@ -550,10 +518,6 @@
.uleb128 .LcleanupEND-.LcleanupSTART
.uleb128 __condvar_cleanup1-.LSTARTCODE
.uleb128 0
- .uleb128 .LcleanupSTART2-.LSTARTCODE
- .uleb128 .LcleanupEND2-.LcleanupSTART2
- .uleb128 __condvar_cleanup1-.LSTARTCODE
- .uleb128 0
.uleb128 .LcallUR-.LSTARTCODE
.uleb128 .LENDCODE-.LcallUR
.uleb128 0
--- /dev/null
+++ b/nptl/tst-cond24.c
@@ -0,0 +1,249 @@
+/* Verify that condition variables synchronized by PI mutexes don't hang.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <time.h>
+
+#define THREADS_NUM 5
+#define MAXITER 50000
+
+static pthread_mutex_t mutex;
+static pthread_mutexattr_t mutex_attr;
+static pthread_cond_t cond;
+static pthread_t threads[THREADS_NUM];
+static int pending = 0;
+
+typedef void * (*threadfunc) (void *);
+
+void *
+thread_fun_timed (void *arg)
+{
+ int *ret = arg;
+ int rv, i;
+
+ printf ("Started thread_fun_timed[%d]\n", *ret);
+
+ for (i = 0; i < MAXITER / THREADS_NUM; i++)
+ {
+ rv = pthread_mutex_lock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+
+ while (!pending)
+ {
+ struct timespec ts;
+ clock_gettime(CLOCK_REALTIME, &ts);
+ ts.tv_sec += 20;
+ rv = pthread_cond_timedwait (&cond, &mutex, &ts);
+
+ /* There should be no timeout either. */
+ if (rv)
+ {
+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+ }
+
+ pending--;
+
+ rv = pthread_mutex_unlock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+ }
+
+ *ret = 0;
+
+out:
+ return ret;
+}
+
+void *
+thread_fun (void *arg)
+{
+ int *ret = arg;
+ int rv, i;
+
+ printf ("Started thread_fun[%d]\n", *ret);
+
+ for (i = 0; i < MAXITER / THREADS_NUM; i++)
+ {
+ rv = pthread_mutex_lock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+
+ while (!pending)
+ {
+ rv = pthread_cond_wait (&cond, &mutex);
+
+ if (rv)
+ {
+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+ }
+
+ pending--;
+
+ rv = pthread_mutex_unlock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv);
+ *ret = 1;
+ goto out;
+ }
+ }
+
+ *ret = 0;
+
+out:
+ return ret;
+}
+
+static int
+do_test_wait (threadfunc f)
+{
+ int i;
+ int rv;
+ int counter = 0;
+ int retval[THREADS_NUM];
+
+ puts ("Starting test");
+
+ rv = pthread_mutexattr_init (&mutex_attr);
+ if (rv)
+ {
+ printf ("pthread_mutexattr_init: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ rv = pthread_mutexattr_setprotocol (&mutex_attr, PTHREAD_PRIO_INHERIT);
+ if (rv)
+ {
+ printf ("pthread_mutexattr_setprotocol: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ rv = pthread_mutex_init (&mutex, &mutex_attr);
+ if (rv)
+ {
+ printf ("pthread_mutex_init: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ rv = pthread_cond_init (&cond, NULL);
+ if (rv)
+ {
+ printf ("pthread_cond_init: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ for (i = 0; i < THREADS_NUM; i++)
+ {
+ retval[i] = i;
+ rv = pthread_create (&threads[i], NULL, f, &retval[i]);
+ if (rv)
+ {
+ printf ("pthread_create: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+ }
+
+ for (; counter < MAXITER; counter++)
+ {
+ rv = pthread_mutex_lock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ if (!(counter % 100))
+ printf ("counter: %d\n", counter);
+ pending += 1;
+
+ rv = pthread_cond_signal (&cond);
+ if (rv)
+ {
+ printf ("pthread_cond_signal: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+
+ rv = pthread_mutex_unlock (&mutex);
+ if (rv)
+ {
+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+ }
+
+ for (i = 0; i < THREADS_NUM; i++)
+ {
+ void *ret;
+ rv = pthread_join (threads[i], &ret);
+ if (rv)
+ {
+ printf ("pthread_join: %s(%d)\n", strerror (rv), rv);
+ return 1;
+ }
+ if (ret && *(int *)ret)
+ {
+ printf ("Thread %d returned with an error\n", i);
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static int
+do_test (void)
+{
+ puts ("Testing pthread_cond_wait");
+ int ret = do_test_wait (thread_fun);
+ if (ret)
+ return ret;
+
+ puts ("Testing pthread_cond_timedwait");
+ return do_test_wait (thread_fun_timed);
+}
+
+#define TIMEOUT 10
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,22 @@
+2012-10-05 Siddhesh Poyarekar <siddh...@redhat.com>
+
+ [BZ #14417]
+ * Makefile (tests): New test case tst-cond24.
+ (LDFLAGS-tst-cond24): Link tst-cond24 against librt.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Unlock mutex before going back to
+ wait in PI case.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+ (__pthread_cond_wait): Likewise. Revert handling of EAGAIN
+ return from futex_wait.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Unlock mutex before going back to
+ wait in PI case. Set requeue_pi flag only if wait returned 0.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+ (__pthread_cond_wait): Likewise. Revert handling of EAGAIN
+ return from futex_wait.
+ * tst-cond24.c: New test case.
+
2012-06-23 Thomas Schwinge <tho...@codesourcery.com>
* sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
--- End Message ---
--- Begin Message ---
Source: eglibc
Source-Version: 2.17-0experimental0
We believe that the bug you reported is fixed in the latest version of
eglibc, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 694...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Adam Conrad <adcon...@0c3.net> (supplier of updated eglibc package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.8
Date: Sun, 27 Jan 2013 23:33:32 -0700
Source: eglibc
Binary: libc-bin libc-dev-bin glibc-doc eglibc-source locales locales-all nscd
multiarch-support libc6 libc6-dev libc6-dbg libc6-prof libc6-pic libc6-udeb
libc6.1 libc6.1-dev libc6.1-dbg libc6.1-prof libc6.1-pic libc6.1-udeb libc0.3
libc0.3-dev libc0.3-dbg libc0.3-prof libc0.3-pic libc0.3-udeb libc0.1
libc0.1-dev libc0.1-dbg libc0.1-prof libc0.1-pic libc0.1-udeb libc6-i386
libc6-dev-i386 libc6-sparc64 libc6-dev-sparc64 libc6-s390 libc6-dev-s390
libc6-s390x libc6-dev-s390x libc6-amd64 libc6-dev-amd64 libc6-powerpc
libc6-dev-powerpc libc6-ppc64 libc6-dev-ppc64 libc6-mipsn32 libc6-dev-mipsn32
libc6-mips64 libc6-dev-mips64 libc6-armhf libc6-dev-armhf libc6-armel
libc6-dev-armel libc0.1-i386 libc0.1-dev-i386 libc6-x32 libc6-dev-x32
libc6-i686 libc6-xen libc0.1-i686 libc0.3-i686 libc0.3-xen libc6.1-alphaev67
libc6-loongson2f libnss-dns-udeb libnss-files-udeb
Architecture: all amd64 source
Version: 2.17-0experimental0
Distribution: experimental
Urgency: low
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Changed-By: Adam Conrad <adcon...@0c3.net>
Closes: 694962
Launchpad-Bugs-Fixed: 929565 1088677
Description:
eglibc-source - Embedded GNU C Library: sources
glibc-doc - Embedded GNU C Library: Documentation
libc0.1-dbg - Embedded GNU C Library: detached debugging symbols
libc0.1-dev - Embedded GNU C Library: Development Libraries and Header Files
libc0.1-dev-i386 - Embedded GNU C Library: 32bit development libraries for
AMD64
libc0.1 - Embedded GNU C Library: Shared libraries
libc0.1-i386 - Embedded GNU C Library: 32bit shared libraries for AMD64
libc0.1-i686 - Embedded GNU C Library: Shared libraries [i686 optimized]
libc0.1-pic - Embedded GNU C Library: PIC archive library
libc0.1-prof - Embedded GNU C Library: Profiling Libraries
libc0.1-udeb - Embedded GNU C Library: Shared libraries - udeb (udeb)
libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
libc0.3-dev - Embedded GNU C Library: Development Libraries and Header Files
libc0.3 - Embedded GNU C Library: Shared libraries
libc0.3-i686 - Embedded GNU C Library: Shared libraries [i686 optimized]
libc0.3-pic - Embedded GNU C Library: PIC archive library
libc0.3-prof - Embedded GNU C Library: Profiling Libraries
libc0.3-udeb - Embedded GNU C Library: Shared libraries - udeb (udeb)
libc0.3-xen - Embedded GNU C Library: Shared libraries [Xen version]
libc6.1-alphaev67 - Embedded GNU C Library: Shared libraries (EV67 optimized)
libc6.1-dbg - Embedded GNU C Library: detached debugging symbols
libc6.1-dev - Embedded GNU C Library: Development Libraries and Header Files
libc6.1 - Embedded GNU C Library: Shared libraries
libc6.1-pic - Embedded GNU C Library: PIC archive library
libc6.1-prof - Embedded GNU C Library: Profiling Libraries
libc6.1-udeb - Embedded GNU C Library: Shared libraries - udeb (udeb)
libc6-amd64 - Embedded GNU C Library: 64bit Shared libraries for AMD64
libc6-armel - Embedded GNU C Library: ARM softfp shared libraries for armhf
libc6-armhf - Embedded GNU C Library: ARM hard float shared libraries for armel
libc6-dbg - Embedded GNU C Library: detached debugging symbols
libc6-dev-amd64 - Embedded GNU C Library: 64bit Development Libraries for AMD64
libc6-dev-armel - Embedded GNU C Library: ARM softfp development libraries for
armh
libc6-dev-armhf - Embedded GNU C Library: ARM hard float development libraries
for
libc6-dev - Embedded GNU C Library: Development Libraries and Header Files
libc6-dev-i386 - Embedded GNU C Library: 32-bit development libraries for AMD64
libc6-dev-mips64 - Embedded GNU C Library: 64bit Development Libraries for
MIPS64
libc6-dev-mipsn32 - Embedded GNU C Library: n32 Development Libraries for
MIPS64
libc6-dev-powerpc - Embedded GNU C Library: 32bit powerpc development
libraries for p
libc6-dev-ppc64 - Embedded GNU C Library: 64bit Development Libraries for
PowerPC64
libc6-dev-s390 - Embedded GNU C Library: 32bit Development Libraries for IBM
zSeri
libc6-dev-s390x - Embedded GNU C Library: 64bit Development Libraries for IBM
zSeri
libc6-dev-sparc64 - Embedded GNU C Library: 64bit Development Libraries for
UltraSPAR
libc6-dev-x32 - Embedded GNU C Library: X32 ABI Development Libraries for AMD64
libc6 - Embedded GNU C Library: Shared libraries
libc6-i386 - Embedded GNU C Library: 32-bit shared libraries for AMD64
libc6-i686 - Embedded GNU C Library: Shared libraries [i686 optimized]
libc6-loongson2f - Embedded GNU C Library: Shared libraries (Loongson 2F
optimized)
libc6-mips64 - Embedded GNU C Library: 64bit Shared libraries for MIPS64
libc6-mipsn32 - Embedded GNU C Library: n32 Shared libraries for MIPS64
libc6-pic - Embedded GNU C Library: PIC archive library
libc6-powerpc - Embedded GNU C Library: 32bit powerpc shared libraries for
ppc64
libc6-ppc64 - Embedded GNU C Library: 64bit Shared libraries for PowerPC64
libc6-prof - Embedded GNU C Library: Profiling Libraries
libc6-s390 - Embedded GNU C Library: 32bit Shared libraries for IBM zSeries
libc6-s390x - Embedded GNU C Library: 64bit Shared libraries for IBM zSeries
libc6-sparc64 - Embedded GNU C Library: 64bit Shared libraries for UltraSPARC
libc6-udeb - Embedded GNU C Library: Shared libraries - udeb (udeb)
libc6-x32 - Embedded GNU C Library: X32 ABI Shared libraries for AMD64
libc6-xen - Embedded GNU C Library: Shared libraries [Xen version]
libc-bin - Embedded GNU C Library: Binaries
libc-dev-bin - Embedded GNU C Library: Development binaries
libnss-dns-udeb - Embedded GNU C Library: NSS helper for DNS - udeb (udeb)
libnss-files-udeb - Embedded GNU C Library: NSS helper for files - udeb (udeb)
locales-all - Embedded GNU C Library: Precompiled locale data
locales - Embedded GNU C Library: National Language (locale) data [support]
multiarch-support - Transitional package to ensure multiarch compatibility
nscd - Embedded GNU C Library: Name Service Cache Daemon
Changes:
eglibc (2.17-0experimental0) experimental; urgency=low
.
[ Adam Conrad ]
* New upstream release: version 2.17, orig tarball built at SVN r22169:
- Restricts ld.so self-loading checks to normal mode (LP: #1088677)
- debian/rules.d/tarball.mk: ports is no longer external to libc.
- debian/*: Update all 2.16 occurences to 2.17 for upgrades/deps.
- patches/localedata/supported.diff: Rebased against new upstream.
- patches/localedata/locale-ia.diff: Dropped, merged upstream.
- patches/localedata/submitted-es_MX-decimal_point.diff: Rebased.
- patches/amd64/local-pthread_cond_wait.diff: Dropped, fixed upstream.
- patches/i386/local-pthread_cond_wait.diff: Dropped (closes: #694962)
- patches/arm64/cvs-ldconfig-cache-abi.diff: Dropped, merged upstream.
- patches/arm64/submitted-aarch64-support.diff: Merged upstream.
- patches/arm/cvs-ldconfig-cache-abi.diff: Dropped, merged upstream.
- patches/arm/local-atomic.diff: Dropped, fixed differently upstream.
- patches/arm/unsubmitted-armhf-linker.diff: Dropped, not needed.
- patches/arm/unsubmitted-ldconfig-cache-abi.diff: Rewritten slightly.
- patches/hppa/submitted-nptl-carlos.diff: Rebased against upstream.
- patches/hppa/local-stack-grows-up.diff: Rebased against upstream.
- patches/hurd-i386/local-enable-ldconfig.diff: dl-cache.c dropped.
- patches/hurd-i386/tg-tls.diff: Rebase and drop powerpc support.
- patches/hurd-i386/tg-regenerate_errno.h.diff: Merged upstream.
- patches/hurd-i386/tg-extern_inline.diff: Drop powerpc support.
- patches/hurd-i386/tg-elfosabi_gnu.diff: Drop powerpc support.
- patches/hurd-i386/tg-grantpt.diff: Rebased against new upstream.
- patches/hurd-i386/unsubmitted-pthread_posix-option.diff: Rebased.
- patches/hurd-i386/submitted-getgroups.diff: Dropped, merged upstream.
- patches/hurd-i386/submitted-getlogin_r.diff: Dropped, fixed upstream.
- patches/hurd-i386/submitted-ptsname.diff: Dropped, merged upstream.
- patches/hurd-i386/submitted-sendto.diff: Dropped, fixed upstream.
- patches/hurd-i386/cvs-add-missing-includes.diff: Merged upstream.
- patches/hurd-i386/cvs-mach-check-local-headers.sh.diff: Merged.
- patches/hurd-i386/cvs-lremovexattr.diff: Dropped, merged upstream.
- patches/hurd-i386/cvs-renameat.diff: Dropped, merged upstream.
- patches/hurd-i386/cvs-mknodat.diff: Dropped, merged upstream.
- patches/hurd-i386/cvs-llistxattr.diff: Dropped, merged upstream.
- patches/i386/submitted-i686-timing.diff: Rebase, and fix a bug that
was excluding dl-caller.c from shared-only-routines for rtld builds.
- patches/m68k/cvs-syscall-arguments.diff: Dropped, merged upstream.
- patches/powerpc/local-math-logb.diff: Rebased against new upstream.
- patches/all/unsubmitted-autoconfupdate.diff: Dropped, not needed.
- patches/any/local-bindresvport_blacklist.diff: Rebase with upstream.
- patches/any/local-ldso-disable-hwcap.diff: Rebased against upstream.
- patches/any/local-libgcc-compat-ports.diff: Rebased against upstream.
- patches/any/local-nss-upgrade.diff: Rebased against new upstream.
- patches/any/local-o_cloexec.diff: Rebased against new upstream.
- patches/any/local-rtld.diff: Rebased against new upstream.
- patches/any/submitted-popen.diff: Dropped, finally merged upstream.
- patches/any/submitted-accept4-hidden.diff: Dropped, merged upstream.
- patches/any/submitted-bits-fcntl_h-at.diff: Rebased against upstream.
- patches/any/local-gai-rfc1918-scope-global.patch: Merged upstream.
- patches/any/submitted-resolv-assert.diff: Dropped, merged upstream.
- patches/any/local-revert-fclose-posix2008.diff: Reverted upstream.
- patches/any/local-sunrpc-dos.diff: Dropped, different fix upstream.
- patches/any/cvs-cxxheaders-detection[123].diff: Merged upstream.
* debian/patches/powerpc/submitted-UAPI_ASM_POWERPC_ELF.diff: Remove,
as this has been fixed in the 3.7 release and 3.8 kernel headers.
* debian/sysdeps/{amd64,i386}.mk: Fix rtlddir for x32 alternate builds.
* debian/sysdeps/{armel,armhf}.mk: Merge multilib configs from Ubuntu.
* debian/debhelper.in/libc.preinst: Fix preinst kernel check to match
the reality that we need >= 2.6.32, as found in squeeze/lucid/RHEL6.
* debian/rules: Fix EGLIBC_VERSION epoch parsing breakage (LP: #929565)
* debian/patches/any/cvs-tst-array-as-needed.diff: Fix tst-array2 and
tst-array5 to build with --no-as-needed to prevent test regressions.
* debian/patches/any/unsubmitted-ldso-machine-mismatch.diff: Skip past
libraries that are built for other machines, rather than erroring.
* debian/patches/i386/unsubmitted-quiet-ldconfig.diff: Fix ldconfig on
x86 to stop complaining so loudly about wrong-arch libraries on path.
* debian/{rules.d/build.mk,sysdeps/hurd*}: When the threads variable is
not set to "yes", add --disable-nscd to the main configure options.
* debian/patches/any/cvs-use-glibc-wchar.diff: Switch from the eglibc
implementation of wchar.h to the cleaner glibc-2.18 implementation.
* debian/patches/arm/local-eabi-wchar.diff: Dropped, no longer needed.
* debian/patches/any/local-tst-dir-overlayfs.diff: Apply dirty hack to
skip tst-dir on overlayfs, as it currently fails (see: LP #1107492)
* debian/patches/svn-updates.diff: Bring svn-updates to revision 22169.
.
[ Matthias Klose ]
* debian/{rules,rules.d/control.mk,control.in/libc}: Allow turning off
libc-prof arbitrarily, and disable it for arm64, which lacks support.
* debian/rules.d/build.mk: Fix armhf multilib with WITH_BUILD_SYSROOT.
.
[ Steve McIntyre ]
* debian/patches/arm/unsubmitted-ldso-multilib.diff: Stop ld.so from
exiting prematurely when it encounters wrong-float ABI libraries.
.
[ Pino Toscano ]
* Rebase/remove hurd-i386 patches against the new upstream version:
- patches/hurd-i386/tg-ptrmangle.diff: Remove, obsolete.
- patches/hurd-i386/tg-check_native.diff: Remove, obsolete.
- patches/hurd-i386/submitted-regex_internal.diff: Fixed upstream.
- patches/hurd-i386/local-disable-sendmmsg.diff: Fixed upstream.
- patches/hurd-i386/unsubmitted-pthread.diff: Drop, obsolete.
- patches/hurd-i386/unsubmitted-mremap.diff: Rebased for new upstream.
* debian/patches/hurd-i386/local-disable-tst-xmmymm.diff: Disable test.
* Update expected-results-i486-gnu-libc, expected-results-i686-gnu-i386,
expected-results-i686-gnu-i686, expected-results-i686-gnu-xen.
Checksums-Sha1:
5493194449d33f571b931fe22ca60302b40d97a0 5290 eglibc_2.17-0experimental0.dsc
1ad4f2f403d987c96020feac1ccbe85f1da12f80 11655100 eglibc_2.17.orig.tar.xz
7fe005215bd9a89f29f7d64e75d25a02bd3709a2 759864
eglibc_2.17-0experimental0.debian.tar.xz
76d1291954bcda117bc91971eef4575a2e89242d 2120908
glibc-doc_2.17-0experimental0_all.deb
6a38b4ba3e4410b4b4559ca38c0168dddf4ce2e4 13850908
eglibc-source_2.17-0experimental0_all.deb
0c6b4bdbe21c0c78a6c2e1d23e93ac9e07ddda58 3831222
locales_2.17-0experimental0_all.deb
1b458068b4d247fed625262d0c92fc7cde41cc34 4604064
libc6_2.17-0experimental0_amd64.deb
eb49385bf44d2af63c7f99d4925ac6eb8c98e614 3110508
libc6-dev_2.17-0experimental0_amd64.deb
29923a6ab328ed7886f1562b09d6d463939145b7 1435792
libc6-pic_2.17-0experimental0_amd64.deb
50420da804420afaf89a1b6f64335fc734269a34 1290040
libc-bin_2.17-0experimental0_amd64.deb
784db3c0d0b97aae04ea285117e5acf7e5876716 229606
libc-dev-bin_2.17-0experimental0_amd64.deb
1f67a0d41b3b6a1f89ff9713659f3b12a220f839 156586
multiarch-support_2.17-0experimental0_amd64.deb
1745b4c7827a212ce657f55a9501ead55d0035dc 1552050
libc6-prof_2.17-0experimental0_amd64.deb
44e43aaeb8017b8a4180ccdf3bda51898941761d 3169806
locales-all_2.17-0experimental0_amd64.deb
54093706cc9ce4c01ec4b91ce40847b1eee67c3d 4112188
libc6-i386_2.17-0experimental0_amd64.deb
c3be0c084ff955cefff11ab5e1fb6acd60dcdbbd 1796226
libc6-dev-i386_2.17-0experimental0_amd64.deb
9089accd4585ab271f10e428229a271302911f86 4520278
libc6-x32_2.17-0experimental0_amd64.deb
2a4ad32476723cfe3a1f69ce11d3694639ea5855 2515450
libc6-dev-x32_2.17-0experimental0_amd64.deb
adaea6f9a1d6c08350ea94f714aa1bb9f886272f 230766
nscd_2.17-0experimental0_amd64.deb
14727e2beef0fa2bc933883cc841d41b0c102e54 5920200
libc6-dbg_2.17-0experimental0_amd64.deb
ba085dd356d218f76e4529dcd35ee90f5fb6cfbb 1046722
libc6-udeb_2.17-0experimental0_amd64.udeb
47df4e468c9cec92bae8333c6bb048fda3e09d95 10130
libnss-dns-udeb_2.17-0experimental0_amd64.udeb
987b13fb88c0fb746964bdb40026fe7130c4700d 16632
libnss-files-udeb_2.17-0experimental0_amd64.udeb
Checksums-Sha256:
dfe80862081dc4ed9329cee62e8f37be914a893371bc3dcf72db411fc779cd6e 5290
eglibc_2.17-0experimental0.dsc
8901e71e395993034a786e47c9fcdac6c01f10fcf9dd4357c55093f3b778a63a 11655100
eglibc_2.17.orig.tar.xz
a2fee98d5318038051774733a7ca40b0a1e0bc292d44e8cc719e8a2f1eb9a0ef 759864
eglibc_2.17-0experimental0.debian.tar.xz
8cbdcc6f7335e30838e26618228b212a4320ac01f0cf9ab61445f076c5ddfad9 2120908
glibc-doc_2.17-0experimental0_all.deb
6012c4db4807ea17a2f317d51466eeadde921c3d16bd92a86dcefc632a9c02df 13850908
eglibc-source_2.17-0experimental0_all.deb
60c87979eb87590db11f03ebbead12a0045147b54819f86e0ac95a03f4dac5c9 3831222
locales_2.17-0experimental0_all.deb
88d1b63b11eabf829fffae351c6789998ac52d2e4392690ee5d3022ae9a414be 4604064
libc6_2.17-0experimental0_amd64.deb
4c7ba61dd1e2f1584217c7cb605e73af4b2ee458a388d7c016acd5774c91d1bd 3110508
libc6-dev_2.17-0experimental0_amd64.deb
8147de449ec0f2951164233e67ef5bfd01a8ac8747d6a68934edb01ff9f93794 1435792
libc6-pic_2.17-0experimental0_amd64.deb
087d4c430fd1fb5ffe1350f248ef5e73121720788e839fe7312cf8fe2ad044db 1290040
libc-bin_2.17-0experimental0_amd64.deb
5f2c196b42ccc636617226c3c7d847ad745657ca48a63fe1a0e970df381f43b4 229606
libc-dev-bin_2.17-0experimental0_amd64.deb
1705927bdc62ae717a74c87a85edebe7340d5a6c3f1245bffa9d7713e26059d8 156586
multiarch-support_2.17-0experimental0_amd64.deb
ea2e9983be2ca99ca40c3baa620f0d63ed58e5e283f2b59590963cd32e51aa7a 1552050
libc6-prof_2.17-0experimental0_amd64.deb
45ef56897a1667fca4a4823e827994e5e2ef976ae206a603e7eee07dcd416a48 3169806
locales-all_2.17-0experimental0_amd64.deb
9abad57e6ebc9c6d4c7f01444be2b739f728d9ae9ffc8f9aef8adffaa26689d6 4112188
libc6-i386_2.17-0experimental0_amd64.deb
012f26bba63018a72b63ced65f4a626de30034976311773e456e343a8c116e5e 1796226
libc6-dev-i386_2.17-0experimental0_amd64.deb
e90cb401feb576aac0a3147c769ec3ac4bcdac8c67fbf3cbca2b9f8b808e002a 4520278
libc6-x32_2.17-0experimental0_amd64.deb
e6276915a9a8fa6a81f2bbb2791bb8d76d1067c40d45029c87578775224fa406 2515450
libc6-dev-x32_2.17-0experimental0_amd64.deb
959776c0cc045e513b0912ab295e96afaca726ce2c0fa93ecc36fd4cbcd427cd 230766
nscd_2.17-0experimental0_amd64.deb
0305d4f08f2a6bba5ea48fd469287f0c558ec11b86b608ff3d3e0b959441fa84 5920200
libc6-dbg_2.17-0experimental0_amd64.deb
9111342899f3551526df4d11366d7b9323fa71e354605ffb0a2c18be386f2a78 1046722
libc6-udeb_2.17-0experimental0_amd64.udeb
9df1653a844eee94714061ca931368cd03d477fd89059096eb5ae75668f058f6 10130
libnss-dns-udeb_2.17-0experimental0_amd64.udeb
b90a52187ee7504832faff25b66fe180df7681569d906324593f7ee608239a9b 16632
libnss-files-udeb_2.17-0experimental0_amd64.udeb
Files:
b526f0b54e9b812d1ba9546bf7a5f157 5290 libs required
eglibc_2.17-0experimental0.dsc
9121f7d3ea2907ce2355cb8e184199ea 11655100 libs required eglibc_2.17.orig.tar.xz
1e2d736a37f1400686705de474fadbb9 759864 libs required
eglibc_2.17-0experimental0.debian.tar.xz
7795e5aece15ae8e404aa7013888592a 2120908 doc optional
glibc-doc_2.17-0experimental0_all.deb
80b529136482d01262f81346d8ca1652 13850908 devel optional
eglibc-source_2.17-0experimental0_all.deb
71d42637550ff0ab1d0212fca804f22b 3831222 localization standard
locales_2.17-0experimental0_all.deb
d5bc2cc6a01984a6a89d46c3a701b9fd 4604064 libs required
libc6_2.17-0experimental0_amd64.deb
ee135d5eb518e6304ff44850a9aecc54 3110508 libdevel optional
libc6-dev_2.17-0experimental0_amd64.deb
f354234b25aad5d0327c30895c5ad65d 1435792 libdevel optional
libc6-pic_2.17-0experimental0_amd64.deb
8f3d5305dd8334b6edc16bd6d013133d 1290040 libs required
libc-bin_2.17-0experimental0_amd64.deb
3c0a9141f3a8d957911fe9b9d91fb8c3 229606 libdevel optional
libc-dev-bin_2.17-0experimental0_amd64.deb
576420e893466ca3f9530117216863fb 156586 libs required
multiarch-support_2.17-0experimental0_amd64.deb
f19677e7888c21a7698f9f9b56a099de 1552050 libdevel extra
libc6-prof_2.17-0experimental0_amd64.deb
d53ad4ba8d3dd1416ab78d5892545cb4 3169806 localization extra
locales-all_2.17-0experimental0_amd64.deb
281cad1da7e1288f439fee4fc30e3af6 4112188 libs optional
libc6-i386_2.17-0experimental0_amd64.deb
315d9869bde7acbe4a1ca98ece77db06 1796226 libdevel optional
libc6-dev-i386_2.17-0experimental0_amd64.deb
58ca4ed6c26b47c3c883469b28bd134f 4520278 libs optional
libc6-x32_2.17-0experimental0_amd64.deb
0525286aa27a3b374bed017bff234374 2515450 libdevel optional
libc6-dev-x32_2.17-0experimental0_amd64.deb
9b99895c97e72121dc228a690209096c 230766 admin optional
nscd_2.17-0experimental0_amd64.deb
91c9f4fd152272b366e08ec412909be4 5920200 debug extra
libc6-dbg_2.17-0experimental0_amd64.deb
258809b9f6b96aab65010c4a3caf932f 1046722 debian-installer extra
libc6-udeb_2.17-0experimental0_amd64.udeb
10c514ac5e3c205a48767719b56bed03 10130 debian-installer extra
libnss-dns-udeb_2.17-0experimental0_amd64.udeb
af16d153e2b68d29dc3ee58102266d99 16632 debian-installer extra
libnss-files-udeb_2.17-0experimental0_amd64.udeb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iEYEARECAAYFAlEGM/0ACgkQvjztR8bOoMlypgCfa5Pa3IhVmnwQsUR1qH8udtZm
dJ4AoI5jRfz5rA2MpO6YIOOJS+1WPZQL
=e/s/
-----END PGP SIGNATURE-----
--- End Message ---