BUG #12833: Cannot cancel query or terminate backend if it client is SIGSTOPed

From: eshkinkot(at)gmail(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #12833: Cannot cancel query or terminate backend if it client is SIGSTOPed
Date: 2015-03-05 16:37:08
Message-ID: 20150305163708.2544.54177@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 12833
Logged by: Sergey Burladyan
Email address: eshkinkot(at)gmail(dot)com
PostgreSQL version: 9.4.1
Operating system: Slackware 14.1
Description:

I run this command in bash:
$ ../bin/psql -X -At -c 'copy (select * from generate_series(1, 100000000))
to stdout' & ( sleep 2; kill -STOP $!; )

$ ps f --ppid $$
PID TTY STAT TIME COMMAND
24773 pts/23 R+ 0:00 ps f --ppid 5021
24685 pts/23 T 0:00 ../bin/psql -X -At -c copy (select * from
generate_series(1, 100000000)) to stdout

Now psql is stopped and I try to cancel it backend with
pg_cancel_backend and pg_terminate_backend, but it not canceled or stopped.
Select from pg_stat_activity still show it as active:

-[ RECORD 1
]----+-------------------------------------------------------------
datid | 16384
datname | sergey
pid | 24688
usesysid | 10
usename | sergey
application_name | psql
client_addr | <NULL>
client_hostname | <NULL>
client_port | -1
backend_start | 2015-03-05 19:17:03.028235+03
xact_start | 2015-03-05 19:17:03.030116+03
query_start | 2015-03-05 19:17:03.030116+03
state_change | 2015-03-05 19:17:03.030118+03
waiting | f
state | active
backend_xid | <NULL>
backend_xmin | 1268
query | copy (select * from generate_series(1, 100000000)) to
stdout

$ strace -p 24688
Process 24688 attached
sendto(8, "\nd\0\0\0\n19628\nd\0\0\0\n19629\nd\0\0\0\n1963"..., 8192, 0,
NULL, 0) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=24610, si_uid=1000}
---
rt_sigreturn() = 44
sendto(8, "\nd\0\0\0\n19628\nd\0\0\0\n19629\nd\0\0\0\n1963"..., 8192, 0,
NULL, 0) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=24610, si_uid=1000}
---
rt_sigreturn() = 44
sendto(8, "\nd\0\0\0\n19628\nd\0\0\0\n19629\nd\0\0\0\n1963"..., 8192, 0,
NULL, 0

(gdb) bt
#0 0x00007f0cd2bde88d in send () from /lib64/libc.so.6
#1 0x00000000005da809 in secure_write (port=<optimized out>, ptr=<optimized
out>, len=<optimized out>) at be-secure.c:458
#2 0x00000000005e205b in internal_flush () at pqcomm.c:1324
#3 0x00000000005e21ad in internal_putbytes (s=0x1e982fa "372\n",
s(at)entry=0x1e982f8 "20372\n", len=4) at pqcomm.c:1270
#4 0x00000000005e3342 in pq_putmessage (msgtype=msgtype(at)entry=100 'd',
s=0x1e982f8 "20372\n", len=<optimized out>) at pqcomm.c:1467
#5 0x000000000055ccbb in CopySendEndOfRow (cstate=cstate(at)entry=0x1e97ee8)
at copy.c:546
#6 0x000000000055d58a in CopyOneRowTo (cstate=cstate(at)entry=0x1e97ee8,
tupleOid=tupleOid(at)entry=0, values=0x1ea6d20, nulls=0x1ea6d40 "") at
copy.c:1939
#7 0x000000000055e195 in copy_dest_receive (slot=0x1ea5ff8, self=0x1ea1f10)
at copy.c:4310
#8 0x00000000005af282 in ExecutePlan (dest=0x1ea1f10, direction=<optimized
out>, numberTuples=0, sendTuples=1 '\001', operation=CMD_SELECT,
planstate=0x1ea5cf0, estate=0x1ea5bd8)
at execMain.c:1511
#9 standard_ExecutorRun (queryDesc=0x1ea1f68, direction=<optimized out>,
count=0) at execMain.c:319
#10 0x000000000055decf in CopyTo (cstate=0x1e97ee8) at copy.c:1836
#11 DoCopyTo (cstate=cstate(at)entry=0x1e97ee8) at copy.c:1659
#12 0x0000000000561a97 in DoCopy (stmt=stmt(at)entry=0x1e62f30,
queryString=0x1e61e48 "copy (select * from generate_series(1, 100000000)) to
stdout", processed=processed(at)entry=0x7fffb48692f8)
at copy.c:878
#13 0x00000000006b0509 in standard_ProcessUtility (parsetree=0x1e62f30,
queryString=<optimized out>, context=<optimized out>, params=0x0,
dest=<optimized out>,
completionTag=<optimized out>) at utility.c:525
#14 0x00000000006ad3c1 in PortalRunUtility (portal=portal(at)entry=0x1e9dba8,
utilityStmt=utilityStmt(at)entry=0x1e62f30, isTopLevel=isTopLevel(at)entry=1
'\001', dest=dest(at)entry=0x1e632d8,
completionTag=completionTag(at)entry=0x7fffb4869650 "") at pquery.c:1187
#15 0x00000000006ae06a in PortalRunMulti (portal=portal(at)entry=0x1e9dba8,
isTopLevel=isTopLevel(at)entry=1 '\001', dest=dest(at)entry=0x1e632d8,
altdest=altdest(at)entry=0x1e632d8,
completionTag=completionTag(at)entry=0x7fffb4869650 "") at pquery.c:1318
#16 0x00000000006aebff in PortalRun (portal=portal(at)entry=0x1e9dba8,
count=count(at)entry=9223372036854775807, isTopLevel=isTopLevel(at)entry=1 '\001',
dest=dest(at)entry=0x1e632d8,
altdest=altdest(at)entry=0x1e632d8,
completionTag=completionTag(at)entry=0x7fffb4869650 "") at pquery.c:816
#17 0x00000000006ac6ed in exec_simple_query (query_string=0x1e61e48 "copy
(select * from generate_series(1, 100000000)) to stdout") at
postgres.c:1072
#18 PostgresMain (argc=<optimized out>, argv=argv(at)entry=0x1dd3730,
dbname=0x1dd3590 "sergey", username=<optimized out>) at postgres.c:4074
#19 0x000000000045eb58 in BackendRun (port=0x1e1bac0) at postmaster.c:4155
#20 BackendStartup (port=0x1e1bac0) at postmaster.c:3829
#21 ServerLoop () at postmaster.c:1597
#22 0x0000000000652279 in PostmasterMain (argc=argc(at)entry=3,
argv=argv(at)entry=0x1dd2750) at postmaster.c:1244
#23 0x000000000045f9af in main (argc=3, argv=0x1dd2750) at main.c:228

git 2570e28 REL9_4_STABLE | PostgreSQL 9.4.1 on x86_64-unknown-linux-gnu,
compiled by gcc (GCC) 4.8.2, 64-bit

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2015-03-05 17:33:22 Re: BUG #12833: Cannot cancel query or terminate backend if it client is SIGSTOPed
Previous Message Tom Lane 2015-03-05 14:50:28 Re: BUG #12832: pg_dump ERROR with temporary functions