[kde-freebsd] net-im/psi: a gcc46 issue?

Max Brazhnikov makc at freebsd.org
Fri Oct 19 22:35:45 UTC 2012


On Fri, 12 Oct 2012 13:08:36 +0300, Andriy Gapon wrote:
> on 11/10/2012 22:45 Andriy Gapon said the following:
> > on 11/10/2012 22:21 Andriy Gapon said the following:
> >>
> >> Build of version 0.15 fails for me like this:
> >> --------------------------------------------------
> >> Verifying Qt 4 build environment ...
> >> Warning: /usr/local/bin/qmake-qt4 not for Qt 4
> > 
> > Hm, looks like something in configure env causes qmake-qt4 to crash with
> > SIGSEGV.  That doesn't happen in normal shell environment.
> > 
> > Hmm, interesting:
> > $ env QMAKEFLAGS='QMAKE_CC="cc" QMAKE_CXX="c++"  QMAKE_LINK="c++"
> > QMAKE_LINK_SHLIB="c++"  QMAKE_LINK_C="cc" QMAKE_LINK_C_SHLIB="cc"
> > QMAKE_CFLAGS="-O2 -pipe -O2 -fno-strict-aliasing -pipe -march=k8-sse3"
> > QMAKE_CXXFLAGS="-O2 -pipe -O2 -fno-strict-aliasing -pipe -march=k8-sse3 -O2
> > -fno-strict-aliasing -pipe"  QMAKE_CFLAGS_THREAD=""
> > QMAKE_LFLAGS_THREAD="-pthread" QMAKE_LFLAGS=""' /usr/local/bin/qmake-qt4 -v
> > zsh: segmentation fault (core dumped)
> > 
> > But funny that if I remove _any_ of the QMAKE_XXX flags from the above
> > QMAKEFLAGS, then the command runs fine.
> > I wonder if it's the number of parameters that triggers the crash.
> 
> Indeed, it seems that qmake allocates space for options in batches of 10 items and
> I have exactly 11 items above.  Additionally qmake has a classic off-by-one error
> when checking whether to allocate an addition batch.
> 
> Obviously, a patch follows :-)
> 
> --- option.cpp.orig	2012-10-12 12:51:54.706678449 +0300
> +++ option.cpp	2012-10-12 12:52:33.219678158 +0300
> @@ -482,7 +482,7 @@ Option::init(int argc, char **argv)
>                      env_argc++;
>                  }
>              } else {
> -                if(!env_argv || env_argc > env_size) {
> +                if(!env_argv || env_argc >= env_size) {
>                      env_argv = (char **)realloc(env_argv, sizeof(char
> *)*(env_size+=10));
>                      for(int i2 = env_argc; i2 < env_size; i2++)
>                          env_argv[i2] = NULL;
> 
> 
> I think that this is upstreamable.

Thanks for analysis and fix! I'll make it available for 4.6.3.

Max




More information about the kde-freebsd mailing list