bugGNU Octave - Bugs: bug #55981, test...

 
 

bug #55981: test libinterp/corefcn/bsxfun.cc-tst coredumps (with ASAN)

Submitter:  Dmitri A. Sergatskov <dasergatskov>
Submitted:  Fri 22 Mar 2019 09:50:26 PM UTC
   
 
Category:  Interpreter Severity:  3 - Normal
Priority:  5 - Normal Item Group:  None
Status:  Fixed Assigned to:  None
Originator Name:  Open/Closed:  * Closed
Release:  * dev Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Tue 26 Mar 2019 07:03:35 PM UTC, comment #8: 

Okay, looks good to me too after running test suite.  Marking as fixed and closing report.

Rik <rik5>
Group administrator
Tue 26 Mar 2019 06:52:41 PM UTC, comment #7: 

Same here.

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Tue 26 Mar 2019 05:22:36 PM UTC, comment #6: 

The test suite completed for me with only memory leak messages at the end.  Most of the direct leaks seem to be due to setenv which I think we can't do much about.

John W. Eaton <jwe>
Group administrator
Tue 26 Mar 2019 04:09:30 PM UTC, comment #5: 

Running "test bsxfun.cc" now works fine.  I'm running the entire test suite under ASAN to see if there is anything else that comes up.

Rik <rik5>
Group administrator
Tue 26 Mar 2019 02:13:30 PM UTC, comment #4: 

I pushed the following changeset:

http://hg.savannah.gnu.org/hgweb/octave/rev/4274f6962e6b

It seems to fix the problem for me.  Running make check with ASAN now to see if there are any other issues.

John W. Eaton <jwe>
Group administrator
Tue 26 Mar 2019 05:12:34 AM UTC, comment #3: 

This problem could be due to some change I made with function handles.  I'll take a look.

John W. Eaton <jwe>
Group administrator
Mon 25 Mar 2019 08:44:54 PM UTC, comment #2: 

When I build with ASAN I usually configure w/o java and w/o docs.
That speeds things up a little bit.

Dmitri.

Dmitri A. Sergatskov <dasergatskov>
Mon 25 Mar 2019 08:40:53 PM UTC, comment #1: 

Confirmed.  It took me a while to rebuild with ASAN options, but it does fail in the same way.  This is with hg id 2b23129f8a96 from 3/25/2019.

Rik <rik5>
Group administrator
Fri 22 Mar 2019 09:50:26 PM UTC, original submission:  

When compiled with ASAN,



