<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">If there's a syntax error in pgpool.conf like:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">listen_addresses = '*<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">(without closing single quotes) trying to start pgpool results in a Segmentation Fault instead of a parsing error. Here's the backtrace:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Core was generated by `/usr/bin/pgpool -f /etc/pgpool-II/pgpool.conf -n'.<br>Program terminated with signal SIGSEGV, Segmentation fault.<br>#0  pfree (pointer=0x7f524ce70bc0) at parser/../../src/utils/mmgr/mcxt.c:956<br>956             (*context->methods->free_p) (context, pointer);<br>(gdb) bt full<br>#0  pfree (pointer=0x7f524ce70bc0) at parser/../../src/utils/mmgr/mcxt.c:956<br>        context = 0x0<br>#1  FreeConfigVariable (item=0x7f524ce70c08) at config/pool_config.l:287<br>No locals.<br>#2  FreeConfigVariables (list=<optimized out>) at config/pool_config.l:305<br>        next = 0x0<br>        item = 0x7f524ce70c08<br>#3  ParseConfigFile (config_file=<optimized out>, calling_file=calling_file@entry=0x0, depth=depth@entry=0, elevel=elevel@entry=21, head_p=head_p@entry=0x7ffc7a650d50, tail_p=tail_p@entry=0x7ffc7a650d48) at config/pool_config.l:465<br>        fd = 0x560db343af50<br>        lex_buffer = 0x560db343b130<br>        token = 8<br>        key = <optimized out><br>        val = <optimized out><br>        item = <optimized out><br>        buf = "/etc/pgpool-II\000pgpool.conf", '\000' <repeats 5998 times>...<br>        config_filepath = 0x7f524ce70b00 "/etc/pgpool-II/pgpool.conf"<br>#4  0x0000560db2501e2a in pool_get_config (config_file=<optimized out>, context=CFGCXT_INIT) at config/pool_config.l:485<br>        head_p = 0x7f524ce70b90<br>        tail_p = 0x7f524ce70c08<br>        res = <optimized out><br>        elevel = 21<br>#5  0x0000560db24f1417 in main (argc=<optimized out>, argv=<optimized out>) at main/main.c:231<br>        opt = <optimized out><br>        debug_level = 0<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 = '\000' <repeats 2856 times>...<br>        long_options = {{name = 0x560db25ea865 "hba-file", has_arg = 1, flag = 0x0, val = 97}, {name = 0x560db25e98d3 "debug", has_arg = 0, flag = 0x0, val = 100}, {name = 0x560db25ea86e "config-file", has_arg = 1, flag = 0x0, val = 102}, {<br>            name = 0x560db25ea87a "key-file", has_arg = 1, flag = 0x0, val = 107}, {name = 0x560db25ea883 "pcp-file", has_arg = 1, flag = 0x0, val = 70}, {name = 0x560db25ea88c "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x560db25ea606 "mode", has_arg = 1,<br>            flag = 0x0, val = 109}, {name = 0x560db25ea891 "dont-detach", has_arg = 0, flag = 0x0, val = 110}, {name = 0x560db25ea89d "discard-status", has_arg = 0, flag = 0x0, val = 68}, {name = 0x560db25ea8ac "clear-oidmaps", has_arg = 0, flag = 0x0, val = 67}, {<br>            name = 0x560db25ea8ba "debug-assertions", has_arg = 0, flag = 0x0, val = 120}, {name = 0x560db25fbb8b "version", has_arg = 0, flag = 0x0, val = 118}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">It seems this was introduced on this commit:<br><br><a href="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=25d05e55e6ebf334e768a9b454ecdb84a8a4054d">https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=25d05e55e6ebf334e768a9b454ecdb84a8a4054d</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I have attached a patch to mitigate this, but I'm not entirely sure if it's the right approach to avoiding the (possible?) memory leak with the "key" pointer.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I'll appreciate it if anyone can take a look at the patch or the issue overall.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thanks,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">--</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Carlos Chapi</div></div>