All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Denis V. Lunev" <den-lists@parallels.com>
To: Yuri Pudgorodskiy <yur@virtuozzo.com>,
	Michael Roth <mdroth@linux.vnet.ibm.com>,
	"Denis V. Lunev" <den@openvz.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file.
Date: Fri, 27 Nov 2015 13:10:56 +0300	[thread overview]
Message-ID: <56582C30.7090206@parallels.com> (raw)
In-Reply-To: <565741F4.6040707@virtuozzo.com>

On 11/26/2015 08:31 PM, Yuri Pudgorodskiy wrote:
> On 11/26/2015 1:21 AM, Michael Roth wrote:
>> Quoting Denis V. Lunev (2015-11-25 13:02:26)
>>> From: Yuri Pudgorodskiy <yur@virtuozzo.com>
>>>
>>> With previous commit we added gspawn-win64-helper-console.exe,
>>> required for gspawn() mingw implementation.
>>> Unfortunatly when running as a service without interactive
>>> desktop, gspawn() also requires another helper app.
>>>
>>> Added gspawn-win64-helper.exe and gspawn-win32-helper.exe
>>> for corresponding architectures.
>>>
>>> Signed-off-by: Yuri Pudgorodskiy <yur@virtuozzo.com>
>>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>>> CC: Michael Roth <mdroth@linux.vnet.ibm.com>
>> Thanks, applied to qga tree with minor whitespace fixup:
>>
>>    https://github.com/mdroth/qemu/commits/qga
>>
>> I noticed something testing this though: if we run qemu-ga
>> from a console, then exec something like ipconfig with
>> capture-output: true, qemu-ga returns that output via
>> guest-exec-status.
>>
>> If we run it as a service however, there's no output.
>>
>> # with qemu-ga started via console
>> {'execute':'guest-exec','arguments':{'path':'/Windows/System32/ipconfig.exe', 
>>
>> 'capture-output':true}}
>> {"return": {"pid": 1644}}
>> {'execute':'guest-exec-status','arguments':{'pid':1644}}
>> {"return": {"exitcode": 0, "out-data":
>> "DQpXaW5kb3dzIElQIENvbmZpZ3VyYXRpb24NCg0KDQpFdGhlcm5ldCBhZGFwdGVyIExvY2FsIEFyZWEgQ29ubmVjdGlvbiAyOg0KDQogICBDb25uZWN0aW9uLXNwZWNpZmljIEROUyBTdWZmaXggIC4gOiANCiAgIExpbmstbG9jYWwgSVB2NiBBZGRyZXNzIC4gLiAuIC4gLiA6IGZlODA6OjMwMDU6NmRjOjNjNmE6NTQ2NCUxNA0KICAgSVB2NCBBZGRyZXNzLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDogMTkyLjE2OC4xMjIuMTQNCiAgIFN1Ym5ldCBNYXNrIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA6IDI1NS4yNTUuMjU1LjANCiAgIERlZmF1bHQgR2F0ZXdheSAuIC4gLiAuIC4gLiAuIC4gLiA6IDE5Mi4xNjguMTIyLjENCg0KVHVubmVsIGFkYXB0ZXIgaXNhdGFwLns3Q0Q3OTAwQy05NThCLTRBRUMtQkUwRC0yMTNERjM1NjQ2MEZ9Og0KDQogICBNZWRpYSBTdGF0ZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOiBNZWRpYSBkaXNjb25uZWN0ZWQNCiAgIENvbm5lY3Rpb24tc3BlY2lmaWMgRE5TIFN1ZmZpeCAgLiA6IA0KDQpUdW5uZWwgYWRhcHRlciBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDExOg0KDQogICBNZWRpYSBTdGF0ZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOiBNZWRpYSBkaXNjb25uZWN0ZWQNCiAgIENvbm5lY3Rpb24tc3BlY2lmaWMgRE5TIFN1ZmZpeCAgLiA6IA0K", 
>>
>> "exited": true}}
>>
>> # wtih qemu-ga started via windows service
>> {'execute':'guest-exec','arguments':{'path':'/Windows/System32/ipconfig.exe', 
>>
>> 'capture-output':true}}
>> {"return": {"pid": 1176}}
>> {'execute':'guest-exec-status','arguments':{'pid':1176}}
>> {"return": {"exitcode": 0, "exited": true}}
>>
>> Is this expected?
>>
>
> No, we want to fix it somehow - but not now,  because the whole 
> picture is not clear yet.
> Looks like when running gspawn() from a win32 service,  some win32 
> processes open
> its own console and write stdout to it instead of parent's fd 
> inherited from gspawn-helper.
>
> Not sure whether it can be corrected without patching gspawn() and 
> gspawn-helper code or not.
> If so, we may consider implementing platform-specific version of 
> guest-exec using win32 api.
>
> Right now the best what can be suggested, it is a workaround: usage of 
> redirection on guest side.
>
> Executing 3 commands in a row do a trick
>
> cmd /c ipconfig >out.txt
> cmd /c type out.txt
> cmd /c del out.txt
>
> but looks ugly and error-prone.
>
> One more pity notice, it seems that gspawn-helper does incorrect quoting:
>
> cmd /c echo "hello"
>
> produces \"hello\" output instead of expected "hello".
> Again, quoting issue may be another point for implementing better 
> win32-specific guest-exec.
>
> I'll share my visions on this problem later after some experiments.
>
>
no

for me this smells like GLIB bug which should
be addressed separately.

Den

      reply	other threads:[~2015-11-27 10:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-25 19:02 [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file Denis V. Lunev
2015-11-25 22:21 ` Michael Roth
2015-11-26 17:31   ` Yuri Pudgorodskiy
2015-11-27 10:10     ` Denis V. Lunev [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56582C30.7090206@parallels.com \
    --to=den-lists@parallels.com \
    --cc=den@openvz.org \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yur@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.