From: stephen.crowley at gmail.com (Stephen Crowley) Date: Thu, 10 Mar 2005 18:54:35 -0600 Subject: [Pljava-dev] JVM crash in latest cvs on 7.4.7 implementating ResultSetProvider In-Reply-To: <3f71fdf1050310134768d22fab@mail.gmail.com> References: <3f71fdf10503100050360ea179@mail.gmail.com> <42303A12.6030201@mailblocks.com> <3f71fdf1050310134768d22fab@mail.gmail.com> Message-ID: <3f71fdf1050310165416b04fd6@mail.gmail.com> I 'fixed' the bug by commenting out the pfree(args) call in Function.c line 605. Is this call supposed to be here? I'm not sure if I am leaking memory now or not. --Stephen On Thu, 10 Mar 2005 15:47:15 -0600, Stephen Crowley wrote: > Go it. I'll see if I can track down what's happening. > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 1077993600 (LWP 1501)] > 0x081f7dac in pfree () > (gdb) bt > #0 0x081f7dac in pfree () > #1 0x4169c0bb in Function_invoke (self=0x6b02fa18, env=0x8319cec, > fcinfo=0xbfffe790) > at /home/crow/cvs/org.postgresql.pljava/src/C/pljava/Function.c:605 > #2 0x41699b2e in internalCallHandler (trusted=1 '\001', fcinfo=0xbfffe790) > at /home/crow/cvs/org.postgresql.pljava/src/C/pljava/Backend.c:909 > #3 0x41699989 in java_call_handler (fcinfo=0xbfffe790) at > /home/crow/cvs/org.postgresql.pljava/src/C/pljava/Backend.c:860 > #4 0x0810c1d8 in ExecMakeFunctionResult () > #5 0x0810df1a in ExecEvalExpr () > #6 0x0810ec64 in ExecCleanTargetListLength () > #7 0x0810eeca in ExecProject () > #8 0x08116d65 in ExecResult () > #9 0x0810add5 in ExecProcNode () > #10 0x0810975c in ExecEndPlan () > #11 0x08108b38 in ExecutorRun () > #12 0x08180553 in PortalRun () > #13 0x0818030f in PortalRun () > #14 0x0817cb54 in pg_plan_queries () > #15 0x0817f0c0 in PostgresMain () > #16 0x08158c5b in ClosePostmasterPorts () > #17 0x08158643 in ClosePostmasterPorts () > #18 0x08156b48 in PostmasterMain () > #19 0x081561d9 in PostmasterMain () > #20 0x08126176 in main () > > > On Thu, 10 Mar 2005 13:14:10 +0100, Thomas Hallgren > wrote: > > Stephen Crowley wrote: > > > > >I'm getting a JVM crash in the latest cvs. > > > > > >My function def: > > > > > >CREATE FUNCTION elab.getDailyReport(date) > > > RETURNS SETOF island_daily > > > AS 'elab.DailyReport.getDailyReport' > > > LANGUAGE java; > > > > > >DailyReport implements ResultSetProvider > > > > > >assignRowValues() isn't doing anything out of the ordinary. > > > > > >Any ideas? The crash happens after about 50 rows returned. Any tips > > >on debugging? How can I turn these frame pointers into something > > >useful? > > > > > > > > Try a make clean and then recompiling PL/Java with -g option, i.e. > > > > make PGSQLDIR=<...> CFLAGS=-g > > > > or, if you care to debug the binary: > > > > make PGSQLDIR=<...> CPPFLAGS=-DPLJAVA_DEBUG=1 CFLAGS=-g > > > > The result of the latter compilation will be a binary that goes into a > > loop the first time PL/Java is initialized. It prints out the pid of the > > process and asks you to attach a gdb. So you do: > > > > gdb /usr/local/pgsql/bin/postgres > > > > Then, inside of gdb you set the breakpoints you need and then issue: > > > > set pljavaDebug=0 > > continue > > > > this breaks the loop. Hope this helps, > > > > Regards > > Thomas Hallgren > > > > >