#783034 octave-ltfat breaks Octave rcond. Yields segmentation fault

Package:
octave-ltfat
Source:
octave-ltfat
Description:
Large Time/Frequency Analysis Toolbox
Submitter:
Charlie Hagedorn
Date:
2015-05-25 15:48:18 UTC
Severity:
important
#783034#5
Date:
2015-04-20 21:29:57 UTC
From:
To:
Dear Maintainer,

I've had inconsistent Octave seg-faults on several jessie machines that I've traced to at least the octave-ltfat package. The seg-faults are triggered calls to the Octave function rcond. Installing octave-ltfat makes it break, uninstalling restores expected behavior (i.e. not crashing Octave).

I discovered this problem when chasing down a segmentation fault in octave-optim's leasqr function. rcond breaks only on matrices of size greater than 9 (31 is used below), so it will only turn up when fitting functions of ten or more parameters.

Example breakage:

cah49@charlie:~$ octave --quiet
octave:1> rcond(magic(31))
ans =  0.030391
octave:2> cah49@charlie:~$
cah49@charlie:~$ sudo apt-get install octave-ltfat
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  octave-ltfat
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/561 kB of archives.
After this operation, 7,074 kB of additional disk space will be used.
Selecting previously unselected package octave-ltfat.
(Reading database ... 100497 files and directories currently installed.)
Preparing to unpack .../octave-ltfat_2.0.1-1_amd64.deb ...
Unpacking octave-ltfat (2.0.1-1) ...
Setting up octave-ltfat (2.0.1-1) ...
cah49@charlie:~$ octave --quiet
octave:1> rcond(magic(31))
Segmentation fault
cah49@charlie:~$ sudo apt-get remove octave-ltfat
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
  octave-ltfat-common
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  octave-ltfat
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 7,074 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 100544 files and directories currently installed.)
Removing octave-ltfat (2.0.1-1) ...
cah49@charlie:~$ octave --quiet
octave:1> rcond(magic(31))
ans =  0.030391
octave:2>

I will update this bug report if I find any other packages that break
*** Reporter, please consider answering these questions, where appropriate ***

   * What was the outcome of this action?
   * What outcome did you expect instead?

*** End of the template - remove these template lines ***

#783034#10
Date:
2015-04-20 21:59:59 UTC
From:
To:
* Charlie Hagedorn <charlie.hagedorn@gmail.com> [2015-04-20 14:29]:

I am unable to reproduce this bug on two different Debian testing systems
I have access.  I get on both of them:

     $ dpkg -l octave-ltfat octave-ltfat-common octave | grep ^ii
     ii  octave              3.8.2-4      i386         GNU Octave language for numerical computations
     ii  octave-ltfat        2.0.1-1      i386         Large Time/Frequency Analysis Toolbox
     ii  octave-ltfat-common 2.0.1-1      all          Large Time/Frequency Analysis Toolbox (arch-indep files)
     $ echo "rcond(magic(31))" | octave -q
     ans =  0.030391

It is pretty surprising for me that the presence or not of the
octave-ltfat package will have an effect on the behavior of rcond, which
is in Octave core:

     $ echo "which rcond" | octave -q
     'rcond' is a built-in function from the file libinterp/corefcn/rcond.cc

Rafael

#783034#17
Date:
2015-04-20 23:14:06 UTC
From:
To:
I agree that there's no obvious way for a subcomponent package to affect a
core-compiled function, but I see this effect on all three machines I have
access to today, all running testing ( vanilla testing install, upgraded
crouton install, upgraded Compute Engine instance) . For the machines where
I initially discovered this crashing problem, uninstalling the ltfat
package appears to have resolved the problem with rcond completely.

Here's the octave-related package list from a machine that displays the
problem (minus octave-ltfat) :

$ dpkg -l 'octave*' | grep ^ii
ii  octave                       3.8.2-4      amd64        GNU Octave
language for numerical computations
ii  octave-audio                 1.1.4-5      amd64        functions to
work with audio files in Octave
ii  octave-bim                   1.1.5-1      all          PDE solver using
a finite element/volume approach in Octave
ii  octave-common                3.8.2-4      all
 architecture-independent files for octave
