Thank you. I don't know what's so special about my setup - I am getting the same error with GCC 12 & 13 - compiling for both x86_64 & aarch64. Compiler flags - nothing unusual - -O3 -flto - but maybe warnings are a bit overzealous (-Wuninitialized -Wstack-protector). I'll try producing a sample that reproduces this - and will use suggested workaround in the meantime.
On Tue, 26 Dec 2023 at 17:21, Evgeny Grin <k...@yandex.ru> wrote: > Hi Sergey, > > Are you using some special compiler or linker parameters? Some special > compiler or linker versions? > > I regularly test MHD with LTO. I've retested the current git master with > LTO and cannot reproduce. > No errors, nor even warnings. > > If you check the code you will find that both mentioned variables are > not used before initialisation. (Please provide the code path if I'm > wrong). > > Unless variables are really used as uninitialised (which should be a bug > and needs to be fixed), I'd avoid unneeded initialisation to save the > code size (and negligible performance). > > If your compiler/linker complaint is false positive, you probably may > workaround it with '-ftrivial-auto-var-init' parameter. > > Let me know the details, please. > > -- > Evgeny > > On 26/12/2023 16:14, Sergey Sudnitsyn wrote: > > When LTO is enabled, linking fails complaining about potentially > > uninitialized variables; > > It's hard to provide a small sample reproducing this, but I hope the > > patch can be applied even without it since it's innocent enough (diff > > against commit 8bb481f ): > > > > diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c > > index f9892a55..e5dd1a45 100644 > > --- a/src/microhttpd/connection.c > > +++ b/src/microhttpd/connection.c > > @@ -653,7 +653,7 @@ MHD_connection_alloc_memory_ (struct MHD_Connection > > *connection, > > { > > struct MHD_Connection *const c = connection; /* a short alias */ > > struct MemoryPool *const pool = c->pool; /* a short alias */ > > - size_t need_to_be_freed; /**< The required amount of additional free > > memory */ > > + size_t need_to_be_freed = 0; /**< The required amount of additional > > free memory */ > > void *res; > > > > res = MHD_pool_try_alloc (pool, size, &need_to_be_freed); > > @@ -4468,7 +4468,7 @@ process_request_body (struct MHD_Connection > > *connection) > > { /* Need the parse the chunk size line */ > > /** The number of found digits in the chunk size number */ > > size_t num_dig; > > - uint64_t chunk_size; > > + uint64_t chunk_size = 0; > > bool broken; > > bool overflow; > > >