Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: pu
X-Debbugs-CC: sylves...@debian.org, mba...@debian.org
Please find attached a proposed update for LAPACK. It fixes an issue with wrong
numerical results in a multithreaded environment, so I consider this severe
enough to warrant a stable update.
Note that instead of adding the RECURSIVE keyword in the declaration of all
affected routines, another fix could have been to add the gfortran flag
-frecursive. The latter option would have given a smaller source diff, but
would have actually been a bigger change, since it would be equivalent to
adding the RECURSIVE keyword to *all* LAPACK functions.
Thanks,
--
.''`.Sébastien Villemot
: :' :Debian Developer
`. `' http://www.dynare.org/sebastien
`- GPG Key: 4096R/381A7594
Index: debian/changelog
===
--- debian/changelog (révision 45845)
+++ debian/changelog (copie de travail)
@@ -1,3 +1,11 @@
+lapack (3.4.1+dfsg-1+deb70u1) stable; urgency=low
+
+ * recursive.patch: fix some routines which produce incorrect results in
+multithreaded environment. Thanks to Michael Banck for the fix
+(Closes: #693269)
+
+ -- Sébastien Villemot sebast...@debian.org Tue, 07 May 2013 22:38:47 +0200
+
lapack (3.4.1+dfsg-1) unstable; urgency=low
* Repackage upstream tarball. Delete non-DFSG-free files:
Index: debian/patches/recursive.patch
===
--- debian/patches/recursive.patch (révision 0)
+++ debian/patches/recursive.patch (copie de travail)
@@ -0,0 +1,525 @@
+Description: Ensure thread safety of functions with large local variables
+ Some LAPACK functions allocate large local variables. The default behavior of
+ gfortran is to allocate such variables statically, instead of using the heap.
+ This makes these functions thread unsafe. The fix consists in declaring these
+ functions as RECURSIVE, to force heap allocation.
+Author: Michael Banck mba...@debian.org
+Bug: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2t=1930
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=693269
+Reviewed-by: Sébastien Villemot sebast...@debian.org
+Last-Update: 2013-05-07
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- ./src/cgbtrf.f.orig 2013-05-06 00:43:02.302380624 +0200
./src/cgbtrf.f 2013-05-06 00:44:23.910803548 +0200
+@@ -18,7 +18,8 @@
+ * Definition:
+ * ===
+ *
+-* SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO )
++* RECURSIVE SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV,
++*INFO )
+ *
+ * .. Scalar Arguments ..
+ * INTEGERINFO, KL, KU, LDAB, M, N
+@@ -142,7 +143,7 @@
+ * \endverbatim
+ *
+ * =
+- SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO )
++ RECURSIVE SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO )
+ *
+ * -- LAPACK computational routine (version 3.4.0) --
+ * -- LAPACK is a software package provided by Univ. of Tennessee,--
+--- ./src/cgehrd.f.orig 2013-05-06 00:43:02.330380770 +0200
./src/cgehrd.f 2013-05-06 00:44:48.006928485 +0200
+@@ -18,7 +18,8 @@
+ * Definition:
+ * ===
+ *
+-* SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
++* RECURSIVE SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK,
++*LWORK, INFO )
+ *
+ * .. Scalar Arguments ..
+ * INTEGERIHI, ILO, INFO, LDA, LWORK, N
+@@ -166,7 +167,8 @@
+ * \endverbatim
+ *
+ * =
+- SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
++ RECURSIVE SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK,
++ $ LWORK, INFO )
+ *
+ * -- LAPACK computational routine (version 3.4.0) --
+ * -- LAPACK is a software package provided by Univ. of Tennessee,--
+--- ./src/cunmlq.f.orig 2013-05-06 00:43:02.342380830 +0200
./src/cunmlq.f 2013-05-06 00:45:13.531060884 +0200
+@@ -18,8 +18,8 @@
+ * Definition:
+ * ===
+ *
+-* SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+-* WORK, LWORK, INFO )
++* RECURSIVE SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU,
++*C, LDC, WORK, LWORK, INFO )
+ *
+ * .. Scalar Arguments ..
+ * CHARACTER SIDE, TRANS
+@@ -167,8 +167,8 @@
+ * \ingroup complexOTHERcomputational
+ *
+ * =
+- SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+- $ WORK, LWORK, INFO )
++ RECURSIVE SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C,
++ $