Igor Schein on Sat, 8 Jan 2000 00:37:34 -0500


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

Re: zeta/ploth bug


On Fri, Jan 07, 2000 at 01:21:24PM +0100, Karim BELABAS wrote:
> [Igor:]
> > ? ploth(x=-5,-4.99,real(zeta(x*I+x^2+x^3)))
> > [-5.000000000000000000000000000, -4.990000000000000213162820728, 6.497774210233059296627777801 E79, 4.946657447140776084782559651 E80]
> > ?   ***   bug in GP (Segmentation Fault), please report
> >   ***   bug in GP (Segmentation Fault), please report
> > 
> > At this point the session is badly corrupted and has to be killed.
> 
> An interesting bug. There was a buffer overflow when creating a label larger
> than 10^16 (for the bounding box). In fact, I tried the X-Windows version
> (default) and the worse things (infinite sequence of SIGBUS and SIGSEGV)
> happened in a forked process. So killing the original GP wasn't enough: I had
> to kill the underlying terminal...
> 
> I changed the format specification so that only 5 significant digits are
> given. This is arbitrary, but since the precise coordinates are part of the
> return value, I don't think there's a need for higher precision there.

There're still problems after the patch:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
? ploth(x=-1,1,imag(zeta(sin(x*I))));
? ploth(x=-2,2,imag(zeta(sin(x*I))));
^C  ***   user interrupt after -10 ms.

  ***   bug in GP (Segmentation Fault), please report
?   ***   user interrupt after 5,060 ms.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

The first command outputs a window with a graph, but the session is
already corrupted, and interrupting the second command results in unusable
session, as before.

Thanks

Igor

P.S.

On a side note, I realized why ploth() didn't work for me before.  It
runs on a Solaris machine, but I physically sit at a SunOS machine
with OpenWindows.  For some reason, Solaris gnuplot doesn't display
under OpenWindows.  Go figure.