bugGNU Octave - Bugs: bug #43619, Plotting crashes with fltk 1.3.3

 
 

bug #43619: Plotting crashes with fltk 1.3.3

Submitter:  None
Submitted:  Sat 15 Nov 2014 03:44:02 PM UTC
   
 
Category:  Plotting with OpenGL Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Segfault, Bus Error, etc.
Status:  Works For Me Assigned to:  None
Originator Name:  Originator Email:  -email is unavailable-
Open/Closed:  * Closed Release:  * 3.8.2
Operating System:  * GNU/Linux Fixed Release:  None
Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Mon 17 Nov 2014 07:45:00 PM UTC, comment #2: 

I've built Octave default with libfltk1.3.3 from tarball today on Debian Jessie. FLTK was configured with --enabled-shared and I had to add FL_EXPORT to class Fl_XFont_On_Demand in x.H.

After this I'm able to plot and "make check" runs fine.

So I think this is a build/packaging problem with arch and not a bug in octave.

Still, please feel free to add gdb output after you've installed debugging symbols.

Andreas Weber <andy1978>
Group Member
Sat 15 Nov 2014 05:53:56 PM UTC, comment #1: 

Have you installed Octave from an arch repository or compiled it yourself? If the first, could you install the debug symbols for octave and run gdb again? If the later, can you rebuild it with debug symbols?

Andreas Weber <andy1978>
Group Member
Sat 15 Nov 2014 03:44:02 PM UTC, original submission:  

My distro (Arhch) just updated fltk to 1.3.3 and octave segfaults each time I try to run "plot( ...".  Downgrading to fltk 1.3.2 fixes the problem for me.  I did a search in the bugs for fltk and didn't find anything recent.  Sorry if I missed it.  Here's an example with a backtrace:


 % gdb octave
GNU gdb (GDB) 7.8.1
Copyright (C) 2014 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-unknown-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...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/octave
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
process 7195 is executing new program: /usr/bin/octave-cli-3.8.2
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
GNU Octave, version 3.8.2
Copyright (C) 2014 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type 'warranty'.

Octave was configured for "x86_64-unknown-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html

Read http://www.octave.org/bugs.html to learn how to submit bug reports.
For information about changes from previous versions, type 'news'.

octave:1> plot(1:10)

Program received signal SIGSEGV, Segmentation fault.
0x00007fffe67a96fd in Fl_Gl_Window::show() () from /usr/lib/libfltk_gl.so.1.3
(gdb) bt
#0  0x00007fffe67a96fd in Fl_Gl_Window::show() () from /usr/lib/libfltk_gl.so.1.3
#1  0x00007fffe64e8a60 in Fl_Window::handle(int) () from /usr/lib/libfltk.so.1.3
#2  0x00007fffe69d1770 in OpenGL_fltk::handle(int) () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#3  0x00007fffe64fdd26 in Fl_Group::handle(int) () from /usr/lib/libfltk.so.1.3
#4  0x00007fffe69e1cd6 in plot_window::handle(int) () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#5  0x00007fffe6546498 in Fl_X::make_xid(Fl_Window*, XVisualInfo*, unsigned long) () from /usr/lib/libfltk.so.1.3
#6  0x00007fffe69e424c in plot_window::plot_window(int, int, int, int, figure::properties&) () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#7  0x00007fffe69e4a83 in figure_manager::do_new_window(figure::properties&) () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#8  0x00007fffe69d077d in ?? () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#9  0x00007fffe69e4ce3 in fltk_graphics_toolkit::redraw_figure(graphics_object const&) const () from /usr/lib/octave/3.8.2/oct/x86_64-unknown-linux-gnu/__init_fltk__.oct
#10 0x00007ffff758e139 in Fdrawnow(octave_value_list const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#11 0x00007ffff71fcac7 in octave_builtin::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#12 0x00007ffff71fb2a4 in octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#13 0x00007ffff71fc13c in octave_builtin::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#14 0x00007ffff72bfc09 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#15 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#16 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#17 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#18 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#19 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#20 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#21 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#22 0x00007ffff72b4239 in octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#23 0x00007ffff72afb22 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#24 0x00007ffff72afd3c in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#25 0x00007ffff72bfc09 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#26 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#27 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#28 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#29 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#30 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#31 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#32 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#33 0x00007ffff72b4239 in octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#34 0x00007ffff72afb22 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#35 0x00007ffff72b5814 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#36 0x00007ffff72bfc34 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#37 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#38 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#39 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#40 0x00007ffff73162cf in tree_simple_assignment::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#41 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#42 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#43 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#44 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#45 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#46 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#47 0x00007ffff72b4239 in octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#48 0x00007ffff72afb22 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#49 0x00007ffff72b5814 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#50 0x00007ffff72bfc34 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#51 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#52 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#53 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#54 0x00007ffff73162cf in tree_simple_assignment::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#55 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#56 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#57 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
---Type <return> to continue, or q <return> to quit---
#58 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#59 0x00007ffff72b4239 in octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#60 0x00007ffff72afb22 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#61 0x00007ffff72b5814 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#62 0x00007ffff72bfc34 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#63 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#64 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#65 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#66 0x00007ffff73162cf in tree_simple_assignment::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#67 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#68 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#69 0x00007ffff732d3de in tree_evaluator::visit_unwind_protect_command(tree_unwind_protect_command&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#70 0x00007ffff732aa84 in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#71 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#72 0x00007ffff72b4239 in octave_user_function::do_multi_index_op(int, octave_value_list const&, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#73 0x00007ffff72afb22 in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#74 0x00007ffff72afd3c in octave_user_function::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#75 0x00007ffff72bfc09 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#76 0x00007ffff72bfc95 in octave_value::subsref(std::string const&, std::list<octave_value_list, std::allocator<octave_value_list> > const&, int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) ()
   from /usr/lib/octave/3.8.2/liboctinterp.so.2
#77 0x00007ffff733fee6 in tree_index_expression::rvalue(int, std::list<octave_lvalue, std::allocator<octave_lvalue> > const*) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#78 0x00007ffff7340b81 in tree_index_expression::rvalue1(int) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#79 0x00007ffff732aafb in tree_evaluator::visit_statement(tree_statement&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#80 0x00007ffff7329e09 in tree_evaluator::visit_statement_list(tree_statement_list&) () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#81 0x00007ffff783b414 in main_loop() () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#82 0x00007ffff6db95eb in octave_execute_interpreter () from /usr/lib/octave/3.8.2/liboctinterp.so.2
#83 0x00007ffff6453040 in __libc_start_main () from /usr/lib/libc.so.6
#84 0x000000000040091f in ?? ()


Anonymous

 

(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 rik5 (Updated the item)
  • -email is unavailable- added by mtmiller (Updated the item)
  • -email is unavailable- added by andy1978 (Posted a comment)
  • -email is unavailable- added by None (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
    2014-12-07 rik5 Open/ClosedOpen Closed
    2014-11-17 andy1978 StatusNeed Info Works For Me
    2014-11-15 mtmiller CategoryPlotting Plotting with OpenGL
        StatusNone Need Info

    Back to the top

    Powered by Savane 3.13-758e.
    Corresponding source code