|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-02-19 14:57 UTC] kees at tweakers dot net
Description:
------------
After opening a db connection to postgresql and executing a query, and after that query a 'die()' php doesnt return to the CLI but hangs
Reproduce code:
---------------
<?
$conn = pg_connect('user=acm dbname=loganalysis');
echo "Starting\n";
$q = "
CREATE TEMPORARY TABLE test (test integer);
COPY test FROM STDIN WITH DELIMITER ',' CSV QUOTE '\"' ESCAPE '\"'";
pg_query($conn, $q);
die("And now he hangs in a busy wait\n");
?>
Expected result:
----------------
acm@abaris:~$ php test.3.php
Starting
And now he hangs in a busy wait
acm@abaris:~$
Actual result:
--------------
acm@abaris:~$ php test.3.php
Starting
And now he hangs in a busy wait
[no prompt, you have to ctrl-c to exit]
Last part of strace:
recv(3, "C\0\0\0\21CREATE TABLE\0G\0\0\0\t\0\0\1\0\0", 16384, 0) = 28
write(1, "And now he hangs in a busy wait\n", 32And now he hangs in a busy wait
) = 32
close(6) = 0
close(5) = 0
close(4) = 0
He probably wants to do a close(3) here as that is the postgresql connection, but it never closes, and netstat will show an open connection:
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 3 [ ] STREAM CONNECTED 549701 - /var/run/postgresql/.s.PGSQL.5432
unix 3 [ ] STREAM CONNECTED 549700 26884/php
Tested with PHP 5.2.0-8 (debian package) and PHP 4.4.2
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 18:00:01 2025 UTC |
Btw, when hanging gdb to the php-process and type 'bt' you get this: #0 0xa7ba88c0 in free () from /lib/tls/libc.so.6 #1 0xa7ec8ea7 in PQclear () from /usr/lib/libpq.so.5 #2 0x08086fc8 in _close_pgsql_link (rsrc=0x81e43ec) at /usr/src/php-4.4.2/ext/pgsql/pgsql.c:277 #3 0x08139fb2 in list_entry_destructor (ptr=0x81e43ec) at /usr/src/php-4.4.2/Zend/zend_list.c:177 #4 0x08137977 in zend_hash_apply_deleter (ht=0x81a49e0, p=0x81e43b4) at /usr/src/php-4.4.2/Zend/zend_hash.c:611 #5 0x08137b97 in zend_hash_graceful_reverse_destroy (ht=0x81a49e0) at /usr/src/php-4.4.2/Zend/zend_hash.c:677 #6 0x0812b9ed in shutdown_executor () at /usr/src/php-4.4.2/Zend/zend_execute_API.c:211 #7 0x08133801 in zend_deactivate () at /usr/src/php-4.4.2/Zend/zend.c:689 #8 0x08107862 in php_request_shutdown (dummy=0x0) at /usr/src/php-4.4.2/main/main.c:999 #9 0x0814ee56 in main (argc=2, argv=0xafb6d114) at /usr/src/php-4.4.2/sapi/cli/php_cli.c:881tested with the snapshot: acm@abaris:/usr/src/php5.2-200702191330$ sapi/cli/php test.3.php Starting And now he hangs in a busy wait [ctrl-c] acm@abaris:/usr/src/php5.2-200702191330$ sapi/cli/php -v PHP 5.2.2-dev (cli) (built: Feb 19 2007 16:49:22) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies ldd sapi/cli/php libpq.so.5 => /usr/lib/libpq.so.5 (0xa7f3c000)