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

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

[Octave-bug-tracker] [bug #59172] Test suite segfaults with scripts/spar


From: Chris Gorman
Subject: [Octave-bug-tracker] [bug #59172] Test suite segfaults with scripts/sparse/eigs.m
Date: Wed, 23 Sep 2020 13:30:50 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

URL:
  <https://savannah.gnu.org/bugs/?59172>

                 Summary: Test suite segfaults with scripts/sparse/eigs.m
                 Project: GNU Octave
            Submitted by: chrisgorman
            Submitted on: Wed 23 Sep 2020 05:30:48 PM UTC
                Category: Test Suite
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Segfault, Bus Error, etc.
                  Status: None
             Assigned to: None
         Originator Name: Chris Gorman
        Originator Email: 
             Open/Closed: Open
                 Release: dev
         Discussion Lock: Any
        Operating System: GNU/Linux

    _______________________________________________________

Details:

Hello,

I have just built octave, HG ID ec9efcc717cc, and am getting segfault when I
try to run scripts/sparse/eigs.m  I have looked at it under gdb and it is
related to QThread.  Here is what gdb has to say.

chris [ ~/temp ]$ gdb --args octave --eval "test
/sources/octave/octave-blas64-builder/octave/scripts/sparse/eigs.m"
GNU gdb (GDB) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from octave...
(gdb) run
Starting program: /opt/octave-devel/bin/octave --eval test\
/sources/octave/octave-blas64-builder/octave/scripts/sparse/eigs.m
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
process 30046 is executing new program:
/opt/octave-devel/libexec/octave/7.0.0/exec/x86_64-pc-linux-gnu/octave-gui
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0x7fffe0ed8640 (LWP 30053)]
[New Thread 0x7fffdb5cb640 (LWP 30054)]
[New Thread 0x7fffdadb6640 (LWP 30055)]
[New Thread 0x7fffda4b6640 (LWP 30056)]
[New Thread 0x7fffd9cb5640 (LWP 30057)]
[New Thread 0x7fffd8df7640 (LWP 30058)]

Thread 5 "QThread" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffda4b6640 (LWP 30056)]
0x00007ffff516914d in dseupd_ () from /usr/lib/libarpack.so.2
(gdb) bt
#0  0x00007ffff516914d in dseupd_ () at /usr/lib/libarpack.so.2
#1  0x00007ffff5a16e82 in EigsRealSymmetricMatrix<SparseMatrix>(SparseMatrix
const&, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, long, long, long&, Matrix&, ColumnVector&,
SparseMatrix const&, ColumnVector&, ColumnVector&, std::ostream&, double,
bool, bool, int, int) (m=
    ..., typ="LM", k_arg=k_arg@entry=4, p_arg=p_arg@entry=-1,
info=@0x7fffda4aa100: 4294967292, eig_vec=..., eig_val=..., _b=..., permB=...,
resid=..., os=
    ..., tol=<optimized out>, 
    tol@entry=2.2204460492503131e-16, rvec=false, cholB=false, disp=0,
maxit=300) at /usr/include/c++/10.2.0/bits/basic_string.h:2299
#2  0x00007ffff6c6cf0d in F__eigs__(octave::interpreter&, octave_value_list
const&, int) (interp=..., args=..., nargout=1)
    at /usr/include/c++/10.2.0/bits/basic_string.h:907
#3  0x00007ffff6a3e0d6 in octave_builtin::execute(octave::tree_evaluator&,
int, octave_value_list const&) (this=0x7fffd0077c40, tw=..., nargout=1,
args=...)
    at ../libinterp/octave-value/ov-builtin.cc:65
#4  0x00007ffff6a9b058 in octave_function::call(octave::tree_evaluator&, int,
octave_value_list const&) (this=0x7fffd0077c40, tw=..., nargout=1, args=...)
    at ../libinterp/octave-value/ov-fcn.cc:57
#5  0x00007ffff6c3e3de in
octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffd045fb00, tw=..., nargout=1)
    at ../libinterp/parse-tree/pt-idx.cc:525
#6  0x00007ffff6c146f6 in
octave::tree_multi_assignment::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffda4aafa0, tw=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at ../libinterp/parse-tree/pt-assign.cc:201
#7  0x00007ffff6c1702c in
octave::tree_multi_assignment::evaluate(octave::tree_evaluator&, int)
(this=<optimized out>, tw=..., nargout=<optimized out>)
    at ../libinterp/parse-tree/pt-assign.h:163
