[Pgpool-general] pgpool-II-2.2.3 coredumps repeatedly

Bob Lunney bob_lunney at yahoo.com
Sat Aug 15 08:30:28 UTC 2009


I'm running pgpool-II-2.2.3 against PostgreSQL 8.4 on SLES 10.1.  After running for awhile pgpool dumps core.  It continues to run, but it repeatedly forks children and segfaults, filling the PG system db logs with messages like:

:4a82d4e0.77ef::30703:1:2009-08-12 09:42:40.235 CDTLOG:  connection received: host=[local]
[local]:4a82d4e0.77ef::30703:2:2009-08-12 09:42:40.235 CDTLOG:  connection authorized: user=pgpool database=pgpool
[local]:4a82d4e0.77ef::30703:3:2009-08-12 09:42:40.296 CDTLOG:  unexpected EOF on client connection
[local]:4a82d4e0.77ef::30703:4:2009-08-12 09:42:40.296 CDTLOG:  disconnection: session time: 0:00:00.061 user=pgpool database=pgpool host

pgpool generates sets of these messages every few milliseconds.

It looks to me like the connection_info pointer has gotten corrupted:

GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux"...Using host libthread_db library "/lib64/libthread_db.so.1".

Core was generated by `pgpool:                                                                       '.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /opt/pg-8.4.0/lib/libpq.so.5...done.
Loaded symbols for /opt/pg-8.4.0/lib/libpq.so.5
Reading symbols from /opt/pgpool/lib/libpcp.so.0...done.
Loaded symbols for /opt/pgpool/lib/libpcp.so.0
Reading symbols from /lib64/libresolv.so.2...done.
Loaded symbols for /lib64/libresolv.so.2
Reading symbols from /lib64/libnsl.so.1...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libcrypt.so.1...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /lib64/libpthread.so.0...done.
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
#0  0x00002b3505bd9b52 in memset () from /lib64/libc.so.6
(gdb) where
#0  0x00002b3505bd9b52 in memset () from /lib64/libc.so.6
#1  0x0000000000423291 in pool_init_cp () at pool_connection_pool.c:72
#2  0x00000000004076d9 in do_child (unix_fd=3, inet_fd=4) at child.c:154
#3  0x0000000000404c39 in fork_a_child (unix_fd=3, inet_fd=4, id=8) at main.c:828
#4  0x0000000000406b96 in reaper () at main.c:1617
#5  0x0000000000404021 in main (argc=6, argv=0x7fffa561c2a8) at main.c:474
(gdb) up
#1  0x0000000000423291 in pool_init_cp () at pool_connection_pool.c:72
72                      memset(pool_connection_pool[i].info, 0, sizeof(ConnectionInfo));
(gdb) l
67              memset(pool_connection_pool, 0, sizeof(POOL_CONNECTION_POOL)*pool_config->max_pool);
68
69              for (i = 0; i < pool_config->max_pool; i++)
70              {
71                      pool_connection_pool[i].info = &(MY_PROCESS_INFO.connection_info[i]);
72                      memset(pool_connection_pool[i].info, 0, sizeof(ConnectionInfo));
73              }
74              return 0;
75      }
76
(gdb) p my_proc_id
$1 = 8
(gdb) p pids[7].connection_info[0]
$2 = {database = '\0' <repeats 63 times>, user = '\0' <repeats 31 times>, major = 0, minor = 0, pid = -565575680, key = -1413945014, counter = 0, create_time = 0,
  load_balancing_node = 0}
(gdb) p pids[8].connection_info[0]
Cannot access memory at address 0x2e77741b8c5c0000

Running in parallel mode, no replication, no loadbalance:

num_init_children = 10
max_pool = 4
child_life_time = 300
connection_life_time = 0
child_max_connections = 0
client_idle_limit = 0

Any suggestions on how to fix this?



      


More information about the Pgpool-general mailing list