Bug #9811 2006-12-23 18:49

dermeister

Crash if disabling a plugin

Code::Blocks revision 3412 crashes if you try to disable a plugin while *no* project is open. (Tested on Linux, gcc 4.1.1, wxGTK 2.6.2).

See here for more information and a complete backtrace:

http://forums.codeblocks.org/index.php?topic=4754.0

Category
Application::Crash
Group
 
Status
Closed
Close date
2007-01-06 22:05
Assigned to
 
killerbot 2006-12-27 15:03
some debugging : very hard since gdb of cb freezes all the time :-( 

#0 0x43672c	wxListBase::GetCount(this=0x74000000e0) (/usr/include/wx-2.6/wx/list.h:480)
#1 0x46212d	wxMenuBase::GetMenuItemCount(this=0x7400000078) (/usr/include/wx-2.6/wx/menu.h:223)
#2 0x2b2d24f0c2a2	MenuItemsManager::Clear(this=0xe7e100) (sdk/menuitemsmanager.cpp:88)
#3 0x2b2d24fb9963	ToolsManager::BuildToolsMenu(this=0xe7e070, menu=0x1612a40) (sdk/toolsmanager.cpp:315)
#4 0x45daf9	MainFrame::CreateMenubar(this=0xa2e770) (src/main.cpp:855)
#5 0x45dc5d	MainFrame::RecreateMenuBar(this=0xa2e770) (src/main.cpp:751)
#6 0x45dd94	MainFrame::PluginsUpdated(this=0xa2e770, plugin=0x115cca0, status=2) (src/main.cpp:691)
#7 0x45e0d0	MainFrame::OnPluginUnloaded(this=0xa2e770, event=@0x7fff87743d40) (src/main.cpp:3492)
#8 0x2b2d24a77a4f	wxEvtHandler::ProcessEventIfMatches() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#9 0x2b2d24a77bef	wxEventHashTable::HandleEvent() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#10 0x2b2d24a77d46	wxEvtHandler::ProcessEvent() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#11 0x2b2d24e763d3	cbPlugin::Release(this=0x115cca0, appShutDown=false) (sdk/cbplugin.cpp:95)
#12 0x2b2d24f2d885	PluginManager::DetachPlugin(this=0xe7dfc0, plugin=0x115cca0) (sdk/pluginmanager.cpp:221)
#13 0x2b2d24f3626b	PluginsConfigurationDlg::OnToggle(this=0x7fff877459f0, event=@0x7fff87744470) (sdk/pluginsconfigurationdlg.cpp:199)
#14 0x2b2d24a77a4f	wxEvtHandler::ProcessEventIfMatches() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#15 0x2b2d24a77bef	wxEventHashTable::HandleEvent() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#16 0x2b2d24a77d46	wxEvtHandler::ProcessEvent() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#17 0x2b2d24251c86	wxWindowBase::TryParent() (/usr/lib64/libwx_gtk2u_core-2.6.so.0:??)
#18 0x2b2d24a77ce3	wxEvtHandler::ProcessEvent() (/usr/lib64/libwx_baseu-2.6.so.0:??)
#19 0x2b2d241ab4ac	wxButton::~wxButton() (/usr/lib64/libwx_gtk2u_core-2.6.so.0:??)
#20 0x2b2d2759977a	g_closure_invoke() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#21 0x2b2d275a9c1f	g_signal_override_class_closure() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#22 0x2b2d275aadd5	g_signal_emit_valist() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#23 0x2b2d275aafb3	g_signal_emit() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#24 0x2b2d26a05229	gtk_button_set_alignment() (/opt/gnome/lib64/libgtk-x11-2.0.so.0:??)
#25 0x2b2d2759977a	g_closure_invoke() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#26 0x2b2d275a9dbb	g_signal_override_class_closure() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#27 0x2b2d275aadd5	g_signal_emit_valist() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#28 0x2b2d275aafb3	g_signal_emit() (/opt/gnome/lib64/libgobject-2.0.so.0:??)
#29 0x2b2d26a03aa9	gtk_button_released() (/opt/gnome/lib64/libgtk-x11-2.0.so.0:??)


so it goes wrong on this line (void MenuItemsManager::Clear()) : 
            if (!subMenu || subMenu->GetMenuItemCount() == 0)
killerbot 2007-01-03 20:03

Yiannis has fixed that yesterday. Could you give it a few test spins to see if you can still reconstruct this ?

dermeister 2007-01-05 14:05

Just compiled revision 3460 and enabled/disabled a bunch of plugins - no crash. Seems to work now, thanks :)

killerbot 2007-01-06 22:05

so fixed ;-)