octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #57435] Test suite crashes on Windows on spars


From: Markus Mützel
Subject: [Octave-bug-tracker] [bug #57435] Test suite crashes on Windows on sparse.tst
Date: Fri, 20 Dec 2019 10:11:06 -0500 (EST)
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0

Follow-up Comment #4, bug #57435 (project octave):

In the meantime, I sprinkled a few "disp"s into sparse.tst to narrow down
which of the tests causes the error. It looks like, it is the very first one:

%!test # segfault test from address@hidden
%! disp ('Test 1')
%! n = 510;
%! sparse (kron ((1:n)', ones (n,1)), kron (ones (n,1), (1:n)'), ones (n));


At least, "Test 1" appears at the command prompt and "Test 2" of the following
test does not:

%% segfault tests from address@hidden
%% Note that the last four do not fail, but rather give a warning
%% of a singular matrix, which is consistent with the full matrix
%% behavior.  They are therefore disabled.
%!testif HAVE_UMFPACK
%! disp ('Test 2')
%! assert (inv (sparse ([1,1;1,1+i])), sparse ([1-1i,1i;1i,-1i]), 10*eps);
%#!error inv ( sparse ([1,1;1,1]  ) );
%#!error inv ( sparse ([0,0;0,1]  ) );
%#!error inv ( sparse ([0,0;0,1+i]) );
%#!error inv ( sparse ([0,0;0,0]  ) );


Might still be that some buffering is happening and it is actually a later
test that is triggering the segmentation fault.

This time n_row has a different value:

Thread 15 received signal SIGSEGV, Segmentation fault.
0x0000000062549778 in ?? ()
(gdb) bt
#0  0x0000000062549778 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) set $pc = *(void **)$rsp
(gdb) bt
#0  0x00000000433e6cc5 in symbolic_analysis ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\libumfpack.dll
#1  0x0000000000000002 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) set $pc = *(void **)$rsp
(gdb) bt
#0  0x00000000433e6cc5 in symbolic_analysis ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\libumfpack.dll
#1  0x00000000433eb6e9 in umfpack_zl_qsymbolic ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\libumfpack.dll
#2  0x000000005beb7d60 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) set $pc = *(void **)$rsp
(gdb) bt
#0  0x00000000433e6cc5 in symbolic_analysis ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\libumfpack.dll
#1  0x00000000433eb6e9 in umfpack_zl_qsymbolic ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\libumfpack.dll
#2  0x0000000069ab1edc in octave::math::umfpack_qsymbolic<std::complex<double>
> (Info=0xb2644490, Control=0x53410000, Symbolic=0x5beb7d98,
    Qinit=0x59e2baa0, Az=0x5beb7a90, Ai=0x5beb7d60, Ap=0x59e2baa0, n_col=2,
n_row=1508030048)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/liboctave/numeric/sparse-lu.cc:339
#3  octave::math::sparse_lu<SparseComplexMatrix>::sparse_lu (this=0x2d0,
a=..., Qinit=..., piv_thres=..., scale=240, FixedQ=false,
    droptol=6.9525070095186182e-310, milu=false, udiag=false)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/liboctave/numeric/sparse-lu.cc:704
#4  0x0000000069c80530 in vtable for MArray<double> ()
   from
D:\Repositories\Octave\test\octave-2019-12-19-17-17-w64_gtk2\octave-2019-12-19-17-17-w64\mingw64\bin\liboctave-7.dll
#5  0x0000000068fafd7f in SparseComplexMatrix::inverse (this=0x5beb8040,
this@entry=0x5beb8000, mattype=..., info=@0x5beb8040: 1774714144,
    rcond=@0x5beb7ed8: 0, calc_cond=calc_cond@entry=true)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/liboctave/array/MArray.h:70
#6  0x000000000e4ffd49 in Finv (args=..., nargout=1)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/corefcn/inv.cc:176
#7  0x000000000e0ec9e5 in octave_builtin::call (this=0x5832ba20, tw=...,
nargout=1, args=...)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/octave-value/ov-builtin.cc:62
#8  0x000000000e22e8c1 in octave::tree_index_expression::evaluate_n
(this=0x5dc82d90, tw=..., nargout=1)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/liboctave/array/dim-vector.h:158
#9  0x000000000e85fc5f in octave::tree_index_expression::evaluate
(this=<optimized out>, tw=..., nargout=<optimized out>)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-idx.h:106
#10 0x000000000e215ef0 in octave::tree_evaluator::convert_to_const_vector
(this=this@entry=0x5a0596b0, arg_list=arg_list@entry=0xb278d570,
    object=object@entry=0x0)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-eval.cc:1399
#11 0x000000000e22e06c in octave::tree_index_expression::evaluate_n
(this=0x5dc83fb0, tw=..., nargout=0)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-idx.cc:492
#12 0x000000000e85fc5f in octave::tree_index_expression::evaluate
(this=<optimized out>, tw=..., nargout=<optimized out>)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-idx.h:106
#13 0x000000000e21ea83 in octave::tree_evaluator::visit_statement
(this=0x5a0596b0, stmt=...)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-eval.cc:2720
#14 0x000000000e20feec in octave::tree_statement::accept (tw=...,
this=0xa7ea8a20)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-stmt.h:121
#15 octave::tree_evaluator::visit_statement_list (this=0x5a0596b0, lst=...)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-eval.cc:2779
#16 0x000000000e2201bd in octave::tree_statement_list::accept (tw=...,
this=0xb278dc60)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/parse-tree/pt-stmt.h:198
--Type <RET> for more, q to quit, c to continue without paging--


So maybe something that isn't correctly initialized?

If I change to "Finv" and inspect the size of "m", it still seems to be ok:

(gdb) up 6
#6  0x000000000e4ffd49 in Finv (args=..., nargout=1)
    at
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/corefcn/inv.cc:176
176    
/home/osboxes/Repositories/Octave/mxe-octave-1/tmp-default-octave/octave-6.0.0/libinterp/corefcn/inv.cc:
No such file or directory.
(gdb) p m
$2 = {<MSparse<std::complex<double> >> = {<Sparse<std::complex<double> >> =
{_vptr.Sparse = 0xea11740 <vtable for SparseComplexMatrix+16>,
      rep = 0xa7ea84a0, dimensions = {rep = 0xb278f7a0}}, <No data fields>},
<No data fields>}
(gdb) p m.dimensions
$3 = {rep = 0xb278f7a0}
(gdb) p m.dimensions->rep
$4 = (octave_idx_type *) 0xb278f7a0
(gdb) p *m.dimensions->rep
$5 = 2
(gdb) p *(m.dimensions->rep+1)
$7 = 2


Tbh, I don't understand the stack yet. I would have expected
"SparseComplexMatrix::inverse" to reference CSparse.cc as its source. But
maybe there is only so much one could expect from inspecting a stack that was
corrupt from the start.
Interestingly, "this" changes in that function (not sure why). This is also
where the dimensions seem to be lost:

(gdb) p *(this@entry->rep)
$22 = {d = 0xb2644490, r = 0xb278eda0, c = 0x59e2b660, nzmx = 4, nrows = 2,
ncols = 2, count = {m_count = {<std::__atomic_base<long long>> = {
        static _S_alignment = 8, _M_i = 2}, <No data fields>}}}
(gdb) p *(this->rep)
$23 = {d = 0x59ffcf00, r = 0x54d22a10, c = 0x5a3a8ed0, nzmx = 1, nrows = 0,
ncols = 0, count = {m_count = {<std::__atomic_base<long long>> = {
        static _S_alignment = 8, _M_i = 5}, <No data fields>}}}



    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?57435>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]