Skip to content

Known Issues

steveire edited this page Jan 11, 2012 · 26 revisions

Known Issues

All Platforms

Injection does not work with static linking

The way GammaRay injects itself into the analyzed application requires dynamic linking to Qt at the moment. Neither statically linked applications nor a statically linked GammaRay will work.

The solution would be "static injection", similar to what QtCreator does with the QML debugger, statically linking GammaRay in to the application. This has not been implemented yet. Also note that this will not work with GammaRay plug-ins, those would need to be linked statically as well.

Linux

Preloading fails with -Bsymbolic-function

If your Qt is linked with "-Bsymbolic-function", preloading wont work. If used, references to global functions are bind to the shared object internally. The definition of the function is now fixed and cant be overwritten by preloading. Note that this is different from using -reduce-relocations from Qt's configure command, this will add exceptions for the preloading hooks we (and also e.g. Squish) need.

Be sure that your distro provided packages or your self-compiled packages are not linked with this flag (check with echo $LDFLAGS before compiling) without including the exception from src/corelib/QtCore.dynlist. For more info see: "man ld; search for "-Bsymbolic-function".

Affected distros:

If you are affected by this, try the gdb or style injectors instead, using the "-i" command line option.

Preloading fails with -reduce-relocations and the gold linker

Similar issue as the one above, but here also the -reduce-relocations flag of Qt's configure is affected. The gold linker does not seem to support adding exceptions to the -Bsymbolic-functions option yet, so the hooks we need in QtCore wont work. (Issue is tracked here: http://sourceware.org/bugzilla/show_bug.cgi?id=13577)

Note that -no-reduce-relocations is enabled by default in Qt5.

Workarounds are either not using -reduce-relocations in combination with gold when compiling Qt or using a differerent GammaRay injection method. Both the gdb and style injectors still work in this case.

Mac

Undefined behavior when using app bundles containing Qt

When attaching GammaRay to an app bundle that contains its own Qt version, GammaRay may additionally load the Qt libraries it has been linked against. This will cause undefined behavior even if these are exactly the same Qt versions as static variables are overwritten in the process.

So far, the only workaround is adding GammaRay to the same app bundle.

GammaRay fails when build for 32bit

GammaRay fails to work when build for 32bit systems on Mac. No workaround is currently known.

Windows

Attaching not always working

GammaRay fails to attach to some applications. We are investigating in this issue. Please try the startup method, with passing the application to GammaRay in command line.

Fixed in version 1.1.

MSVC 64bit release mode not supported by DLL injector

Release builds with MSVC on 64bit Windows will fail to attach or start with the DLL injector (not implemented/tested yet). The style injector should work though (start with "-i style" command line option).

Fixed in version 1.1.

Clone this wiki locally