Ich bin mit dem folgenden Code ...Warum mag Valgrind meine Verwendung von glutCreateWindow nicht?
169: const char *title = Title.c_str();
170: glutCreateWindow(title);
... Valgrind gibt mir die folgende ...
==28841== Conditional jump or move depends on uninitialised value(s)
==28841== at 0x6FF7A4C: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x6FF81F7: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x7289B36: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x728A757: _nv000133gl (in /usr/lib64/libGLcore.so.180.44)
==28841== by 0x4EAB9E9: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EAEA81: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EB1D81: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EA782B: glXCreateNewContext (in /usr/lib64/libGL.so.180.44)
==28841== by 0x54DF9AA: fgOpenWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x54DE062: fgCreateWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x54DF300: glutCreateWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x4146CE: vimrid::glut::GlutApplication::Init() (GlutApplication.cpp:170)
Aber was ist nicht initialisiert? Die Titel Variable wird mit dem Wert von Title.c_str initialisiert() und Titel ist ein Klasse-Element, das im Konstruktor Initialisierungsliste initialisiert ...
class VimridApplication
{
// ...
public:
std::string Title;
// ...
}
VimridApplication::VimridApplication() :
Title("Untitled VimridApplication")
{
// ...
}
class GlutApplication : public VimridApplication
{
// ...
}
Wenn Sie versuchen, die Ursache des Problems zu finden, ist --track-origins praktisch, neu in Release 3.4.0, 2. Januar 2009. Ich hatte das gleiche Problem, und mir wurde gesagt, dass der nicht initialisierte Wert von erstellt wurde eine Stapelzuordnung in fgOpenWindow in libglut. Kann nicht viel dagegen tun (außer einen Patch upstream senden), so dass es sicher unterdrückt werden kann. – jwhitlock