Re: Repeatable crash in pg_dump (with -d2 info)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: David Schnur <dnschnur(at)gmail(dot)com>
Cc: pgsql-admin(at)postgresql(dot)org, pgsql-bugs(at)postgresql(dot)org
Subject: Re: Repeatable crash in pg_dump (with -d2 info)
Date: 2011-11-29 01:00:34
Message-ID: 29791.1322528434@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-bugs

David Schnur <dnschnur(at)gmail(dot)com> writes:
> I probably can't get a stack trace, but I was able to reproduce it with
> just that function. Without the function, pg_dump works fine. I can DROP
> the function, pg_dump works, then add it back again and pg_dump crashes.

Hmph. I still can't reproduce this here, which seems to mean one of
three things:
1. We fixed this since 8.3.15 (still doesn't seem likely).
2. It's specific to Windows.
3. It's specific to the pg_dump build you are using.

I wonder whether anyone else can get this to happen on the strength of
David's description?

> Here are my steps:

> initdb -A md5 --no-locale -E UTF8 -U testuser -D
> "C:\Users\David\Desktop\testdb" -W

> pg_ctl -U testuser -D "C:\Users\David\Desktop\testdb" start

> CREATE DATABASE testdb OWNER testuser;

> CREATE OR REPLACE FUNCTION datastore_unpack(
> data_times TIMESTAMP WITH TIME ZONE[],
> data_values DOUBLE PRECISION[],
> OUT data_time TIMESTAMP WITH TIME ZONE,
> OUT data_value DOUBLE PRECISION
> ) RETURNS SETOF RECORD AS $$
> SELECT $1[rowx] AS data_time, $2[rowx] AS data_value
> FROM generate_series(1, array_upper($1, 1)) AS rowx;
> $$ LANGUAGE SQL STABLE;

> pg_dump -v -F c -x -O -f "C:\Users\David\Desktop\dumptest" -U testuser
> testdb

> Here's the output from pg_dump:

> pg_dump: reading schemas
> pg_dump: reading user-defined functions
> pg_dump: reading user-defined types
> pg_dump: reading procedural languages
> pg_dump: reading user-defined aggregate functions
> pg_dump: reading user-defined operators
> pg_dump: reading user-defined operator classes
> pg_dump: reading user-defined text search parsers
> pg_dump: reading user-defined text search templates
> pg_dump: reading user-defined text search dictionaries
> pg_dump: reading user-defined text search configurations
> pg_dump: reading user-defined operator families
> pg_dump: reading user-defined conversions
> pg_dump: reading user-defined tables
> pg_dump: reading table inheritance information
> pg_dump: reading rewrite rules
> pg_dump: reading type casts
> pg_dump: finding inheritance relationships
> pg_dump: reading column info for interesting tables
> pg_dump: flagging inherited columns in subtables
> pg_dump: reading indexes
> pg_dump: reading constraints
> pg_dump: reading triggers
> pg_dump: reading dependency data
> pg_dump: saving encoding = UTF8
> pg_dump: saving standard_conforming_strings = off
> pg_dump: saving database definition

> And here's the output from the postmaster:

> LOG: statement: SET DATESTYLE = ISO
> LOG: statement: SET extra_float_digits TO 2
> LOG: statement: SET synchronize_seqscans TO off
> LOG: statement: BEGIN
> LOG: statement: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
> LOG: statement: SET search_path = pg_catalog
> LOG: statement: SELECT tableoid, oid, nspname, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = nspowner) as rolname, nspacl FROM
> pg_namespace
> LOG: statement: SELECT tableoid, oid, proname, prolang, pronargs,
> proargtypes, prorettype, proacl, pronamespace,(SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = proowner) as rolname FROM pg_proc WHERE NOT
> proisagg AND pronamespace != (select oid from pg_namespace where nspname =
> 'pg_catalog')
> LOG: statement: SELECT tableoid, oid, typname, typnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = typowner) as rolname,
> typinput::oid as typinput, typoutput::oid as typoutput, typelem, typrelid,
> CASE WHEN typrelid = 0 THEN ' '::"char" ELSE (SELECT relkind FROM pg_class
> WHERE oid = typrelid) END as typrelkind, typtype, typisdefined, typname[0]
> = '_' AND typelem != 0 AND (SELECT typarray FROM pg_type te WHERE oid =
> pg_type.typelem) = oid AS isarray FROM pg_type
> LOG: statement: SELECT tableoid, oid, lanname, lanpltrusted,
> lanplcallfoid, lanvalidator, lanacl, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = lanowner) as lanowner FROM pg_language
> WHERE lanispl ORDER BY oid
> LOG: statement: SELECT tableoid, oid, proname as aggname, pronamespace as
> aggnamespace, pronargs, proargtypes, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = proowner) as rolname, proacl as aggacl FROM
> pg_proc WHERE proisagg AND pronamespace != (select oid from pg_namespace
> where nspname = 'pg_catalog')
> LOG: statement: SELECT tableoid, oid, oprname, oprnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = oprowner) as rolname,
> oprcode::oid as oprcode FROM pg_operator
> LOG: statement: SELECT tableoid, oid, opcname, opcnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = opcowner) as rolname FROM
> pg_opclass
> LOG: statement: SELECT tableoid, oid, prsname, prsnamespace,
> prsstart::oid, prstoken::oid, prsend::oid, prsheadline::oid,
> prslextype::oid FROM pg_ts_parser
> LOG: statement: SELECT tableoid, oid, tmplname, tmplnamespace,
> tmplinit::oid, tmpllexize::oid FROM pg_ts_template
> LOG: statement: SELECT tableoid, oid, dictname, dictnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = dictowner) as rolname,
> dicttemplate, dictinitoption FROM pg_ts_dict
> LOG: statement: SELECT tableoid, oid, cfgname, cfgnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = cfgowner) as rolname,
> cfgparser FROM pg_ts_config
> LOG: statement: SELECT tableoid, oid, opfname, opfnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = opfowner) as rolname FROM
> pg_opfamily
> LOG: statement: SELECT tableoid, oid, conname, connamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = conowner) as rolname FROM
> pg_conversion
> LOG: statement: SELECT c.tableoid, c.oid, relname, relacl, relkind,
> relnamespace, (SELECT rolname FROM pg_catalog.pg_roles WHERE oid =
> relowner) as rolname, relchecks, reltriggers, relhasindex, relhasrules,
> relhasoids, d.refobjid as owning_tab, d.refobjsubid as owning_col, (SELECT
> spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS
> reltablespace, array_to_string(c.reloptions, ', ') as reloptions from
> pg_class c left join pg_depend d on (c.relkind = 'S' and d.classid =
> c.tableoid and d.objid = c.oid and d.objsubid = 0 and d.refclassid =
> c.tableoid and d.deptype = 'a') where relkind in ('r', 'S', 'v', 'c') order
> by c.oid
> LOG: statement: SELECT inhrelid, inhparent from pg_inherits
> LOG: statement: SELECT tableoid, oid, rulename, ev_class as ruletable,
> ev_type, is_instead, ev_enabled FROM pg_rewrite ORDER BY oid
> LOG: statement: SELECT tableoid, oid, castsource, casttarget, castfunc,
> castcontext FROM pg_cast ORDER BY 3,4
> LOG: statement: SELECT loid FROM pg_largeobject LIMIT 1
> LOG: statement: SELECT classid, objid, refclassid, refobjid, deptype FROM
> pg_depend WHERE deptype != 'p' ORDER BY 1,2
> LOG: statement: SELECT tableoid, oid, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = datdba) as dba,
> pg_encoding_to_char(encoding) as encoding, (SELECT spcname FROM
> pg_tablespace t WHERE t.oid = dattablespace) as tablespace,
> shobj_description(oid, 'pg_database') as description FROM pg_database WHERE
> datname = 'testdb'
> LOG: statement: SELECT description, classoid, objoid, objsubid FROM
> pg_catalog.pg_description ORDER BY classoid, objoid, objsubid
> LOG: statement: SET search_path = public, pg_catalog
> LOG: statement: SELECT proretset, prosrc, probin, proallargtypes,
> proargmodes, proargnames, provolatile, proisstrict, prosecdef, proconfig,
> procost, prorows, (SELECT lanname FROM pg_catalog.pg_language WHERE oid =
> prolang) as lanname FROM pg_catalog.pg_proc WHERE oid =
> '16386'::pg_catalog.oid
> LOG: statement: SELECT pg_catalog.format_type('1185'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('1022'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('1184'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('701'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('1185'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('1022'::pg_catalog.oid, NULL)
> LOG: statement: SELECT pg_catalog.format_type('2249'::pg_catalog.oid, NULL)
> LOG: could not receive data from client: No connection could be made
> because the target machine actively refused it.

> LOG: unexpected EOF on client connection

regards, tom lane

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Craig Ringer 2011-11-29 02:37:54 Re: Sequence "self" change - possible?
Previous Message David Schnur 2011-11-28 22:20:42 Re: Repeatable crash in pg_dump (with -d2 info)

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2011-11-29 01:33:29 Re: BUG #6307: intarray extention gin index does not work with Hot standby
Previous Message Tom Lane 2011-11-29 00:22:38 Re: objects tied to missing extension