[PATCH 6/7] util: Check for pkttyagent availability properly
Martin Kletzander
mkletzan at redhat.com
Sat Dec 11 10:16:13 UTC 2021
On Fri, Dec 10, 2021 at 05:48:03PM -0700, Jim Fehlig wrote:
>Hi Martin!
>
>I recently received a bug report (sorry, not public) about simple operations
>like 'virsh list' hanging when invoked with an internal test tool. I found this
>commit to be the culprit.
>
>On 11/20/21 16:10, Martin Kletzander wrote:
>> It does not need a tty to work, it opens its controlling terminal for user
>> interaction and with this patch even crazy things like this work:
>>
>> echo 'list --name' | virsh -q >/dev/null
>
>FYI, your crazy thing worked for me without this commit :-).
>
With a polkit access driver, without a polkit agent already running, and
without a polkit rule allowing access without authentication?
>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>> ---
>> src/util/virpolkit.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/util/virpolkit.c b/src/util/virpolkit.c
>> index 63bb8133a8aa..7156adc10c0a 100644
>> --- a/src/util/virpolkit.c
>> +++ b/src/util/virpolkit.c
>> @@ -180,9 +180,9 @@ virPolkitAgentCreate(void)
>> int outfd = STDOUT_FILENO;
>> int errfd = STDERR_FILENO;
>>
>> - if (!isatty(STDIN_FILENO)) {
>
>With the test tool invoking virsh, isatty fails
>
>> + if (!virPolkitAgentAvailable()) {
>
>but virPolkitAgentAvailable succeeds. pkttyagent is then needlessly spawned with
>no one to talk to.
>
Well, pkttyagent does not use stdin at all. It checks the controlling
terminal and then opens that to be used for both stdout and stdin.
That's why I tried to make it work.
>I haven't been able to cook up a simple reproducer. Not sure if it helps, but
>here's a pstree view of the internal test tool
>
>sshd(15736)---bash(15739)---perl(17717) \
>---runtest(17722)---test.sh(17727) \
>---virsh(17728)-+-pkttyagent(17730)-+-{gdbus}(17732)
> | |-{gmain}(17731)
> | `-{pkttyagent}(17733)
> `-{vshEventLoop}(17729)
>
>I'm not familiar with the test tool but have cc'd Julie, who might be able to
>answer any questions about it.
>
The thing is that I got our test suite failing because we had the
opposite problem. Meson is running tests in a new session without a
controlling terminal, however with stdin normally accessible. Virsh
tries to run it and it fails every time.
I guess there is no harm in also checking if stdin is a tty, I'll send a
patch for that. Thanks for letting me know!
>Regards,
>Jim
>
>> virReportError(VIR_ERR_SYSTEM_ERROR, "%s",
>> - _("Cannot start polkit text agent without a tty"));
>> + _("polkit text authentication agent unavailable"));
>> goto error;
>> }
>>
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20211211/d97e0102/attachment-0001.sig>
More information about the libvir-list
mailing list