#8  0x00007ffff6c2d6d3 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3244
#9  0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd045e7d0) at ../libinterp/parse-tree/pt-stmt.h:124
#10
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#11 0x00007ffff6c2d646 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3221
#12 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd045b170) at ../libinterp/parse-tree/pt-stmt.h:124
#13
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#14 0x00007ffff6c27c60 in
octave::tree_statement_list::accept(octave::tree_walker&) (tw=...,
this=0x7fffd04ec1d0) at ../libinterp/parse-tree/pt-stmt.h:201
#15 octave::tree_evaluator::execute_user_function(octave_user_function&, int,
octave_value_list const&)
    (this=this@entry=0x7fffd00036f8, user_function=...,
nargout=nargout@entry=1, xargs=...) at
../libinterp/parse-tree/pt-eval.cc:2983
--Type <RET> for more, q to quit, c to continue without paging--
#16 0x00007ffff6b6f671 in
octave_user_function::execute(octave::tree_evaluator&, int, octave_value_list
const&)
    (args=..., nargout=<optimized out>, tw=..., this=0x7fffd049da50)
    at ../libinterp/octave-value/ov-usr-fcn.cc:496
#17 octave_user_function::call(octave::tree_evaluator&, int, octave_value_list
const&) (this=0x7fffd049da50, tw=..., nargout=1, args=...)
    at ../libinterp/octave-value/ov-usr-fcn.cc:489
#18 0x00007ffff6c3e3de in
octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffd04ac310, tw=..., nargout=1)
    at ../libinterp/parse-tree/pt-idx.cc:525
#19 0x00007ffff6c424cc in
octave::tree_index_expression::evaluate(octave::tree_evaluator&, int)
(this=<optimized out>, tw=..., nargout=<optimized out>)
    at ../libinterp/parse-tree/pt-idx.h:109
#20 0x00007ffff6c13b1e in
octave::tree_simple_assignment::evaluate(octave::tree_evaluator&, int)
(this=0x7fffd0488bf0, tw=...)
    at ../libinterp/parse-tree/pt-assign.cc:101
#21 0x00007ffff6c2d6d3 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3244
#22 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd0485880) at ../libinterp/parse-tree/pt-stmt.h:124
#23
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#24 0x00007ffff6c27c60 in
octave::tree_statement_list::accept(octave::tree_walke--Type <RET> for more, q
to quit, c to continue without paging--
r&) (tw=..., this=0x7fffd01fe190) at ../libinterp/parse-tree/pt-stmt.h:201
#25 octave::tree_evaluator::execute_user_function(octave_user_function&, int,
octave_value_list const&)
    (this=this@entry=0x7fffd00036f8, user_function=...,
nargout=nargout@entry=7, xargs=...) at
../libinterp/parse-tree/pt-eval.cc:2983
#26 0x00007ffff6b6f671 in
octave_user_function::execute(octave::tree_evaluator&, int, octave_value_list
const&)
    (args=..., nargout=<optimized out>, tw=..., this=0x7fffd047f720)
    at ../libinterp/octave-value/ov-usr-fcn.cc:496
#27 octave_user_function::call(octave::tree_evaluator&, int, octave_value_list
const&) (this=0x7fffd047f720, tw=..., nargout=7, args=...)
    at ../libinterp/octave-value/ov-usr-fcn.cc:489
#28 0x00007ffff6c3e3de in
octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffd0496260, tw=..., nargout=7)
    at ../libinterp/parse-tree/pt-idx.cc:525
#29 0x00007ffff6c146f6 in
octave::tree_multi_assignment::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffda4ac750, tw=...)
    at ../libinterp/parse-tree/pt-assign.cc:201
#30 0x00007ffff6c2e649 in
octave::tree_evaluator::eval_string(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, bool, int&, int)
    (this=0x7fffd00036f8, eval_str=..., silent=false,
parse_status=@0x7fffda4acd9c: 0, nargout=0) at
../libinterp/parse-tree/pt-eval.cc:507
#31 0x00007ffff6c2e9b6 in
octave::tree_evaluator::eval(std::__cxx11::basic_strin--Type <RET> for more, q
to quit, c to continue without paging--
g<char, std::char_traits<char>, std::allocator<char> > const&, int)
    (this=this@entry=0x7fffd00036f8, try_code="[  n, k, A, d0, d2, old_state,
restore_state] = __test__( n, k, A, d0, d2, old_state, restore_state);",
nargout=nargout@entry=0) at ../libinterp/parse-tree/pt-eval.cc:566
#32 0x00007ffff6fa1ae1 in
octave::interpreter::eval(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, int)
    (this=this@entry=0x7fffd0002960, try_code="[  n, k, A, d0, d2, old_state,
restore_state] = __test__( n, k, A, d0, d2, old_state, restore_state);",
nargout=nargout@entry=0) at ../libinterp/corefcn/interpreter.cc:1491
#33 0x00007ffff6bf75a1 in Feval(octave::interpreter&, octave_value_list
const&, int) (interp=..., args=..., nargout=0)
    at ../libinterp/parse-tree/oct-parse.yy:5622
