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

 
 

bug #34750: Plotting Hangs on OpenBSD

Submitted by:  Edd Barrett <vext01>
Submitted on:  Sat 05 Nov 2011 01:39:15 AM UTC  
 
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 08 Aug 2013 03:17:41 AM UTC, 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 Member
Wed 22 Feb 2012 05:00:16 PM UTC, 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.

https://mailman.cae.wisc.edu/listinfo/help-octave

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

Ah -- sorry.

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

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

Please try that from gnuplot not from Octave.

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

hrm...

Are these tools required for x11 rendering?

Edd Barrett <vext01>
Wed 22 Feb 2012 02:37:37 PM UTC, 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 22 Feb 2012 11:24:43 AM UTC, comment #7:

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

octave:1> plot([1 2 3])
<hangs...>

Edd Barrett <vext01>
Wed 23 Nov 2011 01:00:08 AM UTC, 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 09 Nov 2011 04:06:19 PM UTC, 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 09 Nov 2011 09:51:47 AM UTC, 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.

Cheers

Edd Barrett <vext01>
Mon 07 Nov 2011 12:04:53 PM UTC, 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 06 Nov 2011 01:46:41 AM UTC, comment #2:

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

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

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

Edd Barrett <vext01>
Sat 05 Nov 2011 01:39:15 AM UTC, original submission:

Hi,

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):
   
   
Comment:
   

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 08 Aug 2013 03:17:41 AM UTCmtmillerStatusNone=>Fixed
      Open/ClosedOpen=>Closed
    Wed 23 Nov 2011 01:00:08 AM UTCbpabbottCategoryPlotting=>Plotting with gnuplot
    Sat 05 Nov 2011 01:39:15 AM UTCvext01Carbon-Copy-=>Added -unavailable-

    Back to the top


    Powered by Savane 3.1-cleanup