Date: Fri, 7 Feb 2003 22:39:02 -0500 From: Brent Verner <brent@rcfile.org> To: freebsd-java@FreeBSD.ORG Cc: William Holt <wiholt@cabrillo.edu> Subject: Re: problem and workaround for java/tomcat on -current Message-ID: <20030208033902.GA5841@rcfile.org> In-Reply-To: <20030203105027.GA86700@rcfile.org> References: <20030203105027.GA86700@rcfile.org>
next in thread | previous in thread | raw e-mail | index | archive | help
To follow up on this, it appears (if I can trust gdb w/java), that Java_java_net_InetAddressImpl_getHostByAddr calls the gethostbyaddr_r in libc.so.5 instead of the one provided in native/java/net/InetAddressImpl.c, leaving hp == -1, which gives us the bus error -> abort. the system gethostbyaddr_r has a prototype of int gethostbyaddr_r(const char *, int len, int type, struct hostent *, struct hostent_data *) I've simply renamed the gethostby...._r to l_gethostby...._r, and am rebuilding now to verify this theory. I'll let yall know what the outcome is. Q: why would the locally provided gethostby...._r be named to conflict with a libc function? Q: what is the _right_ way to solve this if gdb showed me the truth, and the problem was an libc conflict? I'd think it would be best to continue to use the local gethostby...._r functions (especially considering that the ones in libc specifically note non-reentrancy). btw, is there a "correct" way to run the jvm under gdb? I ended up having to "jump" over a read() call that was hanging... thanks. b [2003-02-03 05:50] Brent Verner said: | Sometime after Jan 20, -current has been unable to run tomcat | (and other things, such as the Jetty issue William Holt reported). | I took his CrashBSD.java prog, and further determined that only | the "0.0.0.0" caused the bus error -> abort problem. | | import java.net.*; | public class CrashBSD | { | static public void main( String args[] ) | { | try | { | InetAddress a = InetAddress.getByName("127.0.0.1"); | ServerSocket sa = new ServerSocket(0,10,a); | System.out.println(sa); | InetAddress b = InetAddress.getByName("0.0.0.0"); | ServerSocket sb = new ServerSocket(0,10,b); | System.out.println(sb); | } | catch ( Exception e ) | { | System.out.println( e ); | System.exit( 1 ); | } | } | } | | You'll notice that the 127.0.0.1 InetAddress works just fine, but | the "0.0.0.0" addr causes the error. I dug a bit further into | what change since 20 Jan is causing this, but had no luck. However, | the problem can be worked around by adding a line in the /etc/hosts | for the "0" ip. | | 0.0.0.0 all.interfaces.on.this.machine | | What strange effects might this cause? I have no clue :-), but | tomcat seems to be happy again... | | hth, | brent | | | To Unsubscribe: send mail to majordomo@FreeBSD.org | with "unsubscribe freebsd-java" in the body of the message -- "Develop your talent, man, and leave the world something. Records are really gifts from people. To think that an artist would love you enough to share his music with anyone is a beautiful thing." -- Duane Allman To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030208033902.GA5841>