-
Bug
-
Resolution: Cannot Reproduce
-
P5
-
None
-
1.1
-
sparc
-
solaris_2.5.1
Name: mc57594 Date: 03/13/97
The problem appears to be a bad Gif file. However, the one I
am using was created using imagetool to convert one of the
CDE images to a GIF (just for testing). I have attached the
ImageCanvas code, testing code, the html to launch, the
traceback output and the uuencoded guilty Gif file.
The codes were compiled using
javac -deprecation -d $DEVELHOME/classes
And run using
${JAVA_HOME}/bin/java -verbosegc -noverify
-----------------------------------------------------------------
package pal.awt;
//
// Copyright, Pair-a-Links Consulting Inc., 1997
//
// %Z%%M% %I% %E%
//
import java.awt.*;
import java.io.Serializable;
import pal.lang.Traceable;
//////////////////////////////////////////////////////////////////////
/**
This class provides a simple way to place a static image onscreen.
The canvas will automatically size itself to contain the image.
@author Carl Linkletter
@version %I% %E%
*/
//////////////////////////////////////////////////////////////////////
public class ImageCanvas extends Canvas
implements Serializable, Cloneable, Traceable {
private static String internalVersion="%Z%%M% %I% %E%";
private static String copyright="Copyright, Pair-a-Links Consulting In
c., 1997";
private Image image;
//////////////////////////////////////////////////////////////////////
/**
Create a new ImageCanvas without an image in it. The size will be
set to 10X10 but you should call <tt>setImage</tt> and set the image
to display.
*/
//////////////////////////////////////////////////////////////////////
public ImageCanvas() {
super();
}
//////////////////////////////////////////////////////////////////////
/**
Create a new ImageCanvas and display the image <tt>img</tt> in it.
@param img The image to be displayed. Note: if this image has not
already been downloaded, it will be now.
*/
//////////////////////////////////////////////////////////////////////
public ImageCanvas(Image img) {
super();
if (img != null) setImage(img);
}
//////////////////////////////////////////////////////////////////////
/**
Get the image which is being displayed.
@return The image which is being displayed or null if none has been set.
*/
//////////////////////////////////////////////////////////////////////
public Image getImage() {
return image;
}
//////////////////////////////////////////////////////////////////////
/**
Return the minimum size allowed to display the image. This method is
used by the LayoutManager<tt>s</tt>.
@return The dimensions of the Image.
*/
//////////////////////////////////////////////////////////////////////
public Dimension getMinimumSize() {
Dimension ans;
if (image != null) {
ans = new Dimension(image.getWidth(this), image.getHeight(this));
if (ans.height <= 0) ans.height = 10; // In case there are problems
if (ans.width <= 0) ans.width = 10; // downloading.
} else {
ans = new Dimension(10,10);
}
return ans;
}
//////////////////////////////////////////////////////////////////////
/**
Return the preferred size display the image. This method is
used by the LayoutManager<tt>s</tt>.
@return The dimensions of the Image.
*/
//////////////////////////////////////////////////////////////////////
public Dimension getPreferredSize() {
return getMinimumSize();
}
//////////////////////////////////////////////////////////////////////
/**
This method is used to actually draw the image. Do not override.
*/
//////////////////////////////////////////////////////////////////////
public void paint(Graphics g) {
if (image != null) {
g.drawImage(image, 0, 0, this);
}
}
//////////////////////////////////////////////////////////////////////
/**
Change the image to be displayed.
@param img The image to be displayed. The canvas will resize to fit
the new image size.
*/
//////////////////////////////////////////////////////////////////////
public void setImage(Image img) {
img.getHeight(this); // Throw a null pointer exception if img null
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 1);
try {
mt.waitForID(1); // Force Download so Dimensions are available
} catch (InterruptedException e) { }
image = img;
Container parent = getParent();
if (parent != null) { // If onscreen
invalidate();
parent.validate();
repaint();
}
}
}
// Testing Code
import java.awt.*;
import java.applet.*;
import java.net.*;
import pal.awt.*;
public class foo extends Applet {
Image img;
ImageCanvas ic;
public void init() {
img = getMyImage(getParameter("image"));
ic = new ImageCanvas(img);
add(ic);
}
public Image getMyImage(String surl) {
URL url = null;
Image ans = null;
try {
url = new URL(surl);
} catch (MalformedURLException e) {
System.err.println("URL Exception");
System.exit(1);
}
ans = Toolkit.getDefaultToolkit().getImage(url);
return ans;
}
}
-----------------------------------------------------------------
<html>
<applet code=foo.class height=100 width=100>
<param name=image value=file:/tmp/Leaves.gif>
</applet>
</html>
-----------------------------------------------------------------
SIGFPE 8* arithmetic exception
si_signo [8]: SIGFPE 8* arithmetic exception
si_errno [0]: Error 0
si_code [1]: FPE_INTOVF [addr: 0xef4f6e68]
stackbase=EE029000, stackpointer=EE0288B0
Full thread dump:
"Image Fetcher 0" (TID:0xee76bb60, sys_thread_t:0xee028de0, state:R) prio=3
*current thread*
sun.awt.image.ImageRepresentation.imageComplete(ImageRepresentation.java
:248)
sun.awt.image.PixelStore.replay(PixelStore.java:241)
sun.awt.image.PixelStore.replay(PixelStore.java:161)
sun.awt.image.InputStreamImageSource.updateFromStore(InputStreamImageSou
rce.java:267)
sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java
:211)
sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:139)
sun.awt.image.ImageFetcher.run(ImageFetcher.java:116)
"Screen Updater" (TID:0xee76cd40, sys_thread_t:0xee006de0, state:CW) prio=4
java.lang.Object.wait(Object.java)
sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
"AWT-Motif" (TID:0xee76caf0, sys_thread_t:0xee04ade0, state:CW) prio=5
java.lang.Thread.run(Thread.java)
"AWT-Input" (TID:0xee76cad0, sys_thread_t:0xee06cde0, state:MW) prio=5
"AWT-EventQueue-0" (TID:0xee76cab8, sys_thread_t:0xee08ede0, state:CW) prio=
5
java.awt.EventQueue.getNextEvent(EventQueue.java)
java.awt.EventDispatchThread.run(EventDispatchThread.java)
"thread applet-foo.class" (TID:0xee76bd78, sys_thread_t:0xee353de0, state:CW
) prio=4
java.awt.MediaTracker.waitForID(MediaTracker.java:515)
java.awt.MediaTracker.waitForID(MediaTracker.java:476)
pal.awt.ImageCanvas.setImage(ImageCanvas.java:114)
pal.awt.ImageCanvas.<init>(ImageCanvas.java:48)
foo.init(foo.java:13)
sun.applet.AppletPanel.run(AppletPanel.java:273)
java.lang.Thread.run(Thread.java)
"Finalizer thread" (TID:0xee75f220, sys_thread_t:0xee375de0, state:CW) prio=
1
"Async Garbage Collector" (TID:0xee75f1d8, sys_thread_t:0xee397de0, state:R)
prio=1
"Idle thread" (TID:0xee75f190, sys_thread_t:0xee3b9de0, state:R) prio=0
"Clock" (TID:0xee75f0d0, sys_thread_t:0xee3dbde0, state:CW) prio=12
"main" (TID:0xee75f0a8, sys_thread_t:0x6e650, state:CW) prio=5
Monitor Cache Dump:
sun.awt.image.PixelStore8@EE76B7C0/EE7E4AD8 (key=0xee76b7c0): monit
or owner ee028de0: "Image Fetcher 0"
java.awt.MediaTracker@EE76B760/EE7E8410 (key=0xee76b760): unowned
Waiting to be notified:
"thread applet-foo.class"
java.awt.EventQueue@EE76CA68/EE7DF618 (key=0xee76ca68): unowned
Waiting to be notified:
"AWT-EventQueue-0"
unknown key (key=0xee397de0): monitor owner ee397de0: "Async Garbag
e Collector"
sun.awt.motif.MToolkit@EE76CA58/EE7CD2B8 (key=0xee76ca58): monitor
owner ee028de0: "Image Fetcher 0"
Waiting to enter:
"AWT-Input"
Waiting to be notified:
"AWT-Motif"
sun.awt.ScreenUpdater@EE76CD40/EE7DBDD8 (key=0xee76cd40): unowned
Waiting to be notified:
"Screen Updater"
Registered Monitor Dump:
Thread queue lock: unowned
Waiting to be notified:
"main"
Name and type hash table lock: unowned
String intern lock: unowned
JNI global reference lock: unowned
BinClass lock: unowned
Class loading lock: unowned
Java stack lock: unowned
Code rewrite lock: unowned
Heap lock: unowned
Has finalization queue lock: unowned
Finalize me queue lock: unowned
Waiting to be notified:
"Finalizer thread"
Monitor IO lock: unowned
Child death monitor: unowned
Event monitor: unowned
I/O monitor: unowned
Alarm monitor: unowned
Waiting to be notified:
"Clock"
Sbrk lock: unowned
Monitor cache expansion lock: unowned
Monitor registry: monitor owner ee028de0: "Image Fetcher 0"
Thread Alarm Q:
-----------------------------------------------------------------
begin 640 Leaves.gif
M1TE&.#=A: " .< &-C8P '-S<P
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M "P : " (_@ @$$&#BPX$&!" DF5(@P
MP,*%#"-.G%CP846&&B\J--C1H,2.(26&;$@18T*.(C6RQ(BRHLJ/&T'2/&G2
M(\>(#VV^9#F3X,6@&2'*;(E3YDB/1E'&I.CP(U&546>21+H2IM&G4*7Z5/J2
MJU::.)D._>ET)=BN,8NJ72K6[<Z,0%WFM&BV8=FT5^5V_=F2+-3 9>62=:E5
MZ-V>;[_BO8OU<4[#0!.+C$LU9>"DC3%/18M6:.3)3WEBAFSS\=ZV=3-C!=U:
M].JZH67#SOMZ,MC3E2-S#?T:]%2(AHG"O=S6]N^:K8/231Y\>674B)<RQDW8
M,VW8KIG;I2VU]VWO_IP%A\?=E/ME[LT[YTX^5&]INV(+$Y\M_WMB^VLWZHT;
MVZMMW@D(7'?AB8?8?ZNE-AQ,ZLU5((*_.2@<@_6Y1]IAV#7HG'K;02<;<.M)
MI^%6V$EVX(/F;0CA8/6YEN%S[14E(X&S6;A<;S6BQZ!U[_D$GG'L>;:A;_A%
MF!Z(5PE)Y&?6Q9B7<$ZJ2""'4OK78WD"#HEB9 ((D)Z&.CH'YH]@6JAEE!,J
M)$ 7GK9)&]450B9CSTFR"67 GG9IIM?1I=F:0>>N.*92'EX9IX%L>DFG_-E
MIN:.D;)&:&'\R8FEHFRF^69W+T:5Y(,ZC58;D* :^2A(?"[JYJA3[E:C_HIT
MGO@ID?J9%M2J>^[9X'84=EI@I\%-9^.86AX$T9ZJ?IE@BKTZ&>%Y4OH(:Z(.
MY:HI9V(^"6EL@#E$[:&A_KAJF\*Q>2RE%GUJ9)PNJJL=KTS*]B6C]9:[ZK/K
MLM@N<R)"*RR3XFJD:[+E4EBN<DGR:^6[%1[:X;O=+:LIO:HBB^RRW(9ZI;;W
M^>KP: H/?/&Y "QJ\,FC AKCNL2:IF3+&M-*U,FYWJOIO7"*&ZZ.(3X+X[ZP
MZDDRRO>V:2*.4[)\F(@;0SCS<O1*W2>?YH;8X=+NIDFKB3/;ZK644IML<K(I
M5TFVPEQO/=>$#D/J*D=ORDV0K@CO+!K5=]LG_FNS;X/]-=GTCEVSGR#&C7%*
M^@*\,K'M6LKSUC3K67')Y_HZ,KYA-JSNUS9&SK:5LRV;D> 1VSNVTLV&;CC@
MV2G^<.!TZXEZ3'V22RW;O$%>+96(8HFZX%)?%#S*HSONN(&]KJSWWZZ)';R?
M+-F.[+=V0IRUYM(^![=\@Y<N_$!3FVMYB\.U'3JP'G)OLJ+ 3S[XV"%1??1G
M)'6;.N.7FG]KO7*S&GQ1IE>HD;RN2E!K$91P0Z[_S:YTF('>HO#"$V<M#TV[
M<5J(\&6[YRFE(E,KG*/"!+6>_:PDO\K)N:C6)X-$3RXM;(IVUB;#6HV)A8F;
M$L%(ML(.J@2$2R*5_J<BQC.^*(5\P+G6W&S'P[^@9G;YPQK0H@02\GFD8@RC
MVP8YU4*E3:>(\4/2SS;FK0YZ#UM_FYW[T'BE%V[&3Y:+&9I\0\;PT?&+S4.C
M%T5#M@;:$'[1.R &]<86+_HO8X_K"QZM$ST'UK&%;SQ>MUY41?AY#W7X0\]8
M@++(1+J1CG^L'H]4MA\^HE%L*@.6'KDVQP9VTI+*N]Z0"+E' #(JD#VI"G%6
MF4:O@&PM!9PD"QWX2?4U!CY^(2/QS,.N&4KD>\^;VG@ 148%>1*1>83;VLS2
MK_=!<(###@###.###==E!1DXK;=F,6^PR%;C_06R< "+B%N=HR(\U#FE1R:(2_AVX
MO3Y:\ITF[,LB!37"$RHR9?C\DSSKZ$]Q5I&"9Z3GO@BW0N-UT8;"#*=F)GDU
M>.VDGI&S&26S(\M-;O$A6RP9@,R9NX ]<7+1RN8UQ3G*3_+258*,F80FY\,F
M]I%3FQD,/U/%12E.<$ %G9]-5QG/FBIFFO&2I(S*TLFCY2U6%MUC/U.:T:S:
MU"GG@>%+K/B_'>YGDUS-Y&H@2#UT=:8\QO')6&?)*G05$8"-%"I1PU>V]O$M
M;71B"/3D2DI$VG6I(<,*HZ(T5X95,(X<!-Y$73E)<JHF<<,;W^FV!:ZEK1.K
MG62D"<E9DEP>Q6"(JQGGG@;$'@76CY2D*6 5_AK.GH:/:-,S'O>$1* /]M.L
ML 6F"=>B1;U2K&K)LF<"]S;1Q9)2</]<)3I;Z3_,8HQ5+.L7> RCQ<!^MJ3@
ME"SU'%G&ZIJ64ZZK$W8'YMK'RA:0?<RE*?UHM=R]25@'"];]VO=92N)QIP#U
MS [=6+&;'<Q?"-6:5;^W7MD"]9TDO:K1#E;+5]:/@L$D9SQ?V-:W9+&Y=9.P
M>==WE@'V,'8,-*P<\3+<5K*R:$8+XW]:Y579=7ANB231515L23=>[&9F3 N/
M@'S/,LZ5D<.<"&RE>^/:XDQ5+-U+>Z+U0?_MLB;KH=]^N4K5:RU.2=<!*TUX
M2TNM?JC*2U368K=%_M=BC8?(-D9Q#2F;*H3Y-+LC<HOF%H)/%I_F<\U\;U/%
M8Q5ISK@XF2+8F&^H9H0L$H0BO!!;]E<=#]:8AT$4=)E&O)CT966T4)8>HFU,
M'K]H>M2"&2-K*I7JFTQ,U,B9=%2I"4@8!FI+-QE*AZTRR*8.,I:EY=NH@3PI
M;K+/RS\]9C%K?19C,V;&WE+0D64Z6PR9Z<Y]H=&I=3W*^"S[V&U.F&.._<]Q
MB_LH;S'W'/MSG7*CN]?+[G:OW[D97N.YV[><4;N_>^ZL(%(WTVZW,6]S;D_K
MFJ%.A>Z^=^W4JL@[WQ*<;:0/GFYDK]O=TI8WP_O-T*U2/-[VQG>9$NYQ_G;/
M6^(+!SG #<[Q@O-;Y T_#KF-#?,01MSE+R\UNK?]\($GG. \S[FW#:[OC/<MXK[,]W.1OG.@)_WC+P<WQ'T.;Z''.]E/5\S1GSYRB^\[YNF&]U:#>_-_+]WF
M73>WU\FC&883_3@77[K84X-QA)=;YVWG=](WKLN[7_OD0;>FU^-><IK['9<I
MG[O;-UWVOP_^UG.?M*E17O.WQU+P.F=YR+G^T[OC7-^+5P[)';^@[Z9=\2.B
M-:TW+_%WJ]SA+6=]R)-"S8[7N_'>#OR_ 2/[AQ-=07SWN>8S?F_0WWKM8:E]
AS=E^=I>C6M,9'67G,Z_QV9-6ZMR>N-9'?W6C [\E( [
end
company - Summit Network Integrators Corp. , email - ###@###.###
======================================================================