* [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file.
@ 2015-11-25 19:02 Denis V. Lunev
2015-11-25 22:21 ` Michael Roth
0 siblings, 1 reply; 4+ messages in thread
From: Denis V. Lunev @ 2015-11-25 19:02 UTC (permalink / raw)
Cc: Denis V. Lunev, Yuri Pudgorodskiy, qemu-devel, Michael Roth
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>
---
qga/installer/qemu-ga.wxs | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
index f25afdd..7c59972 100644
--- a/qga/installer/qemu-ga.wxs
+++ b/qga/installer/qemu-ga.wxs
@@ -95,11 +95,17 @@
<Component Id="gspawn-helper-console" Guid="{446185B3-87BE-43D2-96B8-0FEFD9E8696D}">
<File Id="gspawn-win32-helper-console.exe" Name="gspawn-win32-helper-console.exe" Source="$(var.Mingw_bin)/gspawn-win32-helper-console.exe" KeyPath="yes" DiskId="1"/>
</Component>
+ <Component Id="gspawn-helper" Guid="{CD67A5A3-2DB1-4DA1-A67A-8D71E797B466}">
+ <File Id="gspawn-win32-helper.exe" Name="gspawn-win32-helper.exe" Source="$(var.Mingw_bin)/gspawn-win32-helper.exe" KeyPath="yes" DiskId="1"/>
+ </Component>
<?endif?>
<?if $(var.Arch) = "64"?>
<Component Id="gspawn-helper-console" Guid="{9E615A9F-349A-4992-A5C2-C10BAD173660}">
<File Id="gspawn-win64-helper-console.exe" Name="gspawn-win64-helper-console.exe" Source="$(var.Mingw_bin)/gspawn-win64-helper-console.exe" KeyPath="yes" DiskId="1"/>
</Component>
+ <Component Id="gspawn-helper" Guid="{D201AD22-1846-4E4F-B6E1-C7A908ED2457}">
+ <File Id="gspawn-win64-helper.exe" Name="gspawn-win64-helper.exe" Source="$(var.Mingw_bin)/gspawn-win64-helper.exe" KeyPath="yes" DiskId="1"/>
+ </Component>
<?endif?>
<Component Id="iconv" Guid="{35EE3558-D34B-4F0A-B8BD-430FF0775246}">
<File Id="iconv.dll" Name="iconv.dll" Source="$(var.Mingw_bin)/iconv.dll" KeyPath="yes" DiskId="1"/>
@@ -159,6 +165,7 @@
<ComponentRef Id="qga_vss_tlb" />
<?endif?>
<ComponentRef Id="gspawn-helper-console" />
+ <ComponentRef Id="gspawn-helper" />
<ComponentRef Id="iconv" />
<ComponentRef Id="libgcc_arch_lib" />
<ComponentRef Id="libglib" />
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file.
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
0 siblings, 1 reply; 4+ messages in thread
From: Michael Roth @ 2015-11-25 22:21 UTC (permalink / raw)
To: Denis V. Lunev; +Cc: Yuri Pudgorodskiy, qemu-devel
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?
> ---
> qga/installer/qemu-ga.wxs | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
> index f25afdd..7c59972 100644
> --- a/qga/installer/qemu-ga.wxs
> +++ b/qga/installer/qemu-ga.wxs
> @@ -95,11 +95,17 @@
> <Component Id="gspawn-helper-console" Guid="{446185B3-87BE-43D2-96B8-0FEFD9E8696D}">
> <File Id="gspawn-win32-helper-console.exe" Name="gspawn-win32-helper-console.exe" Source="$(var.Mingw_bin)/gspawn-win32-helper-console.exe" KeyPath="yes" DiskId="1"/>
> </Component>
> + <Component Id="gspawn-helper" Guid="{CD67A5A3-2DB1-4DA1-A67A-8D71E797B466}">
> + <File Id="gspawn-win32-helper.exe" Name="gspawn-win32-helper.exe" Source="$(var.Mingw_bin)/gspawn-win32-helper.exe" KeyPath="yes" DiskId="1"/>
> + </Component>
> <?endif?>
> <?if $(var.Arch) = "64"?>
> <Component Id="gspawn-helper-console" Guid="{9E615A9F-349A-4992-A5C2-C10BAD173660}">
> <File Id="gspawn-win64-helper-console.exe" Name="gspawn-win64-helper-console.exe" Source="$(var.Mingw_bin)/gspawn-win64-helper-console.exe" KeyPath="yes" DiskId="1"/>
> </Component>
> + <Component Id="gspawn-helper" Guid="{D201AD22-1846-4E4F-B6E1-C7A908ED2457}">
> + <File Id="gspawn-win64-helper.exe" Name="gspawn-win64-helper.exe" Source="$(var.Mingw_bin)/gspawn-win64-helper.exe" KeyPath="yes" DiskId="1"/>
> + </Component>
> <?endif?>
> <Component Id="iconv" Guid="{35EE3558-D34B-4F0A-B8BD-430FF0775246}">
> <File Id="iconv.dll" Name="iconv.dll" Source="$(var.Mingw_bin)/iconv.dll" KeyPath="yes" DiskId="1"/>
> @@ -159,6 +165,7 @@
> <ComponentRef Id="qga_vss_tlb" />
> <?endif?>
> <ComponentRef Id="gspawn-helper-console" />
> + <ComponentRef Id="gspawn-helper" />
> <ComponentRef Id="iconv" />
> <ComponentRef Id="libgcc_arch_lib" />
> <ComponentRef Id="libglib" />
> --
> 2.1.4
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file.
2015-11-25 22:21 ` Michael Roth
@ 2015-11-26 17:31 ` Yuri Pudgorodskiy
2015-11-27 10:10 ` Denis V. Lunev
0 siblings, 1 reply; 4+ messages in thread
From: Yuri Pudgorodskiy @ 2015-11-26 17:31 UTC (permalink / raw)
To: Michael Roth, Denis V. Lunev; +Cc: qemu-devel
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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.5 1/1] qga: added another non-interactive gspawn() helper file.
2015-11-26 17:31 ` Yuri Pudgorodskiy
@ 2015-11-27 10:10 ` Denis V. Lunev
0 siblings, 0 replies; 4+ messages in thread
From: Denis V. Lunev @ 2015-11-27 10:10 UTC (permalink / raw)
To: Yuri Pudgorodskiy, Michael Roth, Denis V. Lunev; +Cc: qemu-devel
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-27 10:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 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.