#34 0x00007ffff6a3e0d6 in octave_builtin::execute(octave::tree_evaluator&,
int, octave_value_list const&) (this=0x7fffd0017d00, tw=..., nargout=0,
args=...)
    at ../libinterp/octave-value/ov-builtin.cc:65
#35 0x00007ffff6a9b058 in octave_function::call(octave::tree_evaluator&, int,
octave_value_list const&) (this=0x7fffd0017d00, tw=..., nargout=0, args=...)
    at ../libinterp/octave-value/ov-fcn.cc:57
#36 0x00007ffff6c3e3de in
octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffd049f460, tw=..., nargout=0)
    at ../libinterp/parse-tree/pt-idx.cc:525
#37 0x00007ffff6c424cc in
octave::tree_index_expression::evaluate(octave::tree_evaluator&, int)
(this=<optimized out>, tw=..., nargout=<optimized out>)
    at ../libinterp/parse-tree/pt-idx.h:109
--Type <RET> for more, q to quit, c to continue without paging--
#38 0x00007ffff6c2d6d3 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3244
#39 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd049f6b0) at ../libinterp/parse-tree/pt-stmt.h:124
#40
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#41 0x00007ffff6c2907a in
octave::tree_statement_list::accept(octave::tree_walker&) (tw=...,
this=0x7fffd049ea90) at ../libinterp/parse-tree/pt-stmt.h:201
#42
octave::tree_evaluator::visit_try_catch_command(octave::tree_try_catch_command&)
(this=0x7fffd00036f8, cmd=...) at ../libinterp/parse-tree/pt-eval.cc:3414
#43 0x00007ffff6c2d646 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3221
#44 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd04a6fd0) at ../libinterp/parse-tree/pt-stmt.h:124
#45
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#46 0x00007ffff6c2d646 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3221
#47 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd04a76a0) at ../libinterp/parse-tree/pt-stmt.h:124
#48
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
--Type <RET> for more, q to quit, c to continue without paging--
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#49 0x00007ffff6c298a7 in
octave::tree_statement_list::accept(octave::tree_walker&) (tw=...,
this=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:201
#50
octave::tree_evaluator::visit_unwind_protect_command(octave::tree_unwind_protect_command&)
(this=0x7fffd00036f8, cmd=...)
    at ../libinterp/parse-tree/pt-eval.cc:3556
#51 0x00007ffff6c2d646 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
    at ../libinterp/parse-tree/pt-eval.cc:3221
#52 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd04b30b0) at ../libinterp/parse-tree/pt-stmt.h:124
#53
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#54 0x00007ffff6c2cb1e in
octave::tree_statement_list::accept(octave::tree_walker&) (tw=...,
this=0x7fffd04468b0) at ../libinterp/parse-tree/pt-stmt.h:201
#55 octave::tree_evaluator::execute_range_loop<double>(octave::range<double>
const&, unsigned long, octave::octave_lvalue&, octave::tree_statement_list*)
    (loop_body=0x7fffd04468b0, ult=..., line=323, rng=...,
this=0x7fffd00036f8)
    at ../libinterp/parse-tree/pt-eval.cc:2521
#56
octave::tree_evaluator::visit_simple_for_command(octave::tree_simple_for_command&)
(this=0x7fffd00036f8, cmd=...)
    at ../libinterp/parse-tree/pt-eval.cc:2571
#57 0x00007ffff6c2d646 in
octave::tree_evaluator::visit_statement(octave::tree_statement&)
(this=0x7fffd00036f8, stmt=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at ../libinterp/parse-tree/pt-eval.cc:3221
#58 0x00007ffff6c1f270 in
octave::tree_statement::accept(octave::tree_walker&)
    (tw=..., this=0x7fffd04b3190) at ../libinterp/parse-tree/pt-stmt.h:124
#59
octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&)
    (this=0x7fffd00036f8, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3303
#60 0x00007ffff6c27c60 in
octave::tree_statement_list::accept(octave::tree_walker&) (tw=...,
this=0x7fffd02483a0) at ../libinterp/parse-tree/pt-stmt.h:201
#61 octave::tree_evaluator::execute_user_function(octave_user_function&, int,
octave_value_list const&)
    (this=this@entry=0x7fffd00036f8, user_function=...,
nargout=nargout@entry=0, xargs=...) at
../libinterp/parse-tree/pt-eval.cc:2983
#62 0x00007ffff6b6f671 in
octave_user_function::execute(octave::tree_evaluator&, int, octave_value_list
const&)
    (args=..., nargout=<optimized out>, tw=..., this=0x7fffd042b740)
    at ../libinterp/octave-value/ov-usr-fcn.cc:496
