Date: Mon, 04 Feb 2013 19:00:18 +0200 From: Achilleas Mantzios <achill@matrix.gatewaynet.com> To: freebsd-java@freebsd.org Subject: Re: Re: Re: Re: Re: FreeBSD pl/java problem : backend hangs Message-ID: <1917151.YiRb4P31Ma@smadev.internal.net> In-Reply-To: <3454957.mdnJNsQM6V@smadev.internal.net> References: <5933829.WYzpjKtO0p@smadev.internal.net> <1794514.P32sUeWV4B@smadev.internal.net> <3454957.mdnJNsQM6V@smadev.internal.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <jni.h> 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.<init>(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 > > > > <achill@matrix.gatewaynet.com> 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1917151.YiRb4P31Ma>