bugGNU Octave - Bugs: bug #34750, Plotting Hangs on OpenBSD


bug #34750: Plotting Hangs on OpenBSD

Submitted by:  Edd Barrett <vext01>
Submitted on:  Sat Nov 5 01:39:15 2011  
Category: Plotting with gnuplotSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Incorrect Result
Status: FixedAssigned to: None
Originator Name: Open/Closed: Closed
Release: 3.4.3Operating System: BSD

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


(Jump to the original submission Jump to the original submission)

Thu Aug 8 03:17:41 2013, comment #13:

I am able to plot normally with gnuplot with the current development version of Octave on OpenBSD 5.3. Whatever was the problem with 3.4.x and 3.6.x has apparently been fixed.

Mike Miller <mtmiller>
Project Administrator
Wed Feb 22 17:00:16 2012, comment #12:

Ok. This looks like it is a problem with the i/o pipe between Octave and Gnuplot.

The pipe is being opened in .../scripts/plot/private/__gnuplot_get_var__.m

This calls Octave's builtin popen2() which is part of .../src/syscalls.cc

I recommend you start a thread on the octave help mail-list.


Ben Abbott <bpabbott>
Project Member
Wed Feb 22 16:00:36 2012, comment #11:

Ah -- sorry.

I know gnuplot works fine, I use it all the time from maxima.

Edd Barrett <vext01>
Wed Feb 22 14:50:24 2012, comment #10:

Please try that from gnuplot not from Octave.

Ben Abbott <bpabbott>
Project Member
Wed Feb 22 14:47:51 2012, comment #9:


Are these tools required for x11 rendering?

Edd Barrett <vext01>
Wed Feb 22 14:37:37 2012, comment #8:

From your earlier comment the hang is occurring when Octave waits for gnuplot to respond to "print GPVAL_TERM"

Please run gnuplot and type "print GPVAL_TERM". What is the result ?

On MacOS I see the result below.

Since you are running OpenBSD, I expect you'll see "x11" instead of "aqua". Perhaps you'll get some thing else?

Ben Abbott <bpabbott>
Project Member
Wed Feb 22 11:24:43 2012, comment #7:

This is still an issue with 3.6.1rc0 using gnuplot-4.4.3.

octave:1> plot([1 2 3])

Edd Barrett <vext01>
Wed Nov 23 01:00:08 2011, comment #6:

I've changed the category to gnuplot.

Edd, What version of gnuplot do you have installed?

Have you looked at _gnuplot_get_var_.m to attempt to debug the problem?

Ben Abbott <bpabbott>
Project Member
Wed Nov 9 16:06:19 2011, comment #5:

Further findings:

Having found the octave debugger, i can tell you that the hang I am experiencing is reported to be:

I obtained this by pressing ctrl+c with debug_on_interrupt set. I did this a number of times (3 times, rebooting inbetween), incase this code is looping.

If I issue a 'dbcont' after interrupting, everything continues fine and the plot is drawn just fine.

The code of interest here is:

I actually believe that octave is stuck on the previous line:

As an fgets would explain the read() we see in the ktrace output.

Looking at the code for fgets:

I was interested in seeing if the call to os.gets() ever returns. However, putting a 'std::cout()' either side of it seems to "fix" the issue altogether(!?*) but why? -- I will not settle with that as a fix; I still think this code is racing.

I was hoping the octave community would have commented by now. Can someone please lend a hand here?

Edd Barrett <vext01>
Wed Nov 9 09:51:47 2011, comment #4:

Further findings:

I have built the entirety of octave-3.4.3 with -O0 and the hang still happens, however, I notice only the first plot hangs; you can hit ctrl+c and try again and it will work; as will subsequent plots.

I think we have a race condition on our hands and building with -O0 has changed the timings of things. After you have hit ctrl+c on the first plot, the only way to reproduce the plot hang is to reboot (weird, yes). This is why I think it is a race condition.

Further inspection with ktrace (like strace) shows differing behavior with regards to a fifo in /tmp.

A failing plot looks like this:

(The poll is the hang, notice the failed read() syscall).

Whereas the same area of execution on a working plot looks like:

(Notice that read DID NOT fail this time)

I suspscted the gnulib::mkfifo() at first, but if i remove the gnulib prefix, so as to use openbsd's implementation, the same happens.

Looks like a race condition to me (right?)

I am out of time for now, but my question now is, do we know where in the code this fifo is being made? Does gnuplot output to a pipe and octave picks it up? Is it the case that octave is reading from the pipe before gnuplot is done?

Comments and ideas welcome.


Edd Barrett <vext01>
Mon Nov 7 12:04:53 2011, comment #3:

Hi Ben,

I am an OpenBSD developer attempting to bring our old package up to date.

I tried putting some debug std::couting in the gnuplot class and oddly got the same error as running with gdb. This could be a compiler bug? I will try turning the optimiser off perhaps?

Edd Barrett <vext01>
Sun Nov 6 01:46:41 2011, comment #2:

Are you building Octave yourself, or using your package manager?

Ben Abbott <bpabbott>
Project Member
Sat Nov 5 12:08:37 2011, comment #1:

Enabling fltk for native graphics does not seem to help either.

Edd Barrett <vext01>
Sat Nov 5 01:39:15 2011, original submission:


On OpenBSD plotting hangs:

If I set the LD_LIBRARY_PATH manually and use gdb (as opposed to using run_octave), something different happens:

Not sure how to go about this...

Edd Barrett <vext01>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by mtmiller (Posted a comment)
  • -unavailable- added by bpabbott (Posted a comment)
  • -unavailable- added by vext01 (Submitted the item)
  • -unavailable- added by vext01

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    Follow 4 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu Aug 8 03:17:41 2013mtmillerStatusNone=>Fixed
    Wed Nov 23 01:00:08 2011bpabbottCategoryPlotting=>Plotting with gnuplot
    Sat Nov 5 01:39:15 2011vext01Carbon-Copy-=>Added -unavailable-

    Back to the top

    Powered by Savane 3.1-cleanup1