[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfa
From: |
Rik |
Subject: |
[Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault |
Date: |
Wed, 7 Oct 2020 12:03:31 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko |
Update of bug #59228 (project octave):
Category: None => Interpreter
Status: None => Confirmed
Operating System: Mac OS => Any
_______________________________________________________
Follow-up Comment #3:
Confirmed on a Linux platform as well. Changing the Operating System to
"Any".
I ran under gdb and the backtrace is:
#0 0x0000000000000000 in ?? ()
#1 0x00007ffff712f40f in octave::cdef_object_rep::release(octave::cdef_object
const&) () from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#2 0x00007ffff718ca68 in octave_classdef_meta::~octave_classdef_meta() ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#3 0x00007ffff7874bca in
std::_Sp_counted_ptr<octave::fcn_info::fcn_info_rep*,
(__gnu_cxx::_Lock_policy)2>::_M_dispose() ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#4 0x00007ffff76b652a in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#5 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#6 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#7 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#8 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#9 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#10 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#11 0x00007ffff76b6495 in std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, octave::fcn_info>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >
>::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, octave::fcn_info> >*) ()
from /home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#12 0x00007ffff76b3d29 in octave::interpreter::~interpreter() () from
/home/rik/local/lib/octave/6.0.91/liboctinterp.so.8
#13 0x0000555555555a40 in main ()
It starts in the destructor for the interpreter (#12) and then ends up in the
destructor for octave_classdef_meta. I also verified that adding
interpreter.shutdown () resolves this issue.
We can certainly make that change to the example code to demonstrate best
practice. Still, I think it is a decision for jwe as to whether an object
going out of existence, in this case the interpreter, should be able to cause
a segfault.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?59228>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, anonymous, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault,
Rik <=
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, anonymous, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Rik, 2020/10/07
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/08
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Rik, 2020/10/10
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/11
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Rik, 2020/10/13
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, John W. Eaton, 2020/10/13
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/14
- [Octave-bug-tracker] [bug #59228] embedded.cc example crashes with segfault, Carlo de Falco, 2020/10/14