#63 octave_user_function::call(octave::tree_evaluator&, int, octave_value_list
const&) (this=0x7fffd042b740, tw=..., nargout=0, args=...)
    at ../libinterp/octave-value/ov-usr-fcn.cc:489
#64 0x00007ffff6c3e3de in
octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int)
(this=0x7fffd01ccc30, tw=..., nargout=0)
    at ../libinterp/parse-tree/pt-idx.cc:525
#65 0x00007ffff6c2e649 in
octave::tree_evaluator::eval_string(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, bool, int&, int)
--Type <RET> for more, q to quit, c to continue without paging--
    (this=this@entry=0x7fffd00036f8, eval_str="test
/sources/octave/octave-blas64-builder/octave/scripts/sparse/eigs.m",
silent=silent@entry=false, parse_status=@0x7fffda4ae31c: 0,
nargout=nargout@entry=0)
    at ../libinterp/parse-tree/pt-eval.cc:507
#66 0x00007ffff6fa1a84 in
octave::interpreter::eval_string(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, bool, int&, int)
    (this=this@entry=0x7fffd0002960, eval_str="test
/sources/octave/octave-blas64-builder/octave/scripts/sparse/eigs.m",
silent=silent@entry=false, parse_status=@0x7fffda4ae31c: 0,
nargout=nargout@entry=0)
    at ../libinterp/corefcn/interpreter.cc:1472
#67 0x00007ffff6fa68af in octave::interpreter::execute_eval_option_code()
    (this=0x7fffd0002960) at ../libinterp/corefcn/interpreter.cc:1144
#68 0x00007ffff6fa9c40 in octave::interpreter::execute()
    (this=this@entry=0x7fffd0002960) at
../libinterp/corefcn/interpreter.cc:779
#69 0x00007ffff7719b9a in octave::interpreter_qobject::execute()
    (this=0x715b00) at ../libgui/src/interpreter-qobject.cc:87
#70 0x00007ffff36ab721 in QObject::event(QEvent*) ()
    at /opt/qt5/lib/libQt5Core.so.5
#71 0x00007ffff41251cf in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
    () at /opt/qt5/lib/libQt5Widgets.so.5
#72 0x00007ffff77558c4 in octave::octave_qapplication::notify(QObject*,
QEvent*) (this=0x504dd0, receiver=<optimized out>, ev=<optimized out>)
    at ../libgui/src/octave-qobject.cc:132
--Type <RET> for more, q to quit, c to continue without paging--
#73 0x00007ffff36811ca in QCoreApplication::notifyInternal2(QObject*,
QEvent*)
    () at /opt/qt5/lib/libQt5Core.so.5
#74 0x00007ffff3683971 in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) () at /opt/qt5/lib/libQt5Core.so.5
#75 0x00007ffff36d5903 in  () at /opt/qt5/lib/libQt5Core.so.5
#76 0x00007fffef360abb in g_main_dispatch (context=0x7fffd0000c20)
    at ../glib/gmain.c:3309
#77 g_main_context_dispatch (context=0x7fffd0000c20) at ../glib/gmain.c:3974
#78 0x00007fffef360d38 in g_main_context_iterate
    (context=context@entry=0x7fffd0000c20, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4047
#79 0x00007fffef360ddf in g_main_context_iteration
    (context=0x7fffd0000c20, may_block=1) at ../glib/gmain.c:4108
#80 0x00007ffff36d4fef in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
at /opt/qt5/lib/libQt5Core.so.5
#81 0x00007ffff367fd0b in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at
/opt/qt5/lib/libQt5Core.so.5
#82 0x00007ffff34a62fe in QThread::exec() () at /opt/qt5/lib/libQt5Core.so.5
#83 0x00007ffff34a7301 in  () at /opt/qt5/lib/libQt5Core.so.5
#84 0x00007ffff1d33eae in start_thread (arg=0x7fffda4b6640)
    at pthread_create.c:463
#85 0x00007ffff1c6031f in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) 

It's probably unrelated, but I got a build error making arpack-ng due to
gcc-10.  I had to pass -fallow-argument-mismatch to get it built.

Thanks

Chris





    _______________________________________________________

Reply to this item at:

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

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




reply via email to

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