gcj -v: Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/../../../libgcj.spec rename spec lib to liborig Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --enable-__cxa_atexit --with-system-zlib --enable-nls --without-included-gettext --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux Thread model: posix gcc version 3.3.5 (Debian 1:3.3.5-13)
error output: gcj -C vira/viraNoSpaceException.java gcj -C vira/server/server.java vira/server/server.java: In class `vira.server.server': vira/server/server.java: In method `vira.server.server.accept(java.nio.channels.SocketChannel)': vira/server/server.java:241: internal compiler error: in generate_bytecode_insns, at java/jcf-write.c:1988 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. For Debian GNU/Linux specific bug reporting instructions, see <URL:file:///usr/share/doc/gcc-3.3/README.Bugs>. make: *** [server] Error 1 (5 of 11): internal compiler error: in generate_bytecode_insns, at java/jcf-write.c:1988 Also tried compile with javac, the result: vira/server/server.java:241: cannot assign a value to final variable ember_id ember e=new ember_oszt(ember_id++, jt); ^ Code: public class server { /* statikus mezok */ private static final int hostport=8000; private static final int RECVBUF=2; //egy char-t varunk private static final int SENDBUF=jatekter_oszt.bytebuflen(); private static final int MAXCONNS=4; //hanyan jatszhatnak private static final int REPLY_TIMEOUT=2; //egy kapcsolodo kliensnek meddig probaljon kuldeni private static final int ember_id=0; //egyedi azonosito: mindig egyel no, ahanyszor uj ember jon /* konstruktorok */ public server() { /* jatekmezo inicializalasa */ jt=new jatekter_oszt(); /* server felallitasa */ try { //Create the server socket channel server = ServerSocketChannel.open(); // nonblocking I/O server.configureBlocking(false); // using wildcard address, which means any, specially the local host, and can only be used with bind server.socket().bind(new java.net.InetSocketAddress(hostport)); System.out.println("Server attivo porta "+hostport); // Create the selector selector = Selector.open(); // Recording server to selector (type OP_ACCEPT) server.register(selector, SelectionKey.OP_ACCEPT); } catch(IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(1); } conns=new ArrayList(); emberek=new ArrayList(); regiido=(Calendar.getInstance()).getTimeInMillis(); } /* metodusok */ public void serverloop() { //Infinite server loop for(;;) { try { // Waiting for events (no timeout) selector.select(); } catch(IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(1); } // Get keys Set keys = selector.selectedKeys(); Iterator i = keys.iterator(); // For each keys... while(i.hasNext()) { SelectionKey key = (SelectionKey) i.next(); // Remove the current key i.remove(); try { processSelectionKey(key); //System.out.println("end"); } catch(IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(1); } } } } private void processSelectionKey(SelectionKey key) throws IOException { // if isAccetable = true // then a client required a connection // get client socket channel //System.out.println("proc"); if(key.isAcceptable()) { SocketChannel client = server.accept(); if(conns.size()<MAXCONNS) { accept(client); jt.kirajzol(); } else { client.close(); return; } } // if isReadable = true // then the server is ready to read if (key.isReadable()) { System.out.println("isread"); SocketChannel client = (SocketChannel)key.channel(); ember e=(ember_oszt)emberek.get( conns.indexOf(client) ); // a socket alapjan: kirol van szo // Read byte coming from the client ByteBuffer buffer = ByteBuffer.allocate(RECVBUF); try { if(-1==(client.read(buffer))) { closeconn(client, e); return; } } catch (IOException ioe) { // client is no longer active System.out.println(ioe.getMessage()); ioe.printStackTrace(); /* jatekbol kilepes */ closeconn(client, e); return; } // Show bytes on the console try { if(e.el()) { switch ((int)buffer.getChar(0)) { case '4' : e.odebbmegy(-1); break; case '6' : e.odebbmegy(1); break; case '2' : e.odebbmegy(-2); break; case '8' : e.odebbmegy(2); break; case '5' : e.ralep(new ter_oszt()); break; case '7' : e.aknasit(); break; case '9' : int faj=(int)(Math.random()*3); e.ultet(faj); System.out.println("fajta: "+faj); break; case '1' : e.letapos(); break; default : return; } jt.kirajzol(); ByteBuffer b=ByteBuffer.allocate(SENDBUF); b.clear(); b=jt.toByte(e); System.out.println("sent: "+client.write(b)); } } catch(NumberFormatException nfex) { System.out.println("\"" + nfex.getMessage() + "\" is not numeric"); closeconn(client, e); } } if (key.isWritable()) { SocketChannel client = (SocketChannel)key.channel(); ember e=(ember_oszt)emberek.get( conns.indexOf(client) ); // a socket alapjan: kirol van szo long ujido=(Calendar.getInstance()).getTimeInMillis(); boolean redraw=false; for(int it=0; it<ujido-regiido; it++) redraw=(redraw || jt.idotelik()); if(redraw) { jt.kirajzol(); ByteBuffer b=ByteBuffer.allocate(SENDBUF); b.clear(); b=jt.toByte(e); System.out.println("redraw: "+client.write(b)); } regiido=ujido; } } /* lezarja a jatek es a halozat kapcsolatait */ /* az eredmenyt kirajzolja */ private void closeconn(SocketChannel s, ember e) { conns.remove(s); try { // this also unregisters from select() s.close(); if(e.el()) jt.lelep(e.holvan(), e.id()); } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); System.exit(1); } emberek.remove(e); jt.kirajzol(); } /* uj kapcsolatot regisztral be halozati es jatek szinten */ private void accept(SocketChannel client) throws IOException { /* halozati beallitasok */ // Non Blocking I/O client.configureBlocking(false); // recording to the selector (reading) client.register(selector, SelectionKey.OP_READ|SelectionKey.OP_WRITE); /* nyilvantartasba vesszuk a kapcsolatot */ if(conns.contains(client)) { System.out.println("viragos_aknas: server: socket already registered; index in list: "+conns.indexOf(client)); client.close(); System.exit(1); } conns.add(client); /* jatekter modositasa */ //ember_oszt(int id, jatekter jt) ember e=new ember_oszt(ember_id++, jt); try { jt.ujember(e); } catch (viraNoSpaceException ex) { conns.remove(client); client.close(); return; } emberek.add(conns.indexOf(client), e); } private long regiido; private jatekter jt; private ServerSocketChannel server; private Selector selector; private List conns; private List emberek; } -- Summary: internal bug in compiler when assigning value to a static final field of java code Product: gcc Version: 3.3.5 Status: UNCONFIRMED Severity: normal Priority: P3 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kz447 at hszk dot bme dot hu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25664