octave:2> test libinterp/corefcn/bsxfun.cc-tst
=================================================================
==7112==ERROR: AddressSanitizer: heap-use-after-free on address 0x61400009ac40 at pc 0x7f3cdd60024e bp 0x7f3cb54e6e70 sp 0x7f3cb54e6e60
READ of size 8 at 0x61400009ac40 thread T9 (QThread)
    #0 0x7f3cdd60024d in octave::fcn_info::fcn_info_rep::xfind(octave::symbol_scope const&, octave_value_list const&) ../libinterp/corefcn/fcn-info.cc:396
    #1 0x7f3cdd5ffb73 in octave::fcn_info::fcn_info_rep::find(octave::symbol_scope const&, octave_value_list const&) ../libinterp/corefcn/fcn-info.cc:355
    #2 0x7f3cdde4352d in octave::fcn_info::find(octave::symbol_scope const&, octave_value_list const&) ../libinterp/corefcn/fcn-info.h:255
    #3 0x7f3cdde38173 in octave::symbol_table::fcn_table_find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, octave_value_list const&, octave::symbol_scope const&) ../libinterp/corefcn/symtab.cc:175
    #4 0x7f3cdde38a3b in octave::symbol_table::find_function(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, octave_value_list const&, octave::symbol_scope const&) ../libinterp/corefcn/symtab.cc:227
    #5 0x7f3cdcfeab1c in octave_fcn_handle::function_value(bool) ../libinterp/octave-value/ov-fcn-handle.cc:336
    #6 0x7f3cdd0f837a in octave_value::function_value(bool) const ../libinterp/octave-value/ov.cc:1662
    #7 0x7f3cdd43cb61 in Fbsxfun(octave::interpreter&, octave_value_list const&, int) ../libinterp/corefcn/bsxfun.cc:369
    #8 0x7f3cdcf30070 in octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) ../libinterp/octave-value/ov-builtin.cc:71
    #9 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #10 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #11 0x7f3cdce6d691 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:317
    #12 0x7f3cdd305157 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2989
    #13 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #14 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #15 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #16 0x7f3cdd2fa1e7 in octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&, octave::stack_frame*) ../libinterp/parse-tree/pt-eval.cc:1890
    #17 0x7f3cdd0e12ed in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&, octave::stack_frame*) ../libinterp/octave-value/ov-usr-fcn.cc:457
    #18 0x7f3cdd0e88f7 in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (/d2/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.7+0x14e68f7)
    #19 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #20 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #21 0x7f3cdd311f59 in octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:348
    #22 0x7f3cdd2eb300 in octave::tree_evaluator::eval_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, int&, int) ../libinterp/parse-tree/pt-eval.cc:241
    #23 0x7f3cdd2ebbd0 in octave::tree_evaluator::eval_string(octave_value const&, bool, int&, int) ../libinterp/parse-tree/pt-eval.cc:292
    #24 0x7f3cddaed71f in octave::interpreter::eval_string(octave_value const&, bool, int&, int) ../libinterp/corefcn/interpreter.cc:1183
    #25 0x7f3cdd296c37 in Feval(octave::interpreter&, octave_value_list const&, int) ../libinterp/parse-tree/oct-parse.yy:5478
    #26 0x7f3cdcf30070 in octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) ../libinterp/octave-value/ov-builtin.cc:71
    #27 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #28 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #29 0x7f3cdce6d691 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:317
    #30 0x7f3cdd305157 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2989
    #31 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #32 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #33 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #34 0x7f3cdd306415 in octave::tree_evaluator::visit_try_catch_command(octave::tree_try_catch_command&) ../libinterp/parse-tree/pt-eval.cc:3165
    #35 0x7f3cdd32eac6 in octave::tree_try_catch_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-except.h:81
    #36 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #37 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #38 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #39 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #40 0x7f3cdd2fc337 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) ../libinterp/parse-tree/pt-eval.cc:2077
    #41 0x7f3cdd2ddd22 in octave::tree_if_command_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:115
    #42 0x7f3cdd2fbf49 in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) ../libinterp/parse-tree/pt-eval.cc:2055
    #43 0x7f3cdd34ac3e in octave::tree_if_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:148
    #44 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #45 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #46 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #47 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #48 0x7f3cdd2fc337 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) ../libinterp/parse-tree/pt-eval.cc:2077
    #49 0x7f3cdd2ddd22 in octave::tree_if_command_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:115
    #50 0x7f3cdd2fbf49 in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) ../libinterp/parse-tree/pt-eval.cc:2055
    #51 0x7f3cdd34ac3e in octave::tree_if_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:148
    #52 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #53 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #54 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #55 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #56 0x7f3cdd3077b0 in octave::tree_evaluator::visit_unwind_protect_command(octave::tree_unwind_protect_command&) ../libinterp/parse-tree/pt-eval.cc:3304
    #57 0x7f3cdd32eb3a in octave::tree_unwind_protect_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-except.h:148
    #58 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #59 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #60 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #61 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #62 0x7f3cdd2f6dfb in octave::tree_evaluator::visit_simple_for_command(octave::tree_simple_for_command&) ../libinterp/parse-tree/pt-eval.cc:1537
    #63 0x7f3cdd33e56c in octave::tree_simple_for_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-loop.h:219
    #64 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #65 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #66 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #67 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #68 0x7f3cdd2fa1e7 in octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&, octave::stack_frame*) ../libinterp/parse-tree/pt-eval.cc:1890
    #69 0x7f3cdd0e12ed in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&, octave::stack_frame*) ../libinterp/octave-value/ov-usr-fcn.cc:457
    #70 0x7f3cdd0e88f7 in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (/d2/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.7+0x14e68f7)
    #71 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #72 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #73 0x7f3cdce6d691 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:317
    #74 0x7f3cdd305157 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2989
    #75 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #76 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #77 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #78 0x7f3cdd2ea730 in octave::tree_evaluator::repl(bool) ../libinterp/parse-tree/pt-eval.cc:112
    #79 0x7f3cddaea0d0 in octave::interpreter::main_loop() ../libinterp/corefcn/interpreter.cc:976
    #80 0x7f3cddae66fa in octave::interpreter::execute() ../libinterp/corefcn/interpreter.cc:690
    #81 0x7f3cde884b7b in octave::octave_interpreter::execute() ../libgui/src/main-window.cc:146
    #82 0x7f3cdea553ab in octave::octave_interpreter::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) libgui/src/moc-main-window.cc:89
    #83 0x7f3cdaafdda5 in QObject::event(QEvent*) (/lib64/libQt5Core.so.5+0x27ada5)
    #84 0x7f3cdb450284 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/lib64/libQt5Widgets.so.5+0x16d284)
    #85 0x7f3cdb45799f in QApplication::notify(QObject*, QEvent*) (/lib64/libQt5Widgets.so.5+0x17499f)
    #86 0x7f3cde8b0870 in octave::octave_qapplication::notify(QObject*, QEvent*) ../libgui/src/main-window.cc:2817
    #87 0x7f3cdaad4ec5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/lib64/libQt5Core.so.5+0x251ec5)
    #88 0x7f3cdaad809a in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (/lib64/libQt5Core.so.5+0x25509a)
    #89 0x7f3cdab25806  (/lib64/libQt5Core.so.5+0x2a2806)
    #90 0x7f3cd3eb506c in g_main_context_dispatch (/lib64/libglib-2.0.so.0+0x4f06c)
    #91 0x7f3cd3eb5437  (/lib64/libglib-2.0.so.0+0x4f437)
    #92 0x7f3cd3eb54cf in g_main_context_iteration (/lib64/libglib-2.0.so.0+0x4f4cf)
    #93 0x7f3cdab25592 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/lib64/libQt5Core.so.5+0x2a2592)
    #94 0x7f3cdaad3e0a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (/lib64/libQt5Core.so.5+0x250e0a)
    #95 0x7f3cda93be85 in QThread::exec() (/lib64/libQt5Core.so.5+0xb8e85)
    #96 0x7f3cda9452fa  (/lib64/libQt5Core.so.5+0xc22fa)
    #97 0x7f3cd652558d in start_thread (/lib64/libpthread.so.0+0x858d)
    #98 0x7f3cd64546a2 in clone (/lib64/libc.so.6+0xfd6a2)

