[libvirt PATCH 0/3] Reduce stack frame size of virNWFilterRuleDefFixup

Tim Wiederhake twiederh at redhat.com
Fri Sep 17 15:01:28 UTC 2021


On Fri, 2021-09-17 at 15:03 +0100, Daniel P. Berrangé wrote:
> On Fri, Sep 17, 2021 at 03:37:28PM +0200, Tim Wiederhake wrote:
> > On Fri, 2021-09-17 at 14:10 +0100, Daniel P. Berrangé wrote:
> > > On Fri, Sep 17, 2021 at 02:58:08PM +0200, Tim Wiederhake wrote:
> > > > When libvirt is build with sanitizers enabled, in debug mode, on
> > > > clang,
> > > > virNWFilterRuleDefFixup exceeds the maximum stack frame size of
> > > > 8192 bytes,
> > > > as specified in meson.build:
> > > > 
> > > >   ../src/conf/nwfilter_conf.c:2190:1: error: stack frame size of
> > > > 10616
> > > >   bytes in function 'virNWFilterRuleDefFixup' [-Werror,-Wframe-
> > > > larger-than=]
> > > >   virNWFilterRuleDefFixup(virNWFilterRuleDef *rule)
> > > >   ^
> > > >   1 error generated.
> > > > 
> > > > This series reworks the function a bit to bring the frame size
> > > > below 8192.
> > > 
> > > Why don't we just enlarge stack size limit for building with
> > > sanitizers ?
> > > 
> > > 
> > > Regards,
> > > Daniel
> > 
> > We already double the stack size limit for debug builds, and
> > increasing
> > it further seemed excessive.

s/debug builds/sanitizer builds/ -- my mistake.

> > 
> > Note that there is one more function that exceeds the limit,
> > virDomainDefParseXML, for which I have a patch ready. I will send it
> > once this series lands.
> 
> We're not using sanitizers in production builds though, so IMHO we
> could
> even just run with no stack size checking entirely for such builds.
> 

My local builds have "-Dbuildtype=debug". In gitlab's CI, the buildtype
is not explictly set. This difference is what triggers the stack frame
size warnings:

    $ export CC=clang
    
    $ meson -Db_sanitize=address,undefined -Db_lundef=false buildtype-
default &> /dev/null
    $ ninja -C buildtype-default &>/dev/null && echo "ok" || echo
"fail"
    ok
    
    $ meson -Db_sanitize=address,undefined -Db_lundef=false -
Dbuildtype=debug buildtype-debug &> /dev/null
    $ ninja -C buildtype-debug >/dev/null && echo "ok" || echo "fail"
    fail

Which is weird, as meson's default build type is "debug".

> > > > When libvirt is build with sanitizers enabled, in debug mode,
> > > > on clang, virNWFilterRuleDefFixup exceeds the maximum stack
> > > > frame size of 8192 bytes, as specified in meson.build:

s/in debug mode/buildtype explicitly set to debug/

Regards,
Tim




More information about the libvir-list mailing list