agora inbox for pljava-dev@postgresql.org
help / color / mirror / Atom feedSubject: [Pljava-dev] FreeBSD pl/java problem
Date: Mon, 04 Feb 2013 18:55:34 +0200
Message-ID: <1629686.dgDv4mylqG@smadev.internal.net> (raw)
In-Reply-To: <1574535.zJ9Qr5fcjM@smadev.internal.net>
References: <4461985.cuacIgvZGL@smadev.internal.net>
<1574535.zJ9Qr5fcjM@smadev.internal.net>
Wrote a very small C postgresql function which simply calls JNI
and it hangs as well.
#include "postgres.h"
#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=NULL;
vm_args.version = 0x00010002;
vm_args.options = options;
vm_args.nOptions = 0;
vm_args.ignoreUnrecognized = JNI_TRUE;
/* Create the Java VM */
res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
PG_RETURN_POINTER(res);
}
create function jnitest() RETURNS integer LANGUAGE c AS '$libdir/jnitest', 'jnitest';
dynacom=# select jnitest();
^^^ hangs
On ??? 04 ??? 2013 17:46:03 Achilleas Mantzios wrote:
> Just an update on this :
>
> by inserting some elog statements in ./src/C/pljava/Backend.c
> just before JNI_createVM :
>
> elog(DEBUG1, "Creating JavaVM");
>
> elog(INFO,"jstat = %d",jstat);
>
> //jstat = JNI_createVM(&s_javaVM, &vm_args);
> JNIEnv *env;
> jstat = JNI_CreateJavaVM(&s_javaVM, (void**)&env, &vm_args);
>
> elog(INFO,"jstat = %d",jstat);
>
> it never gets into the second elog, which means it hangs in JNI_CreateJavaVM.
>
> Outside postgresql i can run JNI programs with no problem.
>
> Any clues?
>
> On ?????
04 ?????? 2013 15:17:11 Achilleas Mantzios wrote:
> > Hello,
> >
> > 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 backend.
> >
> > Searching with truss got :
> >
> > gettimeofday({1359983241.596250 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596275 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596300 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596327 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596352 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596378 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596403 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596431 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596458 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596482 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596507 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596532 },0x0) = 0 (0x0)
> > gettimeofday({1359983241.596556 },0x0) = 0 (0x0)
> > _umtx_op(0x7fffffffc7e8,0x3,0x1,0x0,0x0,0x1) = 0 (0x0)
> > sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGABRT|SIGEMT|SIGKILL|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
> > sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
> > sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGABRT|SIGEMT|SIGKILL|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
> > sigprocmask(SIG_SETMASK,0x0,0x0) = 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 sigprocmask(SIG_BLOCK,0x7fffffffc780,0x8016167d8)
> > 98910 initial thread RET sigprocmask 0
> > 98910 initial thread CALL sigprocmask(SIG_SETMASK,0x8016167d8,0)
> > 98910 initial thread RET sigprocmask 0
> > 98910 initial thread CALL sigprocmask(SIG_BLOCK,0x7fffffffc6e0,0x8016167d8)
> > 98910 initial thread RET sigprocmask 0
> > 98910 initial thread CALL sigprocmask(SIG_SETMASK,0x8016167d8,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 after an _umtx_op but all those point
> > to threading problems that now are solved. I found nothing modern about _umtx_op.
> >
> > I know FreeBSD is not a "Tier-1" platform for postgresql (nor java), but 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 work with FreeBSD?
> >
> > Of course i will have to reach other communities as well (freebsd-java, etc...)
> > but any pointers from you would be just great.
> >
> > Also read this http://postgresql.1045698.n5.nabble.com/Java-VM-stalls-during-quot-install-jar-quot-td3290754.html thread.
> > Very close to my situation. JNI standalone also worked for me.
> >
> > -
> > Achilleas Mantzios
> > IT DEV
> > IT DEPT
> > Dynacom Tankers Mgmt
> > _______________________________________________
> > Pljava-dev mailing list
> > Pljava-dev at pgfoundry.org
> > http://lists.pgfoundry.org/mailman/listinfo/pljava-dev
> -
> Achilleas Mantzios
> IT DEV
> IT DEPT
> Dynacom Tankers Mgmt
> _______________________________________________
> Pljava-dev mailing list
> Pljava-dev at pgfoundry.org
> http://lists.pgfoundry.org/mailman/listinfo/pljava-dev
-
Achilleas Mantzios
IT DEV
IT DEPT
Dynacom Tankers Mgmt
view thread (5+ messages) latest in thread
Message-ID: <1629686.dgDv4mylqG@smadev.internal.net>
Permalink: ../1629686.dgDv4mylqG@smadev.internal.net/
Also on: postgresql.org/message-id/1629686.dgDv4mylqG@smadev.internal.net
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pljava-dev@postgresql.org
Subject: Re: [Pljava-dev] FreeBSD pl/java problem
In-Reply-To: <1629686.dgDv4mylqG@smadev.internal.net>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox