Re: psql tests hangs - Mailing list pgsql-hackers
From | Pavel Stehule |
---|---|
Subject | Re: psql tests hangs |
Date | |
Msg-id | CAFj8pRBhfoSkMd2hXJSiHmRXB-_6ezrwYtLaWSyr3s=nsPnZUA@mail.gmail.com Whole thread Raw |
In response to | Re: psql tests hangs (Kirk Wolak <wolakk@gmail.com>) |
Responses |
Re: psql tests hangs
Re: psql tests hangs |
List | pgsql-hackers |
pá 12. 5. 2023 v 8:20 odesílatel Kirk Wolak <wolakk@gmail.com> napsal:
On Fri, May 12, 2023 at 1:46 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:pá 12. 5. 2023 v 6:50 odesílatel Kirk Wolak <wolakk@gmail.com> napsal:On Fri, May 12, 2023 at 12:14 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:Kirk Wolak <wolakk@gmail.com> writes:
> Did you try the print statement that Andrey asked Pavel to try?
...The strange thing is hanging. Broken tests depending on locale are usual. But I didn't remember hanging.RegardsPavelSo, if you do psql -c "..."with both of those \watch instructions, do either one hang? (I am now guessing "no")
I know that perl is using a special library to "remote control psql" (like a pseudo terminal, I guess).[I had to abort some of the perl testing in Windows because that perl library didn't work with my psql in Windows]Next, can you detect which process is hanging? (is it perl, the library, psql, ?).
It hangs in perl
but now I found there is dependency on PSQL_PAGER setting
it started pager in background, I had lot of zombie pspg processes
Unfortunately, when I unset this variable, the test hangs still
here is backtrace
Missing separate debuginfos, use: dnf debuginfo-install perl-interpreter-5.36.1-496.fc38.x86_64
(gdb) bt
#0 0x00007fbbc1129ade in select () from /lib64/libc.so.6
#1 0x00007fbbc137363b in Perl_pp_sselect () from /lib64/libperl.so.5.36
#2 0x00007fbbc1317958 in Perl_runops_standard () from /lib64/libperl.so.5.36
#3 0x00007fbbc128259d in perl_run () from /lib64/libperl.so.5.36
#4 0x000056392bd9034a in main ()
(gdb) bt
#0 0x00007fbbc1129ade in select () from /lib64/libc.so.6
#1 0x00007fbbc137363b in Perl_pp_sselect () from /lib64/libperl.so.5.36
#2 0x00007fbbc1317958 in Perl_runops_standard () from /lib64/libperl.so.5.36
#3 0x00007fbbc128259d in perl_run () from /lib64/libperl.so.5.36
#4 0x000056392bd9034a in main ()
It is waiting on reading from pipe probably
psql is living too, and it is waiting too
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f071740bc37 in wait4 () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.37-4.fc38.x86_64 ncurses-libs-6.4-3.20230114.fc38.x86_64 readline-8.2-3.fc38.x86_64
(gdb) bt
#0 0x00007f071740bc37 in wait4 () from /lib64/libc.so.6
#1 0x00007f07173a9a10 in _IO_proc_close@@GLIBC_2.2.5 () from /lib64/libc.so.6
#2 0x00007f07173b51e9 in __GI__IO_file_close_it () from /lib64/libc.so.6
#3 0x00007f07173a79fb in fclose@@GLIBC_2.2.5 () from /lib64/libc.so.6
#4 0x0000000000406be4 in do_watch (query_buf=query_buf@entry=0x5ae540, sleep=sleep@entry=0.01, iter=0, iter@entry=3) at command.c:5348
#5 0x00000000004087a5 in exec_command_watch (scan_state=scan_state@entry=0x5ae490, active_branch=active_branch@entry=true, query_buf=query_buf@entry=0x5ae540, previous_buf=previous_buf@entry=0x5ae560) at command.c:2875
#6 0x000000000040d4ba in exec_command (previous_buf=0x5ae560, query_buf=0x5ae540, cstack=0x5ae520, scan_state=0x5ae490, cmd=0x5ae9a0 "watch") at command.c:413
#7 HandleSlashCmds (scan_state=scan_state@entry=0x5ae490, cstack=cstack@entry=0x5ae520, query_buf=0x5ae540, previous_buf=0x5ae560) at command.c:230
0x00007f071740bc37 in wait4 () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.37-4.fc38.x86_64 ncurses-libs-6.4-3.20230114.fc38.x86_64 readline-8.2-3.fc38.x86_64
(gdb) bt
#0 0x00007f071740bc37 in wait4 () from /lib64/libc.so.6
#1 0x00007f07173a9a10 in _IO_proc_close@@GLIBC_2.2.5 () from /lib64/libc.so.6
#2 0x00007f07173b51e9 in __GI__IO_file_close_it () from /lib64/libc.so.6
#3 0x00007f07173a79fb in fclose@@GLIBC_2.2.5 () from /lib64/libc.so.6
#4 0x0000000000406be4 in do_watch (query_buf=query_buf@entry=0x5ae540, sleep=sleep@entry=0.01, iter=0, iter@entry=3) at command.c:5348
#5 0x00000000004087a5 in exec_command_watch (scan_state=scan_state@entry=0x5ae490, active_branch=active_branch@entry=true, query_buf=query_buf@entry=0x5ae540, previous_buf=previous_buf@entry=0x5ae560) at command.c:2875
#6 0x000000000040d4ba in exec_command (previous_buf=0x5ae560, query_buf=0x5ae540, cstack=0x5ae520, scan_state=0x5ae490, cmd=0x5ae9a0 "watch") at command.c:413
#7 HandleSlashCmds (scan_state=scan_state@entry=0x5ae490, cstack=cstack@entry=0x5ae520, query_buf=0x5ae540, previous_buf=0x5ae560) at command.c:230
I am not sure, it is still doesn't work but probably there are some dependencies on my setting
PSQL_PAGER and PSQL_WATCH_PAGER
so this tests fails due my setting
[pavel@localhost postgresql.master]$ set |grep PSQL
PSQL_PAGER='pspg -X'
PSQL_WATCH_PAGER='pspg -X --stream'
PSQL_PAGER='pspg -X'
PSQL_WATCH_PAGER='pspg -X --stream'
Regards
Pavel
I would be curious now about the details of your perl install, and your perl libraries...
pgsql-hackers by date: