[Pkg-scicomp-devel] Bug#572935: arpack: Bug in ARPACK handling unsymmetric matrices

Thomas Weber thomas.weber.mail at gmail.com
Sun Mar 7 18:33:12 UTC 2010


Package: arpack
Severity: important
Tags: patch

Hi,
on the GNU Octave mailing list, the following issue was noted. It seems
that for some inputs, ARPACK causes a segfault in Octave. 

The issue was first noted in 2006[1]. A patch was sent to ARPACK
upstream, but there never was an answer.

The issue came up again last year[2]. 

So, I'm asking you include the attached patch in ARPACK. A test program
(segtest.m) for Octave is included. It segfaults Octave with current
ARPACK, when called as segtest(100).

[1] http://www-old.cae.wisc.edu/pipermail/octave-maintainers/2006-November/001230.html
[2] http://www-old.cae.wisc.edu/pipermail/bug-octave/2009-November/009818.html

BTW, I think there's something wrong with the orig tarball. It seems to
duplicate all source files and directories in a directory ARPACK.

Thanks
	Thomas

-- System Information:
Debian Release: 5.0.3
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
-------------- next part --------------
A non-text attachment was scrubbed...
Name: arpack.patch
Type: text/x-diff
Size: 7783 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-scicomp-devel/attachments/20100307/3c727291/attachment.patch>
-------------- next part --------------
function aerr = segtest (iter)
  %% This will seg-fault octave consistently, but not matlab.
  n=20;
  k=4; 
  A = sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),4*ones(1,n),-ones(1,n-2)]);
  opts.disp = 0; opts.p = 19;
  aerr = 0;
  for i=1:iter
    [v1,d1] = eigs(A, k, 'sr', opts);
    d1 = diag(d1);
    merr = 0;
    for i=1:k
      newerr = max(abs((A - d1(i)*speye(n))*v1(:,i)));
      if (newerr > merr)
        merr = newerr;
      end
    end
    fprintf('Max Err: %g\n', merr);
    if (merr > aerr)
      aerr = merr;
    end
  end
end




More information about the Pkg-scicomp-devel mailing list