bugGNU Octave - Bugs: bug #57177, [octave forge] (control)...

 
 

bug #57177: [octave forge] (control) munmap_chunk(): invalid pointer in test with 64bit indexes

Submitter:  Orion Poplawski <opoplawski>
Submitted:  Wed 06 Nov 2019 04:48:40 AM UTC
   
 
Category:  Octave Package Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Segfault, Bus Error, etc.
Status:  Invalid / Not an Octave Bug Assigned to:  None
Originator Name:  Open/Closed:  * Closed
Release:  * 5.1.0 Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Thu 07 Nov 2019 04:59:06 AM UTC, comment #2: 

So, obviously the octave packages need to be rebuilt with the 64bit indexes version of octave.  After rebuilding octave-control, the tests run fine.  This can be closed.

Orion Poplawski <opoplawski>
Wed 06 Nov 2019 05:21:08 PM UTC, comment #1: 

The call stack in the valgrind report looks like this is actually in control package functions, reassigning.

Mike Miller <mtmiller>
Group Member
Wed 06 Nov 2019 04:48:40 AM UTC, original submission:  

We have enabled 64bit indexes and LTO optimization in the octave package in Fedora rawhide.  We are now seeing test failures in the signal package:

  butter.m ....................................................munmap_chunk(): invalid pointer
fatal: caught signal Aborted -- stopping myself...


valgrind reports:

==191900== Invalid free() / delete / delete[] / realloc()
==191900==    at 0x483B5C6: operator delete[](void*) (vg_replace_malloc.c:651)
==191900==    by 0x48651E5: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==  Address 0xf743898 is 8 bytes inside a block of size 32 alloc'd
==191900==    at 0x483A593: operator new[](unsigned long) (vg_replace_malloc.c:433)
==191900==    by 0x53F707F: UnknownInlinedFun (dim-vector.h:101)
==191900==    by 0x53F707F: UnknownInlinedFun (dim-vector.h:202)
==191900==    by 0x53F707F: UnknownInlinedFun (Array.h:384)
==191900==    by 0x53F707F: UnknownInlinedFun (ovl.h:62)
==191900==    by 0x53F707F: octave_value_list::slice(long, long, bool) const (ovl.h:121)
==191900==    by 0x5346F7D: octave_user_function::all_va_args(octave_value_list const&) (ov-usr-fcn.cc:446)
==191900==    by 0x52C0195: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-eval.cc:1606)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52CD37B: octave::tree_evaluator::convert_to_const_vector(octave::tree_argument_list*, octave_value const*) (pt-eval.h:312)
==191900==    by 0x52BD074: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:1993)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==
==191900== Conditional jump or move depends on uninitialised value(s)
==191900==    at 0x625584B: Range::max() const (Range.cc:230)
==191900==    by 0x6256EAB: Range::limit_internal() const (Range.cc:605)
==191900==    by 0x48652BE: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==
==191900== Conditional jump or move depends on uninitialised value(s)
==191900==    at 0x7756838: round (in /usr/lib64/libm-2.30.9000.so)
==191900==    by 0x48652BE: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==
==191900== Conditional jump or move depends on uninitialised value(s)
==191900==    at 0x775683D: round (in /usr/lib64/libm-2.30.9000.so)
==191900==    by 0x48652BE: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==
==191900== Conditional jump or move depends on uninitialised value(s)
==191900==    at 0x775684F: round (in /usr/lib64/libm-2.30.9000.so)
==191900==    by 0x48652BE: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==
==191900== Conditional jump or move depends on uninitialised value(s)
==191900==    at 0x625584B: Range::max() const (Range.cc:230)
==191900==    by 0x6256EAB: Range::limit_internal() const (Range.cc:605)
==191900==    by 0x486537A: F__lti_input_idx__(octave_value_list const&, int) (in /usr/lib64/octave/packages/control-3.2.0/x86_64-redhat-linux-gnu-api-v53/__control_helper_functions__.oct)
==191900==    by 0x5415AF1: octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-builtin.cc:65)
==191900==    by 0x52BCDA9: octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (pt-eval.cc:2008)
==191900==    by 0x52D010B: octave::tree_evaluator::evaluate_n(octave::tree_expression*, int) (pt-eval.h:343)
==191900==    by 0x52BD61B: octave::tree_evaluator::visit_multi_assignment(octave::tree_multi_assignment&) (pt-eval.cc:2320)
==191900==    by 0x53E771F: octave::tree_evaluator::evaluate(octave::tree_expression*, int) (pt-eval.h:312)
==191900==    by 0x52B8DCC: octave::tree_evaluator::visit_statement(octave::tree_statement&) (pt-eval.cc:2776)
==191900==    by 0x52B2903: octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (pt-stmt.h:119)
==191900==    by 0x52C06CC: octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (pt-stmt.h:194)
==191900==    by 0x533DF06: octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (ov-usr-fcn.cc:455)
==191900==
==191900== Stack overflow in thread #1: can't grow stack to 0x1ffe801000
==191900== Can't extend stack to 0x1ffe800988 during signal delivery for thread 1:
==191900==   no stack segment
==191900==
==191900== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==191900==  Access not within mapped region at address 0x1FFE800988
==191900== Stack overflow in thread #1: can't grow stack to 0x1ffe801000
==191900==    at 0x48D87BC: printf_positional (in /usr/lib64/libc-2.30.9000.so)

Orion Poplawski <opoplawski>

 

(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 opoplawski (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 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-11-07 mtmiller StatusNone Invalid / Not an Octave Bug
        Open/ClosedOpen Closed
    2019-11-06 mtmiller Summarysignal: munmap_chunk(): invalid pointer in test with 64bit indexes [octave forge] (control) munmap_chunk(): invalid pointer in test with 64bit indexes

    Back to the top

    Powered by Savane 3.13-f8d8.
    Corresponding source code