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. -- Andriy Gapon _______________________________________________ kde-freebsd mailing list kde-freebsd@kde.org https://mail.kde.org/mailman/listinfo/kde-freebsd See also http://freebsd.kde.org/ for latest information