Re: issue with meson builds on msys2

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: issue with meson builds on msys2
Дата
Msg-id 26b0ebdb-3e7c-d562-620d-8e2f17286ff9@dunslane.net
обсуждение исходный текст
Ответ на Re: issue with meson builds on msys2  (Andres Freund <andres@anarazel.de>)
Ответы Re: issue with meson builds on msys2  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers


On 2023-05-15 Mo 15:38, Andres Freund wrote:
Hi,

On 2023-05-05 07:08:39 -0400, Andrew Dunstan wrote:
If you want to play I can arrange access.
Andrew did - thanks!


A first observeration is that making the shell command slightly more
complicated, by echoing $? after pg_ctl, prevents the error:

/usr/bin/perl -e 'system(qq{"bin/pg_ctl" -D data-C -w -l logfile start > startlog 2>&1}) ;system(qq{"bin/pg_ctl" -D data-C -w -l logfile stop > stoplog 2>&1;}) ; print $? ? "BANG: $?\n" : "OK\n";'
BANG: 33280

/usr/bin/perl -e 'system(qq{"bin/pg_ctl" -D data-C -w -l logfile start > startlog 2>&1}) ;system(qq{"bin/pg_ctl" -D data-C -w -l logfile stop > stoplog 2>&1; echo $?}) ; print $? ? "BANG: $?\n" : "OK\n";'
0
OK


You're now testing something else, namely the return of the echo rather than the call to pg_ctl, so I don't think this is any kind of answer. It would just be ignoring the result of pg_ctl.



So does manually or or via a subshell adding another layer of shell.


As Andrew observed earlier, the issue does not occur when not performing
redirection of the output. One interesting bit there is that the perl docs for
system include:
https://perldoc.perl.org/functions/system

If there are no shell metacharacters in the argument, it is split into words
and passed directly to execvp, which is more efficient. On Windows, only the
system PROGRAM LIST syntax will reliably avoid using the shell; system LIST,
even with more than one element, will fall back to the shell if the first
spawn fails.
My guesss is that the issue somehow is triggered around the shell handling.


One relevant bit: If I use strace (from msys) within system, the subprograms
(shell and pg_ctl) actually exit with 0, from what I can tell - but 33280
still is returned. Unfortunately, if I use strace for all of perl, the error
vanishes.


Perhaps are some odd interactions with the stuff that InheritstdHandles()
does?


I observed the same thing with strace. Kind of a Heisenbug.



Andrew, is it ok if modify pg_ctl.c and rebuild? I don't know how "detached"
from the actual buildfarm animal the system you gave me access to is...


Feel free to do anything you want. This is a completely separate instance from the buildfarm animals. When we're done with this issue the EC2 instance will go away.

If you use the script just run in test mode or from-source mode, so it doesn't try to report results (that would fail anyway, as it doesn't have a registered secret). You might have to force have_ipc_run to 0. Or you can just build / install manually.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: issue with meson builds on msys2
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: Upgrade of git.postgresql.org