> > David E. Wheeler wrote: > >> Found in 8.4.2, replicated in HEAD. Steps: > >> > >> 1. Create PL/Perl function. > >> 2. Run it. > >> 3. Create same function with PL/PerlU > >> 4. Run it. > >> 5. Create same function again with PL/Perl > >> 6. Boom. > > > This was just discussed in -HACKERS. Have a look at the archives. > > No, this is something different, because it still crashes even with the > fix for that other issue. I see this in the postmaster log: > > panic: free from wrong pool. > LOG: server process (PID 15697) exited with exit code 255 > > There's no core dump (thank you, perl).
> The lower-case panic message > must be from libperl because PG has no such message. I guess that we > probably need to fix this by changing the timing of interpreter > switching relative to throwing away the old compiled function ... I added this to src/pl/plperl/sql/plperl_plperlu.sql: -- recompile same function with different languages create or replace function wtf(text) returns text language plperl as 'shift'; select wtf('hey'); create or replace function wtf(text) returns text language plperlu as 'shift'; select wtf('hey'); create or replace function wtf(text) returns text language plperl as 'shift'; select wtf('hey'); The first two work ok, the third causes: LOG: server process (PID 41692) was terminated by signal 10: Bus error I've appended the stack trace. That was using a cvs head (via git) from ~ the 9th of Jan. I got the same failure after applying my feature1a-utils patch, but then applying my feature1b-misc patch fixed it. Tim. #0 0x00ce26d3 in Perl_pad_undef (my_perl=0x10b0800, cv=0x1183bb0) at pad.c:262 262 if (namesv && namesv != &PL_sv_undef (gdb) bt #0 0x00ce26d3 in Perl_pad_undef (my_perl=0x10b0800, cv=0x1183bb0) at pad.c:262 #1 0x00cd8057 in Perl_cv_undef (my_perl=0x10b0800, cv=0x1183bb0) at op.c:4301 #2 0x00d3e86c in Perl_sv_clear (my_perl=0x10b0800, sv=0x1183bb0) at sv.c:4702 #3 0x00d3ed9c in Perl_sv_free (my_perl=0x10b0800, sv=0x1183bb0) at sv.c:4862 #4 0x00d3ea26 in Perl_sv_clear (my_perl=0x10b0800, sv=0x11751e4) at sv.c:4754 #5 0x00d3ed9c in Perl_sv_free (my_perl=0x10b0800, sv=0x11751e4) at sv.c:4862 #6 0x008a821f in compile_plperl_function (fn_oid=<value temporarily unavailable, due to optimizations>, is_trigger=0 '\0') at plperl.c:1579 #7 0x008a98f3 in plperl_validator (fcinfo=0xbfffd408) at plperl.c:994 #8 0x00316770 in OidFunctionCall1 (functionId=101107, arg1=101158) at fmgr.c:1562 #9 0x000a8cc8 in ProcedureCreate (procedureName=0x101a5ac "wtf", procNamespace=2200, replace=1 '\001', returnsSet=0 '\0', returnType=25, languageObjectId=101108, languageValidator=101107, prosrc=0x101a7ec "shift", probin=0x0, isAgg=0 '\0', isWindowFunc=0 '\0', security_definer=0 '\0', isStrict=0 '\0', volatility=118 'v', parameterTypes=0x10ed50c, allParameterTypes=0, parameterModes=0, parameterNames=0, parameterDefaults=0x0, proconfig=0, procost=100, prorows=0) at pg_proc.c:621 #10 0x001119be in CreateFunction (stmt=0x101a884, queryString=0x1019c1c "create or replace function wtf(text) returns text language plperl as 'shift';") at functioncmds.c:941 #11 0x0023f317 in MemoryContextSwitchTo [inlined] () at /Users/timbo/pg/postgresql/src/include/utils/palloc.h:1192 #12 0x0023f317 in PortalRunUtility (portal=0x10a561c, utilityStmt=0x101a884, isTopLevel=<value temporarily unavailable, due to optimizations>, dest=0x101aa58, completionTag=0xbfffdbbc "") at pquery.c:1200 #13 0x00240a0b in PortalRunMulti (portal=0x10a561c, isTopLevel=1 '\001', dest=0x101aa58, altdest=0x101aa58, completionTag=0xbfffdbbc "") at pquery.c:1297 #14 0x0024120c in PortalRun (portal=0x10a561c, count=2147483647, isTopLevel=<value temporarily unavailable, due to optimizations>, dest=0x101aa58, altdest=0x101aa58, completionTag=0xbfffdbbc "") at pquery.c:823 #15 0x0023cfe8 in exec_simple_query (query_string=0x1019c1c "create or replace function wtf(text) returns text language plperl as 'shift';") at postgres.c:1045 #16 0x0023de40 in PostgresMain (argc=2, argv=0x1016ba4, username=0x1016a54 "timbo") at postgres.c:3694 #17 0x001fd6ae in ServerLoop () at postmaster.c:3373 #18 0x001fe83f in PostmasterMain (argc=1, argv=0x9009f0) at postmaster.c:1069 #19 0x00191d3d in main (argc=1, argv=0x9009f0) at main.c:188 -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs