Nie mogę zrozumieć co oznaczają błędy, które sypie aplikacja serwera:

java.io.StreamCorruptedException: invalid type code: AC

Serwer:

package ldoran.server;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

import ldoran.chat.user.ChatUser;

public class ServerCore {
    private static int connects = 0;
    private ServerSocket server;
    private ArrayList<Socket> socket;

    public ServerCore(int port) throws IOException {
        server = new ServerSocket(port);
        socket = new ArrayList<Socket>();
    }

    public ServerSocket getServerSocket() {
        return this.server;
    }

    //Create new connection
    public void add(Socket s) {
        synchronized(socket) {
            if(!socket.contains(s)) 
                socket.add(connects, s);

            Runnable run    = new ThreadServerCore(connects);
            Thread thread   = new Thread(run);
            thread.start();

            if(connects < socket.size()) {
                connects++;
                System.out.println("Connected: [" + connects + "]");
            }
        }
    }

    private class ThreadServerCore implements Runnable {
        private int index = 0;
        private ChatUser user;

        public ThreadServerCore(int i) {
            super();
            index = i;
            user = new ChatUser();
        }

        public void run() {
            try {
                ObjectInputStream in = new ObjectInputStream(socket.get(index).getInputStream());
                while(socket.get(index).isConnected()) {
                    synchronized(socket) {
                        for(int i = 0; i < socket.size(); i++) {    
                            user = null;
                            ObjectOutputStream out = new ObjectOutputStream(socket.get(i).getOutputStream());   

                            user = (ChatUser)in.readObject();
                            System.out.println(user.getName() + ": " + user.getMsg());

                            out.writeObject(user);
                            out.flush();                        
                        }
                    }
                }

                synchronized(socket) {
                    socket.get(index).close();
                    socket.remove(index);
                    index--;
                    connects--;
                    System.out.println("Connceted: [" + connects + "]");
                }
            } catch(Exception ex) {
                System.err.println(ex);
            }
        }
    }
}

[EDIT]:
Zauważyłem, że obiekt jest poprawnie wysyłany client->server
Problem tkwi w jego rozgłoszeniu przez serwer do reszty klientów