ii  octave-communications        1.2.0-2+b1   amd64        communications
package for Octave
ii  octave-communications-common 1.2.0-2      all          communications
package for Octave (arch-indep files)
ii  octave-control               2.6.6-1      amd64        control
functions for Octave from Octave-Forge
ii  octave-data-smoothing        1.3.0-3      all          functions to do
data smoothing on noisy data
ii  octave-dataframe             1.0.1-1      all          manipulate data
in Octave similar to R data.frame
ii  octave-econometrics          1:1.1.1-2+b1 amd64        econometrics
functions for Octave
ii  octave-financial             0.4.0-2      all          financial
manipulation and plotting functions
ii  octave-fpl                   1.3.4-2      all          plot data on
unstructured triangular and tetrahedral meshes in Octave
ii  octave-ga                    0.10.0-2     all          genetic
optimization code for Octave
ii  octave-general               1.3.4-2      amd64        provide extra
general functions for Octave
ii  octave-geometry              1.7.0-2      amd64        geometric
computing functions for Octave
ii  octave-gsl                   1.0.8-6      amd64        GSL binding for
Octave
ii  octave-image                 2.2.2-1      amd64        image
manipulation for Octave
ii  octave-io                    2.2.4-1      amd64        input/output
data functions for Octave
ii  octave-linear-algebra        2.2.0-3      amd64        additional
linear-algebra functions for Octave
ii  octave-ltfat-common          2.0.1-1      all          Large
Time/Frequency Analysis Toolbox (arch-indep files)
ii  octave-msh                   1.0.10-1     amd64        create and
manage meshes for FE or FV solvers in Octave
ii  octave-optim                 1.4.0-1      amd64        unconstrained
non-linear optimization toolkit for Octave
ii  octave-signal                1.3.0-1      amd64        signal
processing functions for Octave
ii  octave-splines               1.2.7-2      all          cubic spline
functions for Octave
ii  octave-struct                1.0.10-2     amd64        additional
structure manipulation functions for Octave
$

Thanks for looking into this so quickly!  By uninstalling the package, it's
no longer a blocker for my work, but after spending more than a day
narrowing down the problem, I'd like to save someone else the effort! :).

Charlie

#783034#22
Date:
2015-04-21 07:26:46 UTC
From:
To:
* Charlie Hagedorn <charlie.hagedorn@gmail.com> [2015-04-20 16:14]:

The fact that I cannot replicate the bug does not mean that the problem
does not exist.  It only means that the problem cannot be confidently
diagnosed.  I am afraid we will be able to act on this bug report only
after the root of the problem gets exposed.

Thanks,

Rafael

#783034#27
Date:
2015-05-25 15:39:57 UTC
From:
To:
I am unable to reproduce this problem either.

% echo 'which rcond' | octave -q
'rcond' is a built-in function from the file libinterp/corefcn/rcond.cc
% echo 'rcond(magic(31))' | octave -q
ans =  0.030391

I get the same output whether octave-ltfat package is installed or
not. Could the OP please show the output of
% echo 'which rcond' | octave -q

both before and after the octave-ltfat package is insalled? That would
at least confirm which rcond is being called.

FWIW, here are the packages I have installed.

ii  libatlas3-base [liblapack.so.3]  3.10.1-4
ii  libblas3 [libblas.so.3]          1.2.20110419-7
ii  libc6                            2.19-15
ii  libfftw3-double3                 3.3.4-1
ii  libfftw3-single3                 3.3.4-1
ii  libgcc1                          1:4.9.1-19
ii  libgfortran3                     4.9.1-19
ii  liblapack3 [liblapack.so.3]      3.5.0-2
ii  liboctave2                       3.8.2-4
ii  libquadmath0                     4.9.1-19
ii  libstdc++6                       4.9.1-19
ii  octave                           3.8.2-4
ii  octave-ltfat-common              2.0.1-1