From owner-freebsd-java@FreeBSD.ORG Mon Oct 16 19:26:10 2006 Return-Path: X-Original-To: freebsd-java@freebsd.org Delivered-To: freebsd-java@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A968016A47B for ; Mon, 16 Oct 2006 19:26:10 +0000 (UTC) (envelope-from fireduck@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.189]) by mx1.FreeBSD.org (Postfix) with ESMTP id C11E643D88 for ; Mon, 16 Oct 2006 19:26:01 +0000 (GMT) (envelope-from fireduck@gmail.com) Received: by nf-out-0910.google.com with SMTP id p77so9009nfc for ; Mon, 16 Oct 2006 12:26:00 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=ZqH/VhYW0NwlowrrNyPRlCUlrQZqn9Cw4bgQ/24H+zEzbKLL01+V4EAzmRFXq5OjvGF72MIBJX8FHMARIN79+volH1TSfqBVQ7UprxuCLD3kaIFMWUeugQrROCqe2G5vkjyx723tBYaBAUHeMVeuwrGycfhmbcKXaNa1ehXn+WI= Received: by 10.82.105.13 with SMTP id d13mr1237263buc; Mon, 16 Oct 2006 12:25:59 -0700 (PDT) Received: by 10.82.190.1 with HTTP; Mon, 16 Oct 2006 12:25:59 -0700 (PDT) Message-ID: <7956f3200610161225w52ad626fveb8bd7f816f57bc4@mail.gmail.com> Date: Mon, 16 Oct 2006 15:25:59 -0400 From: "Joseph Gleason" To: freebsd-java@freebsd.org In-Reply-To: <7956f3200610161024o3598e217oba81116bd84a7c99@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <7956f3200610161024o3598e217oba81116bd84a7c99@mail.gmail.com> Subject: Re: Bug in java.net.Socket close() behavior? X-BeenThere: freebsd-java@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting Java to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Oct 2006 19:26:10 -0000 I have been informed that attachments are removed automaticly. Here is the code to the test program: import java.net.Socket; import java.io.InputStream; public class SocketCloseStreamTest { public static void main(String Args[]) throws Exception { new SocketCloseStreamTest(); } public SocketCloseStreamTest() throws Exception { Socket S=new Socket("tesla.fireduck.com",22); new ReadThread(S.getInputStream()).start(); Thread.sleep(2000); S.close(); System.out.println("Socket closed. Should see socket closed exception."); Thread.sleep(2000); } public class ReadThread extends Thread { InputStream In; public ReadThread(InputStream in) { In=in; } public void run() { try { int BlockSz=1024; byte[] buff=new byte[BlockSz]; while(true) { int readsize=In.read(buff,0,BlockSz); System.out.print("In: "); System.out.write(buff,0,readsize); System.out.println(); } } catch(Exception e) { e.printStackTrace(); } } } } On 10/16/06, Joseph Gleason wrote: > According to the API for java.net.Socket close(): > > "Any thread currently blocked in an I/O operation upon this socket > will throw a SocketException." > > http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html#close() > > I have observed that java 1.5 on FreeBSD does not follow this while > the Windows and Linux ones I have tested do. On the FreeBSD runtimes > that I have tested, a thread blocked on reading a socket just hangs > forever if the socket is closed. > > Attached is a simple program that tests this behavior. It just > connects to a port on one of my servers and has a reader thread > watching input from the socket and closes the socket in a different > thread to see if the reader thread gets an exception. > > Java runtimes that I have tested this on: > # java -version > java version "1.5.0" > Java(TM) 2 Runtime Environment, Standard Edition (build diablo-1.5.0-b01) > Java HotSpot(TM) 64-Bit Server VM (build diablo-1.5.0_07-b01, mixed mode) > > # java -version > java version "1.5.0-p2" > Java(TM) 2 Runtime Environment, Standard Edition (build > 1.5.0-p2-root_07_mar_2006_02_41) > Java HotSpot(TM) 64-Bit Server VM (build > 1.5.0-p2-root_07_mar_2006_02_41, mixed mode) > > >