Lars Kanis
authored
The internal object allocated when calling FXSplashWindow.new was FXSplashWindow instead of FXRbSplashWindow, so that no FXRbUnregisterRubyObj() was called. Therefore the object was double free'd. Stacktrace was: ==11529== Invalid read of size 8 ==11529== at 0x9265BBC: FX::FXObject::getClassName() const (FXObject.cpp:280) ==11529== by 0x862EE55: FXRbObject::freefunc(FX::FXObject*) (markfuncs.cpp:77) ==11529== by 0x4EA6254: finalize_list (gc.c:2944) ==11529== by 0x4EAAFC2: rb_gc_call_finalizer_at_exit (gc.c:3075) ==11529== by 0x4E9773B: ruby_cleanup (eval.c:101) ==11529== by 0x4E979C4: ruby_run_node (eval.c:244) ==11529== by 0x4007FA: main (main.c:38) ==11529== Address 0x75e24c0 is 0 bytes inside a block of size 248 free'd ==11529== at 0x4C2A4BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==11529== by 0x92B98AD: FX::FXSplashWindow::~FXSplashWindow() (FXSplashWindow.cpp:219) ==11529== by 0x917C990: FX::FXComposite::~FXComposite() (FXComposite.cpp:304) ==11529== by 0x929A5EF: FX::FXRootWindow::~FXRootWindow() (FXRootWindow.cpp:209) ==11529== by 0x929A621: FX::FXRootWindow::~FXRootWindow() (FXRootWindow.cpp:211) ==11529== by 0x9156DB9: FX::FXApp::~FXApp() (FXApp.cpp:4994) ==11529== by 0x84912F3: FXRbApp::~FXRbApp() (FXRbApp.cpp:118) ==11529== by 0x8491347: FXRbApp::~FXRbApp() (FXRbApp.cpp:127) ==11529== by 0x862EF8E: FXRbObject::freefunc(FX::FXObject*) (markfuncs.cpp:92) ==11529== by 0x4EA6254: finalize_list (gc.c:2944) ==11529== by 0x4EAAFC2: rb_gc_call_finalizer_at_exit (gc.c:3075) ==11529== by 0x4E9773B: ruby_cleanup (eval.c:101)