<div dir="ltr">Hello PgPool Team,<div><br></div><div>I've seen repeated segfaults in our test environment.</div><div><br></div><div>Environment:</div><div>1. 2 app servers with stand alone pgpool on each server.</div><div>2. 2 DB servers with PostgreSQL  14 on it with streaming replication.</div><div>3. All servers - hardware servers in Hezner.</div><div><br></div><div>My PgPool was installed from PgPool RPM repository:<br>$ rpm -qa | grep pgpool<br>pgpool-II-release-4.3-1.noarch<br>pgpool-II-pg14-4.3.1-1pgdg.rhel7.x86_64<br>pgpool-II-pg14-debuginfo-4.3.1-1pgdg.rhel7.x86_64<br></div><div><br></div><div>Main strange issue - We saw segfaults only on the second application node.</div><div>Main difference with nodes - kernel version:</div><div>node1: Linux app1.dev-cluster.local 3.10.0-1127.18.2.el7.x86_64 #1 SMP Sun Jul 26 15:27:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux</div><div>node2: Linux app2.dev-cluster.local 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux</div><div>and sysctl.conf:</div><div>node1:<br># Redirect 10k RPS<br># Default 128<br>net.core.somaxconn = 10240<br># Default 1000<br>net.core.netdev_max_backlog = 10240<br></div><div><br></div><div>node2:</div><div># the kernel's socket backlog limit<br>net.core.somaxconn = 1024<br></div><div># maximum size of the receive queue<br>net.core.netdev_max_backlog=3000<br></div><div><br></div><div>pgpool.conf:</div><div>backend_clustering_mode = 'streaming_replication'<br>socket_dir = '/var/run/pgpool'<br>pcp_socket_dir = '/var/run/pgpool'<br>backend_hostname0 = '10.10.10.2'<br>backend_port0 = 5432<br>backend_weight0 = 1<br>backend_data_directory0 = '/var/lib/pgsql/14/data'<br>backend_flag0 = 'ALLOW_TO_FAILOVER'<br>backend_application_name0 = 'hezner-db1'<br>backend_hostname1 = '10.10.10.1'<br>backend_port1 = 5432<br>backend_weight1 = 1<br>backend_data_directory1 = '/var/lib/pgsql/14/data'<br>backend_flag1 = 'ALLOW_TO_FAILOVER'<br>backend_application_name1 = 'hezner-db2'<br>enable_pool_hba = on<br>pool_passwd = 'pool_passwd'<br>num_init_children = 600<br>max_pool = 1<br>child_max_connections = 1<br>connection_cache = off<br>load_balance_mode = off<br>sr_check_period = 0<br>sr_check_user = 'postgres'<br>sr_check_database = 'postgres'<br>health_check_period = 3<br>health_check_timeout = 1<br>health_check_user = 'postgres'<br>health_check_max_retries = 3<br>health_check_retry_delay = 1<br>connect_timeout = 1000<br>failover_command = '/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S'<br>failover_on_backend_error = off<br>failover_on_backend_shutdown = off<br>hostname0 = ''<br>wd_ipc_socket_dir = '/var/run/pgpool'<br></div><div><br></div><div>For last day (time in JST):<br></div><div>[Tue Apr 19 01:10:03 2022] pgpool[12136]: segfault at 14 ip 0000000000435935 sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 01:28:02 2022] pgpool[23275]: segfault at 14 ip 000000000043532e sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 01:45:31 2022] pgpool[32436]: segfault at 14 ip 000000000043532e sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 06:14:26 2022] pgpool[4583]: segfault at 14 ip 000000000043532e sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 07:05:02 2022] pgpool[27061]: segfault at 14 ip 0000000000435935 sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 12:04:56 2022] pgpool[21666]: segfault at 14 ip 000000000043532e sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 16:24:56 2022] pgpool[26156]: segfault at 14 ip 000000000043532e sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 18:27:02 2022] pgpool[21477]: segfault at 14 ip 0000000000435935 sp 00007ffd4836f920 error 6 in pgpool[400000+21a000]<br>[Tue Apr 19 21:10:05 2022] pgpool[10103]: segfault at 14 ip 0000000000435935 sp 00007ffdfc6a0e00 error 6 in pgpool[400000+21a000]<br>[Wed Apr 20 02:51:23 2022] pgpool[16108]: segfault at 14 ip 000000000043532e sp 00007ffdfc6a0e00 error 6 in pgpool[400000+21a000]<br>[Wed Apr 20 02:55:45 2022] pgpool[16874]: segfault at 14 ip 000000000043532e sp 00007ffdfc6a0e00 error 6 in pgpool[400000+21a000]<br></div><div><br></div><div>I got only the last 3 core dumps. They were the same.</div><div>The last core dump:</div><div>GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7<br>Copyright (C) 2013 Free Software Foundation, Inc.<br>License GPLv3+: GNU GPL version 3 or later <<a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a>><br>This is free software: you are free to change and redistribute it.<br>There is NO WARRANTY, to the extent permitted by law.  Type "show copying"<br>and "show warranty" for details.<br>This GDB was configured as "x86_64-redhat-linux-gnu".<br>For bug reporting instructions, please see:<br><<a href="http://www.gnu.org/software/gdb/bugs/">http://www.gnu.org/software/gdb/bugs/</a>>...<br>Reading symbols from /usr/bin/pgpool...Reading symbols from /usr/lib/debug/usr/bin/pgpool.debug...done.<br>done.<br>[New LWP 16874]<br>[Thread debugging using libthread_db enabled]<br>Using host libthread_db library "/lib64/libthread_db.so.1".<br>Core was generated by `pgpool: wait for connection request             '.<br>Program terminated with signal 11, Segmentation fault.<br>#0  0x000000000043532e in do_child (fds=fds@entry=0x17593e0) at protocol/child.c:333<br>333                     proc_info->wait_for_connect = 0;<br>Missing separate debuginfos, use: debuginfo-install audit-libs-2.8.4-4.el7.x86_64 cyrus-sasl-lib-2.1.26-23.el7.x86_64 glibc-2.17-260.el7_6.3.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-19.el7.x86_64 libcap-ng-0.7.5-4.el7.x86_64 libcom_err-1.42.9-12.el7_5.x86_64 libgcc-4.8.5-36.el7.x86_64 libmemcached-1.0.16-5.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 libstdc++-4.8.5-36.el7.x86_64 nspr-4.19.0-1.el7_5.x86_64 nss-3.36.0-5.el7_5.x86_64 nss-softokn-freebl-3.36.0-5.el7_5.x86_64 nss-util-3.36.0-1.el7_5.x86_64 openldap-2.4.44-15.el7_5.x86_64 openssl-libs-1.0.2k-21.el7_9.x86_64 pam-1.1.8-22.el7.x86_64 pcre-8.32-17.el7.x86_64 postgresql14-libs-14.2-1PGDG.rhel7.x86_64 zlib-1.2.7-18.el7.x86_64<br>(gdb) bt full<br>#0  0x000000000043532e in do_child (fds=fds@entry=0x17593e0) at protocol/child.c:333<br>        sp = <optimized out><br>        saddr = {addr = {ss_family = 0, __ss_padding = '\000' <repeats 117 times>, __ss_align = 0}, salen = 128}<br>        local_sigjmp_buf = {{__jmpbuf = {24482792, 7991924142289912070, 211, 0, 139985774064536, 1, -7993048770381283066, 7991923603094831366}, __mask_was_saved = 1, __saved_mask = {__val = {0, 140728838264384,<br>                139985973211296, 140728838264848, 5212294, 140728838264400, 139985969563067, 42949672960, 680, 140728838264368, 0, 5085120, 0, 140724603453444, 3440, 5085122}}}}<br>        backend = 0x0<br>        now = {tv_sec = 1650390758, tv_usec = 681992}<br>        tz = {tz_minuteswest = 0, tz_dsttime = 0}<br>        connections_count = 0<br>        psbuf = "|\022y\001\000\000\000\000\370\026j\374\375\177\000\000\b\026j\374\375\177\000\000|\022y\001\000\000\000\000\020\027j\374\375\177\000\000 \027j\374\375\177\000\000\002@\021\006Q\177\000\000W\323\377\005Q\177\000\000\001\200\255\373\000\000\377\000}\022y\001\000\000\000\000}\022y\001\000\000\000\000|\022y\001\000\000\000\000|\022y\001\000\000\000\000|\022y\001\000\000\000\000|\022y\001\070\067\066\063`\025j\374\375\177\000\000:xu\001\000\000\000\000`\025j\374\375\177\000\000\300\227M\000\000\000\000\000 \027j\374\375\177\000\000\001\000\000\000\000\000\000\000\335\003\000\000\000\000\000\000:xu\001\000\000\000\000\065\022\n\006Q\177\000\000\001\200\255\373\060\060\060\060"...<br>        proc_info = <optimized out><br>        walk = <optimized out><br>#1  0x000000000040b7e5 in fork_a_child (fds=0x17593e0, id=211) at main/pgpool_main.c:686<br>        pid = 0<br>#2  0x000000000040c2a3 in reaper () at main/pgpool_main.c:2509<br>        new_pid = 0<br>        shutdown_system = 0 '\000'<br>        restart_child = 1 '\001'<br>        found = 1 '\001'<br>        process_health_check = 0 '\000'<br>        pid = 9100<br>        status = 256<br>        i = 211<br>#3  0x0000000000412d7d in PgpoolMain (discard_status=discard_status@entry=0 '\000', clear_memcache_oidmaps=clear_memcache_oidmaps@entry=0 '\000') at main/pgpool_main.c:477<br>        i = 2<br>        local_sigjmp_buf = {{__jmpbuf = {1, 7991926004629963014, 9898, 140728838265744, 5, 1, -7993048769884258042, 7991923584716177670}, __mask_was_saved = 1, __saved_mask = {__val = {18446744066192964103, 0,<br>                139986006267048, 140728838265648, 140728838265632, 461466061, 4204876, 4294967295, 139985969301896, 139985969290592, 139986006197448, 5080360, 18446744073709551615, 0, 0, 4693792}}}}<br>        first = 0 '\000'<br>#4  0x0000000000409b4a in main (argc=<optimized out>, argv=<optimized out>) at main/main.c:365<br>        opt = <optimized out><br>        debug_level = <optimized out><br>        optindex = 0<br>        discard_status = 0 '\000'<br>        clear_memcache_oidmaps = 0 '\000'<br>        pcp_conf_file_path = "/etc/pgpool-II/pcp.conf", '\000' <repeats 8169 times><br>        conf_file_path = "/etc/pgpool-II/pgpool.conf", '\000' <repeats 8166 times><br>        hba_file_path = "/etc/pgpool-II/pool_hba.conf", '\000' <repeats 8164 times><br>        pool_passwd_key_file_path = "/var/lib/pgsql/.pgpoolkey\000 \000\000\000\000\000\002\000\000\000\006\000\000\000\270\r\006\000\000\000\000\000\270\r&\000\000\000\000\000\270\r&\000\000\000\000\000\340\001\000\000\000\000\000\000\340\001\000\000\000\000\000\000\b\000\000\000\000\000\000\000\004\000\000\000\004\000\000\000\310\001\000\000\000\000\000\000\310\001\000\000\000\000\000\000\310\001\000\000\000\000\000\000$\000\000\000\000\000\000\000$\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000P\345td\004\000\000\000\340\321\005\000\000\000\000\000\340\321\005\000\000\000\000\000\340\321\005\000\000\000\000\000\344\004\000\000\000\000\000\000\344\004\000\000\000\000\000\000\004\000\000\000\000\000\000\000"...<br>        long_options = {{name = 0x4d87d6 "hba-file", has_arg = 1, flag = 0x0, val = 97}, {name = 0x4d87df "debug", has_arg = 0, flag = 0x0, val = 100}, {name = 0x4d87e5 "config-file", has_arg = 1, flag = 0x0, val = 102},<br>          {name = 0x4d87f1 "key-file", has_arg = 1, flag = 0x0, val = 107}, {name = 0x4d87fa "pcp-file", has_arg = 1, flag = 0x0, val = 70}, {name = 0x4d8803 "help", has_arg = 0, flag = 0x0, val = 104}, {<br>            name = 0x4deab0 "mode", has_arg = 1, flag = 0x0, val = 109}, {name = 0x4d8808 "dont-detach", has_arg = 0, flag = 0x0, val = 110}, {name = 0x4d8814 "discard-status", has_arg = 0, flag = 0x0, val = 68}, {<br>            name = 0x4d8823 "clear-oidmaps", has_arg = 0, flag = 0x0, val = 67}, {name = 0x4d8831 "debug-assertions", has_arg = 0, flag = 0x0, val = 120}, {name = 0x4ed79c "version", has_arg = 0, flag = 0x0, val = 118}, {<br>            name = 0x0, has_arg = 0, flag = 0x0, val = 0}}<br></div><div><br></div></div>