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