0x61400009ac40 is located 0 bytes inside of 432-byte region [0x61400009ac40,0x61400009adf0)
freed by thread T9 (QThread) here:
    #0 0x7f3cdeda0e10 in operator delete(void*, unsigned long) (/lib64/libasan.so.5+0xf2e10)
    #1 0x7f3cdd0de6b0 in octave_user_function::~octave_user_function() ../libinterp/octave-value/ov-usr-fcn.cc:220
    #2 0x7f3cde82d4a3 in octave_value::operator=(octave_value const&) (/d2/home/dima/src/octave/gcc_asan/libgui/.libs/liboctgui.so.5+0x2714a3)
    #3 0x7f3cdde431f0 in octave::fcn_info::fcn_info_rep::clear_user_function(bool) ../libinterp/corefcn/fcn-info.h:171
    #4 0x7f3cdde438e3 in octave::fcn_info::clear_user_function(bool) ../libinterp/corefcn/fcn-info.h:342
    #5 0x7f3cdde39f36 in octave::symbol_table::clear_function_pattern(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../libinterp/corefcn/symtab.cc:369
    #6 0x7f3cdd2f46b8 in octave::tree_evaluator::clear_symbol_pattern(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../libinterp/parse-tree/pt-eval.cc:1319
    #7 0x7f3cddaedcc7 in octave::interpreter::clear_symbol_pattern(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../libinterp/corefcn/interpreter.cc:1327
    #8 0x7f3cddece0f2 in do_matlab_compatible_clear ../libinterp/corefcn/variables.cc:1133
    #9 0x7f3cddeceb65 in Fclear(octave::interpreter&, octave_value_list const&, int) ../libinterp/corefcn/variables.cc:1306
    #10 0x7f3cdcf30070 in octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) ../libinterp/octave-value/ov-builtin.cc:71
    #11 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #12 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #13 0x7f3cdce6d691 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:317
    #14 0x7f3cdd305157 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2989
    #15 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #16 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #17 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #18 0x7f3cdd2fc337 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) ../libinterp/parse-tree/pt-eval.cc:2077
    #19 0x7f3cdd2ddd22 in octave::tree_if_command_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:115
    #20 0x7f3cdd2fbf49 in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) ../libinterp/parse-tree/pt-eval.cc:2055
    #21 0x7f3cdd34ac3e in octave::tree_if_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:148
    #22 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #23 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #24 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #25 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #26 0x7f3cdd3077b0 in octave::tree_evaluator::visit_unwind_protect_command(octave::tree_unwind_protect_command&) ../libinterp/parse-tree/pt-eval.cc:3304
    #27 0x7f3cdd32eb3a in octave::tree_unwind_protect_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-except.h:148
    #28 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #29 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119

