Looking at the docs for IPC::Open3, I see the
warning:

    If you try to read from the child's stdout writer
    and their stderr writer, you'll have problems with
    blocking, which means you'll want to use select()
    or the IO::Select, which means you'd best use
    sysread() instead of readline() for normal stuff.

and I notice in the open3() call that you have
both $err opened to child STDOUT and STDERR.
Maybe that is triggering the problem.

Would it be possible to redirect STDERR to
STDOUT and then just open the one?

--Chris

On Tue, Feb 12, 2013 at 11:05 AM, Chris Marshall <[email protected]> wrote:
> Still hangs.  My guess is a problem with binary
> data.  I could not see where the input handle
> was opened and had binmode set.  Is there a
> way to force ascii mode so I could at least
> see if that is the source of the problem?
>
> --Chris
>
> On Tue, Feb 12, 2013 at 10:17 AM, Craig DeForest
> <[email protected]> wrote:
>> Hi, Chris,
>>
>> Thanks very much for giving this another look!
>>
>> Your image example definitely found a bug.  The long delay does not happen 
>> for me under either Linux or MacOS.  I suspect that there might a problem 
>> with Cygwin IPC that needs to be worked around - the pipe seems to be 
>> hanging up for some reason.
>>
>> As a simple test case, why not try
>>
>>  PDL::Graphics::Gnuplot::image(rvals(5,5))
>>
>> which should produce something very quickly?  If *that* doesn't work, then 
>> we need to get someone with a Cygwin system and an afternoon to try to 
>> understand why it is failing.  I could do that except for the part about 
>> having a Cygwin system.  Would you be willing to let me ssh into your 
>> virtual machine some time?
>>
>> Cheers,
>> Craig
>>
>>
>>
>> On Feb 12, 2013, at 8:04 AM, Chris Marshall <[email protected]> wrote:
>>
>>> Hi Craig-
>>>
>>> I'm trying again with the PDL::Graphics::Gnuplot on
>>> my cygwin/win7 system to sort things out before the
>>> coming PDL-2.4.12 release.
>>>
>>> Starting with the tutorial on the wiki, I have a
>>> few questions/observations:
>>>
>>> - the terminal type seems to need quotes, 'png'
>>> - how can I list terminal types from perl
>>> - the default empty string gives terminal type ''
>>>  (this breaks the mouse click examples saying
>>>   that '' terminal does not support it---even though
>>>   the default for my system is 'x11'
>>> - reading mouse on 'x11' gave no $status hash
>>>
>>> Finally, I got a window open and displaying ok,
>>> so I tried to display an image.  Boom!  This is
>>> a bit disheartening since the image was small
>>> and doing images with plot overlays is specifically
>>> what I need (often) to comprehend image data.
>>>
>>> I'm hoping it is a bug somewhere that can be
>>> fixed.  Here is the output from my pdl2
>>> session.  The image is a shape [3,320,80]
>>> float piddle with pixels in [0,1] and badvalues.
>>>
>>> pdl> use PDL::Graphics::Gnuplot
>>> pdl> $hsv40 = get_hsv_frame(40);
>>> Loading get_hsv_frame.pdl ...found ./crank/get_hsv_frame.pdl
>>> pdl> PDL::Graphics::Gnuplot::image( {cbrange=>[0,1]}, $hsv40->mv(0,-1)
>>> )
>>> Runtime error: Hmmm, my main Gnuplot process didn't respond for 60 seconds.
>>> This could be a bug in PDL::Graphics::Gnuplot or gnuplot itself --
>>> although for some terminals (like x11) it could be because of a
>>> slow network.  If you don't think it is a network problem, please
>>> report it as a PDL::Graphics::Gnuplot bug.  You might be able to
>>> ignore this message, or you might have to restart() the object.
>>> If you are getting this message spuriously, you might like to
>>> set the "wait" terminal option to a longer value (in seconds).
>>> at /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 6030.
>>>        
>>> PDL::Graphics::Gnuplot::_checkpoint('PDL::Graphics::Gnuplot=HASH(0x820c3e48)',
>>> 'main', 'HASH(0x82098438)') called at
>>> /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 2462
>>>        PDL::Graphics::Gnuplot::plot(undef, undef,
>>> 'PDL=SCALAR(0x820bdcb0)') called at
>>> /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 3098
>>>        PDL::Graphics::Gnuplot::image('HASH(0x825d8bb0)',
>>> 'PDL=SCALAR(0x820bdcb0)') called at (eval 466) line 5
>>> pdl> PDL::Graphics::Gnuplot::image( {cbrange=>[0,1]},
>>> $hsv40->mv(0,-1)->setbadtoval(0) )
>>> Runtime error: Hmmm, my main Gnuplot process didn't respond for 60 seconds.
>>> This could be a bug in PDL::Graphics::Gnuplot or gnuplot itself --
>>> although for some terminals (like x11) it could be because of a
>>> slow network.  If you don't think it is a network problem, please
>>> report it as a PDL::Graphics::Gnuplot bug.  You might be able to
>>> ignore this message, or you might have to restart() the object.
>>> If you are getting this message spuriously, you might like to
>>> set the "wait" terminal option to a longer value (in seconds).
>>> at /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 6030.
>>>        
>>> PDL::Graphics::Gnuplot::_checkpoint('PDL::Graphics::Gnuplot=HASH(0x820c3e48)',
>>> 'main', 'HASH(0x825c60c0)') called at
>>> /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 2389
>>>        PDL::Graphics::Gnuplot::plot(undef, undef,
>>> 'PDL=SCALAR(0x825ccb28)') called at
>>> /cygdrive/f/perl/local/lib/perl5/PDL/Graphics/Gnuplot.pm line 3098
>>>        PDL::Graphics::Gnuplot::image('HASH(0x8210deb0)',
>>> 'PDL=SCALAR(0x825ccb28)') called at (eval 475) line 5
>>>
>>> Hope this gives you some ideas.  Do you have
>>> a working image example that I could try?
>>>
>>> Thanks,
>>> Chris
>>>
>>

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to