On Sat, 2008-03-29 at 19:50 -0700, Daniel Burrows wrote:
> On Sun, Mar 30, 2008 at 12:39:21AM +0100, Bram Senders <[EMAIL PROTECTED]> 
> was heard to say:
> > I am also on PowerPC (as is the original reporter), and I can reproduce
> > this on my machine.
> 
>   What do you get if you install valgrind and run
> 
>     valgrind --log-file=/tmp/aptitude.grind aptitude
> 
>   , then reproduce the bug?

Okay, here it is attached.

Cheers,
Bram
==5065== Memcheck, a memory error detector.
==5065== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==5065== Using LibVEX rev 1804, a library for dynamic binary translation.
==5065== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==5065== Using valgrind-3.3.0-Debian, a dynamic binary instrumentation 
framework.
==5065== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==5065== For more details, rerun with: -v
==5065== 
==5065== My PID = 5065, parent PID = 4248.  Prog and args are:
==5065==    aptitude
==5065== 
==5065== Conditional jump or move depends on uninitialised value(s)
==5065==    at 0x400261C: _dl_start (in /lib/ld-2.7.so)
==5065==    by 0x4016BE4: _start (in /lib/ld-2.7.so)
==5065== 
==5065== Conditional jump or move depends on uninitialised value(s)
==5065==    at 0x4002654: _dl_start (in /lib/ld-2.7.so)
==5065==    by 0x4016BE4: _start (in /lib/ld-2.7.so)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBBC7C: strlen (mc_replace_strmem.c:242)
==5065==    by 0xF6593D4: __dcigettext (dcigettext.c:456)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d5c is 12 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBBC94: strlen (mc_replace_strmem.c:242)
==5065==    by 0xF6593D4: __dcigettext (dcigettext.c:456)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d5d is 13 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBD790: memcpy (mc_replace_strmem.c:402)
==5065==    by 0xF659408: __dcigettext (dcigettext.c:462)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d97 is 71 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBD7A0: memcpy (mc_replace_strmem.c:402)
==5065==    by 0xF659408: __dcigettext (dcigettext.c:462)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d96 is 70 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBD7B0: memcpy (mc_replace_strmem.c:402)
==5065==    by 0xF659408: __dcigettext (dcigettext.c:462)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d95 is 69 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBD7C0: memcpy (mc_replace_strmem.c:402)
==5065==    by 0xF659408: __dcigettext (dcigettext.c:462)
==5065==    by 0xF658290: dcgettext (dcgettext.c:53)
==5065==    by 0x100F9F4C: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (ui.cc:2385)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d94 is 68 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBBC7C: strlen (mc_replace_strmem.c:242)
==5065==    by 0xFD65D0C: cwidget::util::transcode(char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> 
>&, char const*) (transcode.cc:249)
==5065==    by 0xFD65F00: cwidget::util::transcode(char const*, char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > 
(*)(int, std::basic_string<wchar_t, std::char_traits<wchar_t>, 
std::allocator<wchar_t> > const&, std::string const&)) (transcode.cc:287)
==5065==    by 0xFD80EB4: cwidget::widgets::menu::menu(int, int, int, 
cwidget::widgets::menu_info*) (menu.cc:125)
==5065==    by 0x100F9F94: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (menu.h:203)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d5c is 12 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xFFBBC94: strlen (mc_replace_strmem.c:242)
==5065==    by 0xFD65D0C: cwidget::util::transcode(char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> 
>&, char const*) (transcode.cc:249)
==5065==    by 0xFD65F00: cwidget::util::transcode(char const*, char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > 
(*)(int, std::basic_string<wchar_t, std::char_traits<wchar_t>, 
std::allocator<wchar_t> > const&, std::string const&)) (transcode.cc:287)
==5065==    by 0xFD80EB4: cwidget::widgets::menu::menu(int, int, int, 
cwidget::widgets::menu_info*) (menu.cc:125)
==5065==    by 0x100F9F94: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (menu.h:203)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d5d is 13 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 1
==5065==    at 0xF64E480: __gconv_transform_utf8_internal (loop.c:316)
==5065==    by 0xF649590: __gconv (gconv.c:80)
==5065==    by 0xF6488E4: iconv (iconv.c:53)
==5065==    by 0xFD643F0: cwidget::util::transcode_buffer(void*&, char*&, 
unsigned&, char const*, unsigned, unsigned&, char const*) (transcode.cc:115)
==5065==    by 0xFD65D2C: cwidget::util::transcode(char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> 
>&, char const*) (transcode.cc:249)
==5065==    by 0xFD65F00: cwidget::util::transcode(char const*, char const*, 
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > 
(*)(int, std::basic_string<wchar_t, std::char_traits<wchar_t>, 
std::allocator<wchar_t> > const&, std::string const&)) (transcode.cc:287)
==5065==    by 0xFD80EB4: cwidget::widgets::menu::menu(int, int, int, 
cwidget::widgets::menu_info*) (menu.cc:125)
==5065==    by 0x100F9F94: add_menu(cwidget::widgets::menu_info*, std::string 
const&, cwidget::util::ref_ptr<cwidget::widgets::label> const&) (menu.h:203)
==5065==    by 0x10118858: ui_init() (ui.cc:2520)
==5065==    by 0x1001B2AC: main (main.cc:695)
==5065==  Address 0x4037d5c is 12 bytes inside a block of size 72 free'd
==5065==    at 0xFFB99BC: operator delete(void*) (vg_replace_malloc.c:342)
==5065==    by 0xF961C80: std::string::_Rep::_M_destroy(std::allocator<char> 
const&) (in /usr/lib/libstdc++.so.6.0.10)
==5065==    by 0x10116F6C: __static_initialization_and_destruction_0(int, int) 
(basic_string.h:238)
==5065==    by 0x10231CB4: (within /usr/bin/aptitude)
==5065==    by 0x10019CC4: (within /usr/bin/aptitude)
==5065==    by 0x10231934: __libc_csu_init (in /usr/bin/aptitude)
==5065==    by 0xF6476B8: (below main) (libc-start.c:181)
==5065== 
==5065== Invalid read of size 4
==5065==    at 0xFDCA7EC: cwidget::widgets::widget::widget() 
(limit_reference.h:81)
==5065==    by 0xFD9DDD0: cwidget::widgets::passthrough::passthrough() 
(container.h:35)
==5065==    by 0xFDB16BC: cwidget::widgets::table::table() (table.cc:60)
==5065==    by 0x100361C8: aptitude::ui::config::(anonymous 
namespace)::apt_options_view::apt_options_view() (apt_options.cc:514)
==5065==    by 0x100372DC: aptitude::ui::config::make_options_tree() 
(apt_options.cc:577)
==5065==    by 0x1010EC58: do_show_options_tree() (ui.cc:689)
==5065==    by 0x1001EDE4: sigc::adaptor_functor<sigc::pointer_functor0<void> 
>::operator()() const (ptr_fun.h:77)
==5065==    by 0x1001EE10: 
sigc::internal::slot_call0<sigc::pointer_functor0<void>, 
void>::call_it(sigc::internal::slot_rep*) (slot.h:103)
==5065==    by 0xFD7EE14: 
cwidget::widgets::menu::handle_key(cwidget::config::key const&) (signal.h:548)
==5065==    by 0xFDC7FF0: 
cwidget::widgets::widget::dispatch_key(cwidget::config::key const&) 
(widget.cc:267)
==5065==    by 0xFD880C4: 
cwidget::widgets::menubar::handle_key(cwidget::config::key const&) 
(menubar.cc:599)
==5065==    by 0xFDC7FF0: 
cwidget::widgets::widget::dispatch_key(cwidget::config::key const&) 
(widget.cc:267)
==5065==  Address 0x74656d20 is not stack'd, malloc'd or (recently) free'd
==5065== 
==5065== ERROR SUMMARY: 244 errors from 12 contexts (suppressed: 1 from 1)
==5065== malloc/free: in use at exit: 10,348,527 bytes in 188,190 blocks.
==5065== malloc/free: 1,632,475 allocs, 1,444,285 frees, 49,310,587 bytes 
allocated.
==5065== For counts of detected errors, rerun with: -v
==5065== searching for pointers to 188,190 not-freed blocks.
==5065== checked 42,778,184 bytes.
==5065== 
==5065== LEAK SUMMARY:
==5065==    definitely lost: 1,097 bytes in 62 blocks.
==5065==      possibly lost: 3,585,463 bytes in 2,027 blocks.
==5065==    still reachable: 6,761,967 bytes in 186,101 blocks.
==5065==         suppressed: 0 bytes in 0 blocks.
==5065== Rerun with --leak-check=full to see details of leaked memory.

Reply via email to