previously allocated by thread T9 (QThread) here:
    #0 0x7f3cded9f830 in operator new(unsigned long) (/lib64/libasan.so.5+0xf1830)
    #1 0x7f3cdd281279 in octave::base_parser::start_function(octave::tree_identifier*, octave::tree_parameter_list*, octave::tree_statement_list*, octave::tree_statement*) ../libinterp/parse-tree/oct-parse.yy:3351
    #2 0x7f3cdd280bf9 in octave::base_parser::make_function(octave::token*, octave::tree_parameter_list*, octave::tree_identifier*, octave::tree_parameter_list*, octave::tree_statement_list*, octave::tree_statement*, octave::comment_list*) ../libinterp/parse-tree/oct-parse.yy:3313
    #3 0x7f3cdd271d99 in octave_push_parse(octave_pstate*, int, OCTAVE_STYPE const*, octave::base_parser&) ../libinterp/parse-tree/oct-parse.yy:1638
    #4 0x7f3cdd260a5e in octave_pull_parse(octave_pstate*, octave::base_parser&) libinterp/parse-tree/oct-parse.cc:3004
    #5 0x7f3cdd28a814 in octave::parser::run() ../libinterp/parse-tree/oct-parse.yy:4362
    #6 0x7f3cdd2eb0e0 in octave::tree_evaluator::eval_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, int&, int) ../libinterp/parse-tree/pt-eval.cc:224
    #7 0x7f3cdd2ebbd0 in octave::tree_evaluator::eval_string(octave_value const&, bool, int&, int) ../libinterp/parse-tree/pt-eval.cc:292
    #8 0x7f3cddaed71f in octave::interpreter::eval_string(octave_value const&, bool, int&, int) ../libinterp/corefcn/interpreter.cc:1183
    #9 0x7f3cdd296c37 in Feval(octave::interpreter&, octave_value_list const&, int) ../libinterp/parse-tree/oct-parse.yy:5478
    #10 0x7f3cdcf30070 in octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) ../libinterp/octave-value/ov-builtin.cc:71
    #11 0x7f3cdd2fd552 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) ../libinterp/parse-tree/pt-eval.cc:2234
    #12 0x7f3cdd336800 in octave::tree_index_expression::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-idx.h:106
    #13 0x7f3cdce6d691 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) ../libinterp/parse-tree/pt-eval.h:317
    #14 0x7f3cdd305157 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2989
    #15 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #16 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #17 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #18 0x7f3cdd306415 in octave::tree_evaluator::visit_try_catch_command(octave::tree_try_catch_command&) ../libinterp/parse-tree/pt-eval.cc:3165
    #19 0x7f3cdd32eac6 in octave::tree_try_catch_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-except.h:81
    #20 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #21 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119
    #22 0x7f3cdd3056ea in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) ../libinterp/parse-tree/pt-eval.cc:3048
    #23 0x7f3cdce6df9c in octave::tree_statement_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:194
    #24 0x7f3cdd2fc337 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) ../libinterp/parse-tree/pt-eval.cc:2077
    #25 0x7f3cdd2ddd22 in octave::tree_if_command_list::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:115
    #26 0x7f3cdd2fbf49 in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) ../libinterp/parse-tree/pt-eval.cc:2055
    #27 0x7f3cdd34ac3e in octave::tree_if_command::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-select.h:148
    #28 0x7f3cdd304f82 in octave::tree_evaluator::visit_statement(octave::tree_statement&) ../libinterp/parse-tree/pt-eval.cc:2967
    #29 0x7f3cdd34def6 in octave::tree_statement::accept(octave::tree_walker&) ../libinterp/parse-tree/pt-stmt.h:119

Thread T9 (QThread) created by T0 here:
    #0 0x7f3cded00f63 in __interceptor_pthread_create (/lib64/libasan.so.5+0x52f63)
    #1 0x7f3cda944d76 in QThread::start(QThread::Priority) (/lib64/libQt5Core.so.5+0xc1d76)

SUMMARY: AddressSanitizer: heap-use-after-free ../libinterp/corefcn/fcn-info.cc:396 in octave::fcn_info::fcn_info_rep::xfind(octave::symbol_scope const&, octave_value_list const&)
Shadow bytes around the buggy address:
  0x0c288000b530: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c288000b540: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c288000b550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c288000b560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c288000b570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa fa
=>0x0c288000b580: fa fa fa fa fa fa fa fa[fd]fd fd fd fd fd fd fd
  0x0c288000b590: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c288000b5a0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c288000b5b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa
  0x0c288000b5c0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c288000b5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==7112==ABORTING


hg id
6731d89ef576 tip @


Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by jwe (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by dasergatskov (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-03-26 rik5 StatusReady For Test Fixed
        Open/ClosedOpen Closed
    2019-03-26 jwe StatusConfirmed Ready For Test
    2019-03-25 rik5 StatusNone Confirmed

    Back to the top

    Powered by Savane 3.13-f8d8.
    Corresponding source code