BUG #5556: "cannot drop active portal" and "ERRORDATA_STACK_SIZE exceeded" lead to server crash - Mailing list pgsql-bugs

From Robert Walker
Subject BUG #5556: "cannot drop active portal" and "ERRORDATA_STACK_SIZE exceeded" lead to server crash
Date
Msg-id 201007122100.o6CL0pkk025899@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #5556: "cannot drop active portal" and "ERRORDATA_STACK_SIZE exceeded" lead to server crash
Re: BUG #5556: "cannot drop active portal" and "ERRORDATA_STACK_SIZE exceeded" lead to server crash
List pgsql-bugs
The following bug has been logged online:

Bug reference:      5556
Logged by:          Robert Walker
Email address:      robwalker01@speedymail.org
PostgreSQL version: 9.0 beta3
Operating system:   WinXP 32-bit
Description:        "cannot drop active portal" and "ERRORDATA_STACK_SIZE
exceeded" lead to server crash
Details:

Since version 9.0 beta3 I've been having a problem with the backend crashing
that wasn't happening before in version 9.0 beta2.

Looking at the psql-bugs mailing list, I found two entries that might be
related:

http://archives.postgresql.org/pgsql-bugs/2010-06/msg00321.php
http://archives.postgresql.org/pgsql-bugs/2010-07/msg00022.php

The final patch introduced from the July 5th entry introduces changes that
in my situation eventually generates an error at portalmem.c line 419 (I
believe). I'm not sure where the problem is actually starting at though, as
I don't understand PostgreSQL's internals on that level. I assume it has to
do with the FOR LOOP in the plpgsql function I created using implied/unnamed
portals, and having problems with that.

The intent of what I was originally trying to do is to intentionally cause a
unique constraint violation for the sake of testing to ensure that I won't
get duplicate data in the final design. But when the unique violation
occurs, a series of other (possibly related?) errors occur that lead to the
crash.

-----------------------------------------
The following is the contents of the log:
-----------------------------------------

2010-07-12 15:23:11 CDT LOCATION:  exec_simple_query,
.\src\backend\tcop\postgres.c:894
2010-07-12 15:23:25 CDT WARNING:  25P01: there is no transaction in
progress
2010-07-12 15:23:25 CDT LOCATION:  EndTransactionBlock,
.\src\backend\access\transam\xact.c:3179
2010-07-12 15:23:28 CDT ERROR:  23505: duplicate key value violates unique
constraint "aisle_grid_columns_pkey"
2010-07-12 15:23:28 CDT DETAIL:  Key (aisle_grid_column, aisle_id, area_id,
site_id)=(15, 1, 1, e435198e-f6b8-11dd-a076-0ba58160eb99) already exists.
2010-07-12 15:23:28 CDT CONTEXT:  SQL statement "INSERT INTO
ebatt.aisle_grid_columns (

                    site_id,

                    area_id,

                    aisle_id,

                    aisle_grid_column,

                    aisle_zone_id,

                    beginning_aisle_grid_column_for_zone,

                    ending_aisle_grid_column_for_zone

                    )

                VALUES (

                    _site_id,

                    _area_id,

                    _aisle_id,

                    _c.new_c,

                    _aisle_zone_id,

                    _beginning_aisle_grid_column,

                    _ending_aisle_grid_column

                    )"
    PL/pgSQL function "add_aisle_zone" line 144 at SQL statement
2010-07-12 15:23:28 CDT LOCATION:  _bt_check_unique,
.\src\backend\access\nbtree\nbtinsert.c:389
2010-07-12 15:23:28 CDT STATEMENT:
            SELECT config.add_aisle_zone(
                aisle_zone_id := 3,
                aisle_id := 1,
                area_id := 1,
                site_id := 'e435198e-f6b8-11dd-a076-0ba58160eb99',
                default_exchanger_id := 2,
                current_exchanger_id := 2,
                beginning_aisle_grid_column := 15,
                ending_aisle_grid_column := 24,
                row_height := 4,
                is_safety_guarded := TRUE,
                is_enabled := TRUE
                );

2010-07-12 15:23:28 CDT ERROR:  24000: cannot drop active portal "<unnamed
portal 24>"
2010-07-12 15:23:28 CDT LOCATION:  PortalDrop,
.\src\backend\utils\mmgr\portalmem.c:419
2010-07-12 15:23:28 CDT STATEMENT:  ROLLBACK to _EXEC_SVP_00F8A1C8
2010-07-12 15:23:28 CDT ERROR:  24000: cannot drop active portal "<unnamed
portal 24>"
2010-07-12 15:23:28 CDT LOCATION:  PortalDrop,
.\src\backend\utils\mmgr\portalmem.c:419
2010-07-12 15:23:28 CDT ERROR:  24000: cannot drop active portal "<unnamed
portal 24>"
2010-07-12 15:23:28 CDT LOCATION:  PortalDrop,
.\src\backend\utils\mmgr\portalmem.c:419
2010-07-12 15:23:28 CDT ERROR:  24000: cannot drop active portal "<unnamed
portal 24>"
2010-07-12 15:23:28 CDT LOCATION:  PortalDrop,
.\src\backend\utils\mmgr\portalmem.c:419
2010-07-12 15:23:28 CDT ERROR:  24000: cannot drop active portal "<unnamed
portal 24>"
2010-07-12 15:23:28 CDT LOCATION:  PortalDrop,
.\src\backend\utils\mmgr\portalmem.c:419
2010-07-12 15:23:28 CDT PANIC:  XX000: ERRORDATA_STACK_SIZE exceeded
2010-07-12 15:23:28 CDT LOCATION:  errstart,
.\src\backend\utils\error\elog.c:329


This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.

2010-07-12 15:23:28 CDT LOG:  00000: server process (PID 4368) exited with
exit code 3
2010-07-12 15:23:28 CDT LOCATION:  LogChildExit,
.\src\backend\postmaster\postmaster.c:2812
2010-07-12 15:23:28 CDT LOG:  00000: terminating any other active server
processes
2010-07-12 15:23:28 CDT LOCATION:  HandleChildCrash,
.\src\backend\postmaster\postmaster.c:2646
2010-07-12 15:23:28 CDT WARNING:  57P02: terminating connection because of
crash of another server process
2010-07-12 15:23:28 CDT DETAIL:  The postmaster has commanded this server
process to roll back the current transaction and exit, because another
server process exited abnormally and possibly corrupted shared memory.
2010-07-12 15:23:28 CDT HINT:  In a moment you should be able to reconnect
to the database and repeat your command.
2010-07-12 15:23:28 CDT LOCATION:  quickdie,
.\src\backend\tcop\postgres.c:2626
2010-07-12 15:23:28 CDT LOG:  00000: all server processes terminated;
reinitializing
2010-07-12 15:23:28 CDT LOCATION:  PostmasterStateMachine,
.\src\backend\postmaster\postmaster.c:3066
2010-07-12 15:23:38 CDT FATAL:  XX000: pre-existing shared memory block is
still in use
2010-07-12 15:23:38 CDT HINT:  Check if there are any old server processes
still running, and terminate them.
2010-07-12 15:23:38 CDT LOCATION:  PGSharedMemoryCreate,
.\src\backend\port\win32_shmem.c:194

pgsql-bugs by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Bad localization in psql (french version) for Windows
Next
From: Tom Lane
Date:
Subject: Re: BUG #5556: "cannot drop active portal" and "ERRORDATA_STACK_SIZE exceeded" lead to server crash