octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #40044] Octave is unresponsive after gnuplot c


From: John W. Eaton
Subject: [Octave-bug-tracker] [bug #40044] Octave is unresponsive after gnuplot crashes with segfault
Date: Thu, 8 Mar 2018 16:39:41 -0500 (EST)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

Update of bug #40044 (project octave):

                Severity:           4 - Important => 3 - Normal             
                 Summary: *** glibc detected *** gnuplot: double free or
corruption (fasttop): 0x08d72878 *** => Octave is unresponsive after gnuplot
crashes with segfault

    _______________________________________________________

Follow-up Comment #6:

The test script causes gnuplot to crash.  Octave doesn't know that's happened,
so it continues on.  In __gnuplot_draw_axes__, there is a call to


  gnuplot_term = __gnuplot_get_var__ (axis_obj.parent, "GPVAL_TERM");


In __gnuplot_get_var__, Octave creates a fifo file and sends a request to
gnuplot that is never answered.

I'm not sure how to detect this situation and work around it.  The development
version of Octave is not responding to Ctrl-C in this case because it is stuck
in a system call:


#0  0x00007ffff47134bd in open64 () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007ffff46ab293 in __GI__IO_file_open (address@hidden,
filename=<optimized out>, posix_mode=<optimized out>, address@hidden,
read_write=8, address@hidden)
    at fileops.c:229
#2  0x00007ffff46ab433 in _IO_new_file_fopen (address@hidden,
address@hidden "/tmp/oct-YXP99N", mode=<optimized
out>, address@hidden "rb", 
    address@hidden) at fileops.c:336
#3  0x00007ffff469f5b4 in __fopen_internal (filename=0x7fffffff8480
"/tmp/oct-YXP99N", mode=0x7fffffff8460 "rb", is32=1) at iofopen.c:86
#4  0x00007ffff7558725 in do_stream_open (fid=<synthetic pointer>: <optimized
out>, arch="native", mode_arg="r", name="/tmp/oct-YXP99N") at
/home/jwe/src/octave/libinterp/corefcn/file-io.cc:450
#5  do_stream_open (fcn=0x7ffff7901fe7 "fopen", fid=<synthetic pointer>:
<optimized out>, tc_arch=..., tc_mode=..., tc_name=...) at
/home/jwe/src/octave/libinterp/corefcn/file-io.cc:476


and the interrupt signal just sets a flag that the interpreter checks.  So we
don't break out of the system call.

This is happening here:


stopped in:

  -->     __gnuplot_get_var__ at line 76
[/home/jwe/src/octave/scripts/plot/util/private/__gnuplot_get_var__.m]
        __gnuplot_draw_axes__ at line 38
[/home/jwe/src/octave/scripts/plot/util/private/__gnuplot_draw_axes__.m]
      __gnuplot_draw_figure__ at line 164
[/home/jwe/src/octave/scripts/plot/util/private/__gnuplot_draw_figure__.m]
          __gnuplot_drawnow__ at line 86
[/home/jwe/src/octave/scripts/plot/util/__gnuplot_drawnow__.m]
                        surfc at line 89
[/home/jwe/src/octave/scripts/plot/draw/surfc.m]
                          foo at line 19
[/net/buserror/scratch/jwe/build/octave/foo.m]


Since the test code would probably work if gnuplot didn't fail, and because
both the fltk and qt plotting widgets work with this code, I'm lowering the
priority to normal.


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?40044>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]