[PATCH v4 00/13] virdnsmasq: Lookup DNSMASQ in PATH

Michal Prívozník mprivozn at redhat.com
Tue Jan 18 13:13:23 UTC 2022


On 1/18/22 14:05, Michal Prívozník wrote:
> On 1/18/22 13:57, Andrea Bolognani wrote:
>> On Tue, Jan 18, 2022 at 12:30:30PM +0100, Michal Prívozník wrote:
>>> On 1/18/22 11:14, Andrea Bolognani wrote:
>>>> These changes seem to have made ASAN very unhappy, see
>>>>
>>>>   https://gitlab.com/MichalPrivoznik/libvirt/-/jobs/1985244739
>>>>   https://gitlab.com/MichalPrivoznik/libvirt/-/jobs/1985244740
>>>>
>>>> Tim, do you have any idea why that would be the case? My uneducated
>>>> guess is that the environment needed by ASAN is somehow lost when the
>>>> dnsmasqmock.py script is called, but I'm unfamiliar with how these
>>>> tools actually work.
>>>
>>> [...] I
>>> could mock virFindFileInPath() just like I am now, except let it return
>>> a predictable path (say /usr/sbin/dnsmasq) and then use
>>> virFileWrapper...() to redirect /usr/sbin/ to abs_srcdir.
>>>
>>> Alternative to all of this is to keed virCommandSetDryRun() just like I
>>> had in one of previous patches. Remind me please, what was the issue
>>> with that?
>>
>> The Python script approach seemed simpler, but in light of this issue
>> I guess that argument has gone completely out of the window :)
>>
>> Can you please try a version of this series with your original
>> dnsmasq mocking approach in CI and see whether ASAN is happy with it?
>> If so, we can just go ahead with that one.
>>
> 
> Will do. Although, since virCommandRun() wouldn't actually execute
> anything I don't expect ASAN to raise any issues. Meanwhile, I'm testing
> the approach I've outlined:
> 
> https://gitlab.com/MichalPrivoznik/libvirt/-/pipelines/450382098
> 
> Let's see how it runs.

Aaand I have the results:

failed to create the fake capabilities: internal error: Child process
(LC_ALL=C
LD_PRELOAD=/builds/MichalPrivoznik/libvirt/build/tests/libvirdnsmasqmock.so
PATH=/builds/MichalPrivoznik/libvirt/build/tests:/usr/libexec/ccache-wrappers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOME=/bad-test-used-env-home /usr/local/sbin/dnsmasqmock.py --version)
unexpected exit status 127: /usr/bin/env: symbol lookup error:
/builds/MichalPrivoznik/libvirt/build/tests/../src/libvirt.so.0:
undefined symbol: __asan_option_detect_stack_use_after_return

Why does dnsmasqmock.py try to link with libvirt.so.0 or why there's a
missing symbol is beyond me. So let me just stick with what I suggested
initially.

Michal




More information about the libvir-list mailing list