octave-3.0.0+ segmentation fault
Michael Goffioul
michael.goffioul at gmail.com
Sat Jan 5 08:10:11 CST 2008
On 1/5/08, Michael Goffioul <michael.goffioul at gmail.com> wrote:
> The count is indeed 1, but rep is not undefined: it's an octave_dld_function
> that corresponds to the autoloaded gnuplot_binary function from
> __gnuplot_raw__.oct.
I tried to trace the problem a little bit more and found something weird.
When gnuplot_binary is called a second time, as reported earlier in
the backtrace, the code comes to ov.h:line 279, where "rep" is deleted:
in this case, "rep" is an octave_dld_function representing the autoloaded
function "gnuplot_binary" in __gnuplot_raw__.oct.
When switching to disassembly code, I noticed that the call "delete rep"
goes through a frame corresponding to compiler autogenerated code,
named "scalar deleting destructor". This little piece of code finally calls
the octave_dld_function destructor with a code that is roughly described
here: http://www.thescripts.com/forum/thread263644.html.
Now the problem is that this additional frame is located in
__gnuplot_raw__.oct address space. So, when the octave_dld_function
destructor unloads __gnuplot_raw__.oct from memory, this invalidates
the frame and lead to a crash when unwinding the call stack.
I don't know if this can be considered as a compiler bug, nor why this
frame is generated in the oct-file address space, but I really have a
problem now, as octave is un-compilable for me...
Michael.
More information about the Octave-maintainers
mailing list