[Spice-devel] [PATCH spice-gtk] build: Make usb-acl-helper test work under Meson
Eduardo Lima (Etrunko)
etrunko at redhat.com
Wed Sep 5 14:06:48 UTC 2018
On 09/04/2018 12:50 PM, Frediano Ziglio wrote:
>>
>> On 09/03/2018 01:34 PM, Frediano Ziglio wrote:
>>> Meson waits for pipes (stdout and stderr) to be not readable but
>>> our mocking helper does not close these handles causing Meson
>>> to give some problems.
>>>
>>
>> Can you elaborate on the "some problems"? Also this patch looks more
>> like a workaround from our side for a real bug in meson?
>>
>
> Where autoconf succeed Meson give:
>
>
>
> Traceback (most recent call last):
> File "/usr/bin/meson", line 29, in <module>
> sys.exit(mesonmain.main())
> File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 379, in main
> return run(sys.argv[1:], launcher)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 278, in run
> return mtest.run(remaining_args)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 760, in run
> return th.doit()
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 511, in doit
> self.run_tests(tests)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 669, in run_tests
> self.drain_futures(futures)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 685, in drain_futures
> self.process_test_result(result.result())
> File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
> return self.__get_result()
> File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
> raise self._exception
> File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
> result = self.fn(*self.args, **self.kwargs)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 258, in run
> return self._run_cmd(wrap + cmd + self.test.cmd_args + self.options.test_args)
> File "/usr/lib/python3.6/site-packages/mesonbuild/mtest.py", line 356, in _run_cmd
> (stdo, stde) = p.communicate()
> File "/usr/lib64/python3.6/subprocess.py", line 843, in communicate
> stdout, stderr = self._communicate(input, endtime, timeout)
> File "/usr/lib64/python3.6/subprocess.py", line 1505, in _communicate
> selector.register(self.stdout, selectors.EVENT_READ)
> File "/usr/lib64/python3.6/selectors.py", line 351, in register
> key = super().register(fileobj, events, data)
> File "/usr/lib64/python3.6/selectors.py", line 237, in register
> key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data)
> File "/usr/lib64/python3.6/selectors.py", line 224, in _fileobj_lookup
> return _fileobj_to_fd(fileobj)
> File "/usr/lib64/python3.6/selectors.py", line 39, in _fileobj_to_fd
> "{!r}".format(fileobj)) from None
> ValueError: Invalid file object: <_io.BufferedReader name=14>
>
>
>
> without any logs on its log files.
>
> I didn't investigate much but I think Meson is trying to use
> a closed file.
>
> The helper is supposed to be SUID so trying to kill it from
> spice-client-lib code would be a no-op.
>
> In the real (no mock) helper is specified that writing to
> standard error is the wanted behaviour so using /dev/null
> (or similar) would be a regression in spice-client-lib.
>
> Maybe should be
>
> "Meson waits for pipes (stdout and stderr) to be not readable but
> our mocking helper does not close these handles causing Meson
> to exit with a stack trace."
>
> Note that the fact that the helper is not closing the handles
> is a wanted behaviour.
Okay with this explanation, can you also put this last sentence about
not closing the handles on the commit message? If possible, a link to a
bug in meson issue tracker? https://github.com/mesonbuild/meson/issues
Acked-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
>
>>> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
>>> ---
>>> tests/usb-acl-helper.c | 8 ++++++++
>>> 1 file changed, 8 insertions(+)
>>>
>>> diff --git a/tests/usb-acl-helper.c b/tests/usb-acl-helper.c
>>> index 06f8036..310bdaf 100644
>>> --- a/tests/usb-acl-helper.c
>>> +++ b/tests/usb-acl-helper.c
>>> @@ -15,6 +15,7 @@
>>> License along with this library; if not, see
>>> <http://www.gnu.org/licenses/>.
>>> */
>>>
>>> +#include <stdio.h>
>>> #include <glib.h>
>>> #include "usb-acl-helper.h"
>>>
>>> @@ -198,6 +199,13 @@ static void test_acl_helper_no_response(Fixture
>>> *fixture, gconstpointer user_dat
>>>
>>> int main(int argc, char* argv[])
>>> {
>>> + /* Meson wait for stderr to be not readable so make sure the
>
> Typo: wait -> waits
>
>>> + * helper does not keep the pipe open (this happens with current
>>> + * mock helper) */
>>> + if (freopen("usb-acl-helper-error.log", "w", stderr) == NULL) {
>>> + return 1;
>>> + }
>>> +
>>> g_test_init(&argc, &argv, NULL);
>>>
>>> g_test_add("/usb-acl-helper/success", Fixture, NULL,
>>>
>>
>
> Frediano
>
--
Eduardo de Barros Lima (Etrunko)
Software Engineer - RedHat
etrunko at redhat.com
More information about the Spice-devel
mailing list