From owner-freebsd-java@FreeBSD.ORG Mon Feb 4 17:00:21 2013 Return-Path: Delivered-To: freebsd-java@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E3AE1487 for ; Mon, 4 Feb 2013 17:00:21 +0000 (UTC) (envelope-from achill@matrix.gatewaynet.com) Received: from smadev.internal.net (adsltrust.ath.forthnet.gr [194.219.204.174]) by mx1.freebsd.org (Postfix) with ESMTP id EC9ABA72 for ; Mon, 4 Feb 2013 17:00:20 +0000 (UTC) X-Bogosity: No, tests=bogofilter Received: from smadev.internal.net (localhost [127.0.0.1]) by smadev.internal.net (8.14.5/8.14.5) with ESMTP id r14H0JvE008151 for ; Mon, 4 Feb 2013 19:00:19 +0200 (EET) (envelope-from achill@matrix.gatewaynet.com) Received: (from achill@localhost) by smadev.internal.net (8.14.5/8.14.5/Submit) id r14H0I66008150 for freebsd-java@freebsd.org; Mon, 4 Feb 2013 19:00:18 +0200 (EET) (envelope-from achill@matrix.gatewaynet.com) X-Authentication-Warning: smadev.internal.net: achill set sender to achill@matrix.gatewaynet.com using -f From: Achilleas Mantzios To: freebsd-java@freebsd.org Subject: Re: Re: Re: Re: Re: FreeBSD pl/java problem : backend hangs Date: Mon, 04 Feb 2013 19:00:18 +0200 Message-ID: <1917151.YiRb4P31Ma@smadev.internal.net> Organization: Dynacom Tankers Mgmt X-Face: "g.Z.Lx$T1ZMcQ%hC!e^E&tD,cT:"bTs45WM(,vUj@8QBz6}T'sn+EnZTzy`UVQ:&A=`_; f)V+K4z}rG5:(uu[b:WY'*`6F"ou-Or(q; u{#Gxx|MkO4E.vh@E}[#7Ytt"shtU>A&@CO` a|Wx]m_wRD,?4!'Ir1$4iis{/.WU<`#dhKI]g2w^!B[CvRJr+W|; -VS~QcL!s1"'??rct} ^=5Fa!W!{a}Jd:W%6,E[N\r-<)T'_N[~3fy9pF"b>-Yj^p}/2tPudP>I"$%w]"W4CIja6J Tajm}"8t`-hJlf2kRQ_V,eT_kN6KLG+~2mZ+cPX,p,xQN9QVR References: <5933829.WYzpjKtO0p@smadev.internal.net> <1794514.P32sUeWV4B@smadev.internal.net> <3454957.mdnJNsQM6V@smadev.internal.net> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-java@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting Java to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Feb 2013 17:00:22 -0000 It surely is a problem with running JNI from within postgresql in FreeB= SD : Wrote a very small C postgresql function which simply calls JNI and it hangs as well. #include "postgres.h" =20 #include "utils/elog.h" #include "utils/palloc.h" #include "utils/array.h" #include "utils/builtins.h" #include "storage/bufpage.h" #include "catalog/pg_type.h" #include PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(jnitest); Datum jnitest(PG_FUNCTION_ARGS); Datum jnitest(PG_FUNCTION_ARGS) { int res; JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; JavaVMOption *options=3DNULL; vm_args.version =3D 0x00010002; vm_args.options =3D options; vm_args.nOptions =3D 0; vm_args.ignoreUnrecognized =3D JNI_TRUE; /* Create the Java VM */ res =3D JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); PG_RETURN_POINTER(res); } create function jnitest() RETURNS integer LANGUAGE c AS '$libdir/jnites= t', 'jnitest'; dynacom=3D# select jnitest(); ^^^ hangs, it seems the call to res =3D JNI_CreateJavaVM(&jvm, (void**)= &env, &vm_args); just never completes So, this must be a FreeBSD/PostgreSQL/JNI thing. Any help/where to go from here would be very welcome. On =CE=94=CE=B5=CF=85 04 =CE=A6=CE=B5=CE=B2 2013 17:48:20 Achilleas Man= tzios wrote: > It seems that it gets hung in JNI_CreateJavaVM. >=20 > I can write and run standalone JNI programs outside postgrsesql (even= as postgres user), > but when i try to run it from within postgres, then it gets hang. >=20 > Any ideas? >=20 > On =CE=94=CE=B5=CF=85 04 =CE=A6=CE=B5=CE=B2 2013 17:16:27 Achilleas M= antzios wrote: > > I am thinking of trying to address this problem twofold : > >=20 > > 1) establish a connection with the pl/java people > > 2) trying to go back and forth from there and here to try to debug = the problem > >=20 > > Lets wait for some recommendation/help from there, and then i'll ge= t back > > to this list for more. > >=20 > > On =CE=94=CE=B5=CF=85 04 =CE=A6=CE=B5=CE=B2 2013 16:09:56 Achilleas= Mantzios wrote: > > > Thanx Ronald, > > >=20 > > > postgres@smadev:~> jstack 384 > > > 384: Unable to open socket file: target process not responding or= HotSpot VM not loaded > > > The -F option can be used when the target process is not respondi= ng > > >=20 > > > Also jstack -F fails as well > > > postgres@smadev:~> jstack -F 384 > > > Attaching to process ID 384, please wait... > > > Exception in thread "main" java.lang.reflect.InvocationTargetExce= ption > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Me= thod) > > > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMeth= odAccessorImpl.java:57) > > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delega= tingMethodAccessorImpl.java:43) > > > at java.lang.reflect.Method.invoke(Method.java:616) > > > at sun.tools.jstack.JStack.runJStackTool(JStack.java:136)= > > > at sun.tools.jstack.JStack.main(JStack.java:102) > > > Caused by: sun.jvm.hotspot.debugger.UnalignedAddressException: Tr= ying to read at address: 0x746f705c6c4f4867 with alignment: 4 > > > at sun.jvm.hotspot.debugger.bsd.BsdDebuggerLocal$1.checkA= lignment(BsdDebuggerLocal.java:181) > > > at sun.jvm.hotspot.debugger.bsd.BsdDebuggerLocal.readCInt= eger(BsdDebuggerLocal.java:478) > > > at sun.jvm.hotspot.debugger.DebuggerBase.readAddressValue= (DebuggerBase.java:454) > > > at sun.jvm.hotspot.debugger.bsd.BsdDebuggerLocal.readAddr= ess(BsdDebuggerLocal.java:423) > > > at sun.jvm.hotspot.debugger.bsd.BsdAddress.getAddressAt(B= sdAddress.java:74) > > > at sun.jvm.hotspot.HotSpotTypeDataBase.readVMTypes(HotSpo= tTypeDataBase.java:108) > > > at sun.jvm.hotspot.HotSpotTypeDataBase.(HotSpotType= DataBase.java:85) > > > at sun.jvm.hotspot.bugspot.BugSpotAgent.setupVM(BugSpotAg= ent.java:574) > > > at sun.jvm.hotspot.bugspot.BugSpotAgent.go(BugSpotAgent.j= ava:495) > > > at sun.jvm.hotspot.bugspot.BugSpotAgent.attach(BugSpotAge= nt.java:333) > > > at sun.jvm.hotspot.tools.Tool.start(Tool.java:163) > > > at sun.jvm.hotspot.tools.JStack.main(JStack.java:86) > > >=20 > > >=20 > > > On =C3=8E=C2=94=C3=8E=C2=B5=C3=8F=C2=85 04 =C3=8E=C2=A6=C3=8E=C2=B5= =C3=8E=C2=B2 2013 14:47:13 you wrote: > > > > I have no experience running java as a backend of pgsql. > > > > Can you run jstack on the backend? > > > >=20 > > > > Ronald. > > > >=20 > > > > On Mon, 04 Feb 2013 14:17:22 +0100, Achilleas Mantzios =20 > > > > wrote: > > > >=20 > > > > > Hello community, > > > > > > > > > > I am running postgresql 9.2.2 with > > > > > openjdk version "1.6.0_32" > > > > > OpenJDK Runtime Environment (build 1.6.0_32-b25) > > > > > OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) > > > > > On FreeBSD 8.3-RELEASE > > > > > > > > > > I am having trouble even running simple tests like : > > > > > CREATE FUNCTION getsysprop(VARCHAR) > > > > > RETURNS VARCHAR > > > > > AS 'java.lang.System.getProperty' > > > > > LANGUAGE java; > > > > > > > > > > SELECT getsysprop('user.home'); > > > > > > > > > > When i do that, the session hangs, and have to kill -9 the ba= ckend. > > > > > > > > > > Searching with truss got : > > > > > > > > > > gettimeofday({1359983241.596250 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596275 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596300 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596327 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596352 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596378 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596403 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596431 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596458 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596482 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596507 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596532 },0x0) =3D 0 (0x0) > > > > > gettimeofday({1359983241.596556 },0x0) =3D 0 (0x0) > > > > > _umtx_op(0x7fffffffc7e8,0x3,0x1,0x0,0x0,0x1) =3D 0 (0x0) > > > > > sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGABRT|SIGEMT|SI= GKILL|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIG= CHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|S= IGINFO|SIGUSR1|SIGUSR2,0x0) =20 > > > > > =3D 0 (0x0) > > > > > sigprocmask(SIG_SETMASK,0x0,0x0) =3D 0 (0x0) > > > > > sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGABRT|SIGEMT|SI= GKILL|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIG= CHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|S= IGINFO|SIGUSR1|SIGUSR2,0x0) =20 > > > > > =3D 0 (0x0) > > > > > sigprocmask(SIG_SETMASK,0x0,0x0) =3D 0 (0x0) > > > > > > > > > > while ktrace gave : > > > > > > > > > > 98910 initial thread CALL gettimeofday(0x7fffffffc900,0) > > > > > 98910 initial thread RET gettimeofday 0 > > > > > 98910 initial thread CALL gettimeofday(0x7fffffffc900,0) > > > > > 98910 initial thread RET gettimeofday 0 > > > > > 98910 initial thread CALL gettimeofday(0x7fffffffc900,0) > > > > > 98910 initial thread RET gettimeofday 0 > > > > > 98910 initial thread CALL gettimeofday(0x7fffffffc900,0) > > > > > 98910 initial thread RET gettimeofday 0 > > > > > 98910 initial thread CALL gettimeofday(0x7fffffffc940,0) > > > > > 98910 initial thread RET gettimeofday 0 > > > > > 98910 initial thread CALL _umtx_op(0x7fffffffc7e8,0x3,0x1,0= ,0) > > > > > 98910 initial thread RET _umtx_op 0 > > > > > 98910 initial thread CALL =20 > > > > > sigprocmask(SIG_BLOCK,0x7fffffffc780,0x8016167d8) > > > > > 98910 initial thread RET sigprocmask 0 > > > > > 98910 initial thread CALL sigprocmask(SIG_SETMASK,0x8016167= d8,0) > > > > > 98910 initial thread RET sigprocmask 0 > > > > > 98910 initial thread CALL =20 > > > > > sigprocmask(SIG_BLOCK,0x7fffffffc6e0,0x8016167d8) > > > > > 98910 initial thread RET sigprocmask 0 > > > > > 98910 initial thread CALL sigprocmask(SIG_SETMASK,0x8016167= d8,0) > > > > > 98910 initial thread RET sigprocmask 0 > > > > > 98910 initial thread CALL _umtx_op(0x8f8dc4280,0x11,0,0,0) > > > > > > > > > > I found some relevant problems with FreeBSD systems hanging a= fter an =20 > > > > > _umtx_op but all those point > > > > > to threading problems that now are solved. I found nothing mo= dern about =20 > > > > > _umtx_op. > > > > > > > > > > I know FreeBSD is not a "Tier-1" platform for postgresql (nor= java), but =20 > > > > > this is my main platform and i'd like > > > > > to stick with this. > > > > > > > > > > Is there anything i could do to get closer to make pl/java wo= rk with =20 > > > > > FreeBSD? > > > > > > > > > > Also read this =20 > > > > > http://postgresql.1045698.n5.nabble.com/Java-VM-stalls-during= -quot-install-jar-quot-td3290754.html =20 > > > > > thread. > > > > > Very close to my situation. JNI standalone also worked for me= . > > > > > > > > > > Any hints/pointers ? > > > > > > > > > > - > > > > > Achilleas Mantzios > > > > > IT DEV > > > > > IT DEPT > > > > > Dynacom Tankers Mgmt > > > > > _______________________________________________ > > > > > freebsd-java@freebsd.org mailing list > > > > > http://lists.freebsd.org/mailman/listinfo/freebsd-java > > > > > To unsubscribe, send any mail to "freebsd-java-unsubscribe@fr= eebsd.org" > > > - > > > Achilleas Mantzios > > > IT DEV > > > IT DEPT > > > Dynacom Tankers Mgmt > > > _______________________________________________ > > > freebsd-java@freebsd.org mailing list > > > http://lists.freebsd.org/mailman/listinfo/freebsd-java > > > To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebs= d.org" > > - > > Achilleas Mantzios > > IT DEV > > IT DEPT > > Dynacom Tankers Mgmt > - > Achilleas Mantzios > IT DEV > IT DEPT > _______________________________________________ > freebsd-java@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-java > To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd.or= g" - Achilleas Mantzios IT DEV IT DEPT Dynacom Tankers Mgmt