Le dimanche 17 juin 2007 à 12:08 +0200, Patrick Matthäi a écrit :

> thanks for your patch! I will test it around these days. Do you have 
> maybe another system with 32bit and can try to reproduce this crash with 
> it? Because on my 32bit architecture it's running well.

No, sorry.

But this doesn't surprise me much you don't encounter a segfault:
Everything happens during the destruction of a dropdown widget, so the
system is in a sane state before the destruction starts, and it may
still be after the destruction ends. So you have to be quite unlucky to
get corrupted memory during this short lapse of time.

> And please add a gdb tracelog :)

Better than a gdb trace, here comes a valgrind trace.

Invalid read of size 8
   at 0x61FC5CE: gcn::FocusHandler::remove(gcn::Widget*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x6204CE0: gcn::Widget::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA46D: gcn::BasicContainer::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA6CE: gcn::BasicContainer::clear() (in /usr/lib/libguichan.so.0.0.0)
   by 0x61FA950: gcn::BasicContainer::~BasicContainer() (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x620A560: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)
 Address 0xBD6F208 is 0 bytes inside a block of size 16 free'd
   at 0x4A1F37C: operator delete(void*) (vg_replace_malloc.c:244)
   by 0x620A533: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)

Invalid read of size 1
   at 0x4A20B10: memmove (mc_replace_strmem.c:514)
   by 0x61FD49B: std::vector<gcn::Widget*, std::allocator<gcn::Widget*> 
>::erase(__gnu_cxx::__normal_iterator<gcn::Widget**, std::vector<gcn::Widget*, 
std::allocator<gcn::Widget*> > >) (in /usr/lib/libguichan.so.0.0.0)
   by 0x6204CE0: gcn::Widget::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA46D: gcn::BasicContainer::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA6CE: gcn::BasicContainer::clear() (in /usr/lib/libguichan.so.0.0.0)
   by 0x61FA950: gcn::BasicContainer::~BasicContainer() (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x620A560: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)
 Address 0xBD6F210 is 8 bytes inside a block of size 16 free'd
   at 0x4A1F37C: operator delete(void*) (vg_replace_malloc.c:244)
   by 0x620A533: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)

Invalid write of size 1
   at 0x4A20B14: memmove (mc_replace_strmem.c:514)
   by 0x61FD49B: std::vector<gcn::Widget*, std::allocator<gcn::Widget*> 
>::erase(__gnu_cxx::__normal_iterator<gcn::Widget**, std::vector<gcn::Widget*, 
std::allocator<gcn::Widget*> > >) (in /usr/lib/libguichan.so.0.0.0)
   by 0x6204CE0: gcn::Widget::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA46D: gcn::BasicContainer::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA6CE: gcn::BasicContainer::clear() (in /usr/lib/libguichan.so.0.0.0)
   by 0x61FA950: gcn::BasicContainer::~BasicContainer() (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x620A560: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)
 Address 0xBD6F208 is 0 bytes inside a block of size 16 free'd
   at 0x4A1F37C: operator delete(void*) (vg_replace_malloc.c:244)
   by 0x620A533: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)

Invalid read of size 1
   at 0x4A20B1D: memmove (mc_replace_strmem.c:514)
   by 0x61FD49B: std::vector<gcn::Widget*, std::allocator<gcn::Widget*> 
>::erase(__gnu_cxx::__normal_iterator<gcn::Widget**, std::vector<gcn::Widget*, 
std::allocator<gcn::Widget*> > >) (in /usr/lib/libguichan.so.0.0.0)
   by 0x6204CE0: gcn::Widget::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA46D: gcn::BasicContainer::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA6CE: gcn::BasicContainer::clear() (in /usr/lib/libguichan.so.0.0.0)
   by 0x61FA950: gcn::BasicContainer::~BasicContainer() (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x620A560: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)
 Address 0xBD6F212 is 10 bytes inside a block of size 16 free'd
   at 0x4A1F37C: operator delete(void*) (vg_replace_malloc.c:244)
   by 0x620A533: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)

Invalid read of size 8
   at 0x61FC5CE: gcn::FocusHandler::remove(gcn::Widget*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x6204CE0: gcn::Widget::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA4B2: gcn::BasicContainer::_setFocusHandler(gcn::FocusHandler*) (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x61FA6CE: gcn::BasicContainer::clear() (in /usr/lib/libguichan.so.0.0.0)
   by 0x61FA950: gcn::BasicContainer::~BasicContainer() (in 
/usr/lib/libguichan.so.0.0.0)
   by 0x620A560: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)
 Address 0xBD6F208 is 0 bytes inside a block of size 16 free'd
   at 0x4A1F37C: operator delete(void*) (vg_replace_malloc.c:244)
   by 0x620A533: gcn::DropDown::~DropDown() (in /usr/lib/libguichan.so.0.0.0)
   by 0x41B3E0: DropDown::~DropDown() (dropdown.cpp:96)
   by 0x442F91: GCContainer::~GCContainer() (gccontainer.cpp:34)
   by 0x4995E9: Window::~Window() (window.cpp:157)
   by 0x469E20: ServerDialog::~ServerDialog() (serverdialog.cpp:194)
   by 0x4DB560: main (main.cpp:820)



Reply via email to