jd4linux (2.8.9-150226) | 2015-02-26 23:09 |
jd4linux-win32 (2.8.9-beta150226) | 2015-02-26 23:18 |
theme (jd_famsilk) | 2011-09-06 18:45 |
実施日 2009/05/16
- $ cppcheck --version
- Cppcheck 1.32
- $ svn version trunk/
- 2825
- $ cppcheck --all trunk/ 1 > /dev/null
- [trunk/src/dbtree/articlebase.cpp:90]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:91]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:92]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:855]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:1441]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:1442]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/articlebase.cpp:1446]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk/src/dbtree/article2chcompati.h:18]: (error) Class Article2chCompati which is inherited by class ArticleLocal does not have a virtual destructor
- [trunk/src/dbtree/boardbase.cpp:67]: (error) Using 'memset' on struct that contains a 'std::string'
なぜか"memset( &tv, 0, sizeof( struct timeval ) )"がCheckMemsetに引っかかる。それを除いて修正。
- $ svn version trunk/
- 2826
- $ cppcheck --all trunk/ 1 > /dev/null
- [trunk_/src/dbtree/articlebase.cpp:90]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:91]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:92]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:855]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:1441]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:1442]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/articlebase.cpp:1446]: (error) Using 'memset' on struct that contains a 'std::string'
- [trunk_/src/dbtree/boardbase.cpp:67]: (error) Using 'memset' on struct that contains a 'std::string'
gprofによるプロファイリングを行う場合は ./configure --enable-gprof とする コンパイルオプションに -pg が付き、JDを実行すると gmon.out が出来るので gprof ./jd gmon.out で解析できる。 ただしCPUの最適化は効かなくなるので注意する。
実施日 2010/9/17 実行時間 約70分 model name : Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz MemTotal: 905024 kB Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 11.48 0.38 0.38 15008 0.03 0.03 ARTICLE::DrawAreaBase::set_caret(ARTICLE::CARET_POSITION&, int, int) 5.74 0.57 0.19 793869 0.00 0.00 ARTICLE::DrawAreaBase::layout_one_text_node(ARTICLE::LAYOUT*, int&, int&, int&, int) 5.44 0.75 0.18 6538079 0.00 0.00 ARTICLE::get_width_of_char(char const*, int&, char, int&, int&, int) 5.14 0.92 0.17 29413 0.01 0.01 DBTREE::Root::get_board(std::string const&, int) 4.83 1.08 0.16 1808866 0.00 0.00 DBTREE::BoardBase::equal(std::string const&) 3.93 1.21 0.13 6538158 0.00 0.00 ARTICLE::DrawAreaBase::get_width_of_one_char(char const*, int&, char&, bool&, int) 3.63 1.33 0.12 6541396 0.00 0.00 MISC::utf8toucs2(char const*, int&) 3.02 1.43 0.10 64402 0.00 0.00 ARTICLE::DrawAreaBase::draw_string(ARTICLE::LAYOUT*, int, int, int, int, int, int) 2.42 1.51 0.08 45552 0.00 0.00 DBTREE::NodeTreeBase::parse_html(char const*, int, int, bool, bool, bool, bool) 2.11 1.58 0.07 10880238 0.00 0.00 CONFIG::get_confitem() 2.11 1.65 0.07 18623 0.00 0.00 DBTREE::NodeTreeBase::check_id_name(int) 1.81 1.71 0.06 866 0.07 0.07 DBTREE::Root::is_moved(std::string const&, std::string const&, std::string const&, DBTREE::BoardBase**) 1.51 1.76 0.05 3928077 0.00 0.00 DBTREE::NodeTreeBase::check_anchor(int, char const*, int&, char*, char*, int, DBTREE::ANCINFO*) 1.51 1.81 0.05 967785 0.00 0.00 BOARD::BoardViewBase::compare_col(int, int, Gtk::TreeRow&, Gtk::TreeRow&) 1.51 1.86 0.05 10462 0.00 0.00 CORE::Core::set_command(COMMAND_ARGS const&) 1.51 1.91 0.05 sigc::internal::slot_call2<sigc::bound_mem_functor2<void, BOARD::BoardViewBase, Gtk::CellRenderer*, Gtk::TreeIter const&>, void, Gtk::CellRenderer*, Gtk::TreeIter const&>::call_it(sigc::internal::slot_rep*, Gtk::CellRenderer* const&, Gtk::TreeIter const&) 1.21 1.95 0.04 932274 0.00 0.00 SKELETON::View::clock_in_always() 1.21 1.99 0.04 443213 0.00 0.00 SKELETON::DragTreeView::slot_cell_data(Gtk::CellRenderer*, Gtk::TreeIter const&) 1.21 2.03 0.04 274674 0.00 0.00 DBTREE::ArticleBase::empty() 1.21 2.07 0.04 78459 0.00 0.01 ARTICLE::DrawAreaBase::draw_one_node(ARTICLE::LAYOUT*, int, int, int, int) 1.21 2.11 0.04 2068 0.02 0.41 ARTICLE::DrawAreaBase::exec_draw_screen(int, int) 1.21 2.15 0.04 BOARD::BoardViewBase::slot_cell_data(Gtk::CellRenderer*, Gtk::TreeIter const&) 0.91 2.18 0.03 10442597 0.00 0.00 CONFIG::get_strict_char_width() 0.91 2.21 0.03 1553532 0.00 0.00 JDLIB::HEAP::heap_alloc(long) 0.91 2.24 0.03 873815 0.00 0.00 DBTREE::ArticleHash::it_get() 0.91 2.27 0.03 301239 0.00 0.00 DBTREE::ArticleHash::it_inc() 0.91 2.30 0.03 102836 0.00 0.00 std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&) 0.91 2.33 0.03 50461 0.00 0.00 COMMAND_ARGS::~COMMAND_ARGS() 0.91 2.36 0.03 20624 0.00 0.01 DBTREE::NodeTreeBase::add_one_dat_line(char const*) 0.91 2.39 0.03 1149 0.03 0.03 DBTREE::Board2chCompati::parse_subject(char const*) 0.91 2.42 0.03 400 0.07 1.88 ARTICLE::DrawAreaBase::exec_layout_impl(bool, int) 0.91 2.45 0.03 80 0.38 11.18 DBTREE::BoardBase::receive_finish() 0.91 2.48 0.03 BOARD::BoardViewBase::slot_compare_row(Gtk::TreeIter const&, Gtk::TreeIter const&) 0.60 2.50 0.02 1439514 0.00 0.00 bool Gtk::TreeRow::get_value<bool>(Gtk::TreeModelColumn<bool> const&) const 0.60 2.52 0.02 520899 0.00 0.00 SKELETON::Admin::get_current_view() 0.60 2.54 0.02 183551 0.00 0.00 DBTREE::ArticleBase::equal(std::string const&, std::string const&) 0.60 2.56 0.02 98691 0.00 0.00 ICON::ICON_Manager::get_icon(int) 0.60 2.58 0.02 94552 0.00 0.00 BOARD::BoardViewBase::update_row_common(Gtk::TreeRow const&) 0.60 2.60 0.02 94433 0.00 0.00 BOARD::BoardViewBase::prepend_row(DBTREE::ArticleBase*, int) 0.60 2.62 0.02 36664 0.00 0.00 std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::insert(std::_List_iterator<sigc::slot_base>, sigc::slot_base const&) 0.60 2.64 0.02 13521 0.00 0.00 DBTREE::decode_char(char const*, int&, char*, int&, bool) 0.60 2.66 0.02 1947 0.01 0.01 JDLIB::ConfLoader::get_option_str(std::string const&, std::string const&, unsigned int) 0.30 2.67 0.01 3912861 0.00 0.00 MISC::is_url_scheme(char const*, int*) 0.30 2.68 0.01 3911367 0.00 0.00 DBTREE::NodeTreeBase::check_link(char const*, int, int&, char*, int) 0.30 2.69 0.01 1112724 0.00 0.00 int Gtk::TreeRow::get_value<int>(Gtk::TreeModelColumn<int> const&) const 0.30 2.70 0.01 521995 0.00 0.00 SKELETON::DragableNoteBook::get_current_page() 0.30 2.71 0.01 477201 0.00 0.00 void Gtk::TreeRow::set_value<Glib::ustring>(Gtk::TreeModelColumn<Glib::ustring> const&, Glib::ustring const&) const 0.30 2.72 0.01 466585 0.00 0.00 Glib::PropertyProxy<bool>::set_value(bool const&) 0.30 2.73 0.01 371391 0.00 0.00 SKELETON::PaneControl::clock_in() 0.30 2.74 0.01 303024 0.00 0.00 DBTREE::ArticleHashIterator::operator!=(unsigned int) 0.30 2.75 0.01 294920 0.00 0.00 ARTICLE::DrawAreaBase::is_pointer_on_rect(ARTICLE::RECTANGLE const*, char const*, int, int, int, int, int&, int&, int&, int&) 0.30 2.76 0.01 244916 0.00 0.00 ARTICLE::ArticleViewBase::is_popup_shown() const 0.30 2.77 0.01 140727 0.00 0.00 ARTICLE::DrawAreaBase::clock_in_smooth_scroll() 0.30 2.78 0.01 138807 0.00 0.00 CORE::Css_Manager::set_size(CORE::CSS_PROPERTY*, double) 0.30 2.79 0.01 102759 0.00 0.00 SKELETON::JDTreeViewBase::get_row(Gtk::TreePath const&) 0.30 2.80 0.01 97717 0.00 0.00 ARTICLE::DrawAreaBase::clock_in() 0.30 2.81 0.01 95791 0.00 0.00 MISC::is_url_char(char const*, bool) 0.30 2.82 0.01 94552 0.00 0.00 void Gtk::TreeRow::set_value<long>(Gtk::TreeModelColumn<long> const&, long const&) const 0.30 2.83 0.01 94246 0.00 0.00 DBTREE::ArticleBase::get_since_date() 0.30 2.84 0.01 92850 0.00 0.00 CORE::Core::slot_timeout(int) 0.30 2.85 0.01 92850 0.00 0.00 BBSLIST::BBSListViewBase::clock_in() 0.30 2.86 0.01 92849 0.00 0.00 SKELETON::EditTreeView::clock_in() 0.30 2.87 0.01 92846 0.00 0.00 CONFIG::get_save_session() 0.30 2.88 0.01 92845 0.00 0.00 BOARD::BoardViewBase::clock_in() 0.30 2.89 0.01 91156 0.00 0.00 DBTREE::ArticleBase::get_hour() 0.30 2.90 0.01 66602 0.00 0.00 Glib::ustring Gtk::TreeRow::get_value<Glib::ustring>(Gtk::TreeModelColumn<Glib::ustring> const&) const 0.30 2.91 0.01 66480 0.00 0.00 ARTICLE::DrawAreaBase::get_colorid_back() 0.30 2.92 0.01 64451 0.00 0.00 std::_List_base<Pango::Item, std::allocator<Pango::Item> >::_M_clear() 0.30 2.93 0.01 49554 0.00 0.00 DBTREE::BoardBase::is_abone_thread(DBTREE::ArticleBase*) 0.30 2.94 0.01 48668 0.00 0.00 DBTREE::NodeTreeBase::create_node_link(char const*, int, char const*, int, int, bool) 0.30 2.95 0.01 47351 0.00 0.00 ARTICLE::DrawAreaBase::set_num_id(ARTICLE::LAYOUT*) 0.30 2.96 0.01 36663 0.00 0.00 std::list<sigc::slot_base, std::allocator<sigc::slot_base> >::erase(std::_List_iterator<sigc::slot_base>) 0.30 2.97 0.01 32827 0.00 0.00 std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, std::string> >*) 0.30 2.98 0.01 19020 0.00 0.00 ARTICLE::DrawAreaBase::get_vscr_val() 0.30 2.99 0.01 17456 0.00 0.00 DBTREE::NodeTreeBase::check_abone_chain(int) 0.30 3.00 0.01 16701 0.00 0.00 DBTREE::NodeTreeBase::parse_date_id(DBTREE::NODE*, char const*, int) 0.30 3.01 0.01 15852 0.00 0.02 DBTREE::url_dat(std::string const&) 0.30 3.02 0.01 15360 0.00 0.00 ARTICLE::DrawAreaBase::change_cursor(Gdk::CursorType) 0.30 3.03 0.01 14219 0.00 0.00 sigc::internal::slot_call1<sigc::bound_mem_functor1<bool const, BOARD::BoardViewBase, _GdkEventMotion*>, bool, _GdkEventMotion*>::call_it(sigc::internal::slot_rep*, _GdkEventMotion* const&) 0.30 3.04 0.01 13026 0.00 0.00 SESSION::is_booting() 0.30 3.05 0.01 12740 0.00 0.00 void sigc::visit_each<sigc::internal::limit_derived_target<sigc::trackable*, sigc::internal::slot_do_bind>, void, ARTICLE::ArticleViewBase>(sigc::internal::limit_derived_target<sigc::trackable*, sigc::internal::slot_do_bind> const&, sigc::bound_mem_functor0<void, ARTICLE::ArticleViewBase> const&) 0.30 3.06 0.01 11831 0.00 0.00 std::vector<DBTREE::ArticleBase*, std::allocator<DBTREE::ArticleBase*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<DBTREE::ArticleBase**, std::vector<DBTREE::ArticleBase*, std::allocator<DBTREE::ArticleBase*> > >, DBTREE::ArticleBase* const&) 0.30 3.07 0.01 8169 0.00 0.00 DBTREE::BoardMachi::equal(std::string const&) 0.30 3.08 0.01 6070 0.00 0.00 DBTREE::NodeTreeBase::get_id_name(int) 0.30 3.09 0.01 5060 0.00 0.00 DBTREE::NodeTreeBase::is_refer_posted(int) 0.30 3.10 0.01 4092 0.00 0.00 ARTICLE::LayoutTree::create_layout_hspace(int) 0.30 3.11 0.01 3805 0.00 0.00 SKELETON::DragableNoteBook::get_alloc_notebook() 0.30 3.12 0.01 2637 0.00 0.00 CONTROL::MouseKeyConf::get_motion(int, unsigned int&, bool&, bool&, bool&, bool&, bool&) 0.30 3.13 0.01 2457 0.00 0.00 convert_mouse_motions(std::string) 0.30 3.14 0.01 2027 0.00 0.16 DBTREE::NodeTreeBase::add_raw_lines(char*, unsigned int) 0.30 3.15 0.01 1981 0.01 0.01 CONTROL::MouseKeyConf::get_id(int, unsigned int, bool, bool, bool, bool, bool) 0.30 3.16 0.01 1299 0.01 0.01 XML::Dom::create_attribute(std::string const&) 0.30 3.17 0.01 899 0.01 0.01 SKELETON::TabNotebook::draw_tab(_GtkNotebook const*, _GtkNotebookPage const*, _GdkRectangle*, Gdk::Rectangle const&, Glib::RefPtr<Gdk::Window> const&) 0.30 3.18 0.01 529 0.02 0.02 JDLIB::ConfLoader::update(std::string const&, std::string const&) 0.30 3.19 0.01 412 0.02 0.02 CONTROL::Control::clear_mode() 0.30 3.20 0.01 399 0.03 0.05 SKELETON::TabNotebook::paint(_GdkEventExpose*) 0.30 3.21 0.01 369 0.03 0.03 MISC::has_widechar(char const*) 0.30 3.22 0.01 319 0.03 0.03 ARTICLE::ArticleViewBase::get_icon(std::string const&) 0.30 3.23 0.01 208 0.05 0.05 SKELETON::Loadable::get_loader_location() 0.30 3.24 0.01 188 0.05 0.23 JDLIB::Loader::run_main() 0.30 3.25 0.01 177 0.06 0.07 ARTICLE::DrawAreaBase::append_res(int, int) 0.30 3.26 0.01 67 0.15 0.15 DBTREE::Root::is_board_moved(std::string const&, std::string&, std::string&, std::string&, std::string&, int) 0.30 3.27 0.01 23 0.43 0.78 DBTREE::NodeTreeBase::get_num_id_name(std::string const&) 0.30 3.28 0.01 7 1.43 1.44 ARTICLE::LayoutTree::append_dat(std::string const&, int) 0.30 3.29 0.01 sigc::internal::slot_call0<sigc::bind_functor<-1, sigc::bound_mem_functor1<bool, CORE::Core, int>, int, sigc:nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, bool>::call_it(sigc::internal::slot_rep*)
(参考) ArticleHash 導入前 実施日 2008/12/26 実行時間 約2時間 model name : Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz MemTotal: 905024 kB Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 56.25 7.29 7.29 62331 0.12 0.12 DBTREE::BoardBase::get_article(std::string const&) 4.71 7.90 0.61 32366 0.02 0.02 ARTICLE::DrawAreaBase::set_caret(ARTICLE::CARET_POSITION&, int, int) 3.09 8.30 0.40 18856094 0.00 0.00 ARTICLE::DrawAreaBase::get_width_of_one_char(char const*, int&, char&, bool&, int) 3.09 8.70 0.40 2315730 0.00 0.00 ARTICLE::DrawAreaBase::layout_one_text_node(ARTICLE::LAYOUT*, int&, int&, int&, int) 3.01 9.09 0.39 18856064 0.00 0.00 ARTICLE::get_width_of_char(char const*, int&, char, int&, int&, int) 2.78 9.45 0.36 54839 0.01 0.01 DBTREE::NodeTreeBase::check_id_name(int) 1.39 9.63 0.18 6418 0.03 0.04 ARTICLE::DrawAreaBase::draw_backscreen(bool)
実施日 2008/5/11
valgrind --leak-check=full --show-reachable=yes --log-file=valgrind.log ./jd
==9705== Conditional jump or move depends on uninitialised value(s) ==9705== at 0x82E56DB: SKELETON::PaneControl::set_position(int) (panecontrol.cpp:104) ==9705== ==9705== Conditional jump or move depends on uninitialised value(s) ==9705== at 0x82A6691: SKELETON::Admin::toggle_icon(std::string const&) (admin.cpp:1488) ==9705== by 0x82A88DE: SKELETON::Admin::slot_switch_page(_GtkNotebookPage*, unsigned) (admin.cpp:1676) ==9705== by 0x82C3103: SKELETON::DragableNoteBook::slot_switch_page_tab(_GtkNotebookPage*, unsigned) (signal.h:832) ==9705== by 0x2635F27: (within /usr/lib/libgtkmm-2.4.so.1.0.30) ==9705== by 0x21980B8: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x8DAF82: g_closure_invoke (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EB770: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EC996: g_signal_emit_valist (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8ECB58: g_signal_emit (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x21C0968: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x21BCD19: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x21C1DD4: gtk_notebook_insert_page_menu (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== ==9705== Conditional jump or move depends on uninitialised value(s) ==9705== at 0x824499D: ARTICLE::DrawAreaBase::set_caret(ARTICLE::CARET_POSITION&, int, int) (drawareabase.cpp:2858) ==9705== by 0x8247A49: ARTICLE::DrawAreaBase::exec_scroll(bool) (drawareabase.cpp:2394) ==9705== by 0x82480CB: ARTICLE::DrawAreaBase::slot_change_adjust() (drawareabase.cpp:3464) ==9705== by 0x8E8408: g_cclosure_marshal_VOID__VOID (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8DAF82: g_closure_invoke (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EB770: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EC996: g_signal_emit_valist (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8ECB58: g_signal_emit (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x205D836: gtk_adjustment_value_changed (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x205D6E8: gtk_adjustment_set_value (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x25DB7AC: Gtk::Adjustment::set_value(double) (in /usr/lib/libgtkmm-2.4.so.1.0.30) ==9705== by 0x82479AE: ARTICLE::DrawAreaBase::exec_scroll(bool) (drawareabase.cpp:2380) ==9705== ==9705== Conditional jump or move depends on uninitialised value(s) ==9705== at 0x82449AA: ARTICLE::DrawAreaBase::set_caret(ARTICLE::CARET_POSITION&, int, int) (drawareabase.cpp:2858) ==9705== by 0x8247A49: ARTICLE::DrawAreaBase::exec_scroll(bool) (drawareabase.cpp:2394) ==9705== by 0x82480CB: ARTICLE::DrawAreaBase::slot_change_adjust() (drawareabase.cpp:3464) ==9705== by 0x8E8408: g_cclosure_marshal_VOID__VOID (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8DAF82: g_closure_invoke (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EB770: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EC996: g_signal_emit_valist (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8ECB58: g_signal_emit (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x205D836: gtk_adjustment_value_changed (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x205D6E8: gtk_adjustment_set_value (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x25DB7AC: Gtk::Adjustment::set_value(double) (in /usr/lib/libgtkmm-2.4.so.1.0.30) ==9705== by 0x82479AE: ARTICLE::DrawAreaBase::exec_scroll(bool) (drawareabase.cpp:2380) ==9705== ==9705== Mismatched free() / delete / delete [] ==9705== at 0x4004E56: operator delete(void*) (vg_replace_malloc.c:244) ==9705== by 0x8231F08: ARTICLE::init_font() (font.cpp:48) ==9705== Address 0x6C4FF68 is 0 bytes inside a block of size 524,416 alloc'd ==9705== at 0x4005525: malloc (vg_replace_malloc.c:149) ==9705== by 0x8231E65: ARTICLE::get_width_of_char(char const*, int&, char, int&, int&, int) (font.cpp:75) ==9705== by 0x6BD2C03: ??? ==9705== ==9705== ERROR SUMMARY: 408 errors from 7 contexts (suppressed: 82 from 1) ==9705== malloc/free: in use at exit: 2,696,231 bytes in 30,423 blocks. ==9705== malloc/free: 971,361 allocs, 940,938 frees, 222,638,508 bytes allocated. ==9705== For counts of detected errors, rerun with: -v ==9705== searching for pointers to 30,423 not-freed blocks. ==9705== checked 3,385,164 bytes. ==9705== 84,088 bytes in 914 blocks are still reachable in loss record 231 of 239 ==9705== at 0x4005525: malloc (vg_replace_malloc.c:149) ==9705== by 0x285052D: (within /usr/lib/libcairo.so.2.11.7) ==9705== by 0x287BB38: (within /usr/lib/libcairo.so.2.11.7) ==9705== by 0x285470F: (within /usr/lib/libcairo.so.2.11.7) ==9705== by 0x2846239: (within /usr/lib/libcairo.so.2.11.7) ==9705== by 0x283ECC3: cairo_show_glyphs (in /usr/lib/libcairo.so.2.11.7) ==9705== by 0x683147: (within /usr/lib/libpangocairo-1.0.so.0.1800.4) ==9705== by 0x212BA9: pango_renderer_draw_glyphs (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x21322F: pango_renderer_draw_layout_line (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x213588: pango_renderer_draw_layout (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x682249: (within /usr/lib/libpangocairo-1.0.so.0.1800.4) ==9705== by 0x20E90EC: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== ==9705== ==9705== 87,800 bytes in 4,390 blocks are indirectly lost in loss record 232 of 239 ==9705== at 0x4005525: malloc (vg_replace_malloc.c:149) ==9705== by 0xBBF8B5: (within /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0xBBFF0B: (within /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0xBBC632: FcFontRenderPrepare (in /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0x1C5B58: (within /usr/lib/libpangoft2-1.0.so.0.1800.4) ==9705== by 0x20553F: pango_font_map_load_fontset (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x2033F6: (within /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x203771: pango_itemize_with_base_dir (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x20C6B3: (within /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x20D856: (within /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x208ACFD: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x208AFE4: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== ==9705== ==9705== 156,088 (47,872 direct, 108,216 indirect) bytes in 187 blocks are definitely lost in loss record 233 of 239 ==9705== at 0x4005622: realloc (vg_replace_malloc.c:306) ==9705== by 0xBBF043: (within /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0xBBFA13: (within /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0xBBFF0B: (within /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0xBBC632: FcFontRenderPrepare (in /usr/lib/libfontconfig.so.1.2.0) ==9705== by 0x1C5B58: (within /usr/lib/libpangoft2-1.0.so.0.1800.4) ==9705== by 0x20553F: pango_font_map_load_fontset (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0x203D13: pango_context_get_metrics (in /usr/lib/libpango-1.0.so.0.1800.4) ==9705== by 0xDDEDCE: Pango::Context::get_metrics(Pango::FontDescription const&) const (in /usr/lib/libpangomm-1.4.so.1.0.30) ==9705== by 0x8242C26: ARTICLE::DrawAreaBase::init_font() (drawareabase.cpp:288) ==9705== by 0x46F90EB: ??? ==9705== ==9705== ==9705== 189,596 bytes in 2,790 blocks are still reachable in loss record 234 of 239 ==9705== at 0x4004864: calloc (vg_replace_malloc.c:279) ==9705== by 0x7CB4A5D: g_malloc0 (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CC9205: (within /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CC9B64: g_slice_alloc (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CA0788: g_hash_table_new_full (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CA0807: g_hash_table_new (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7C9A041: g_quark_from_static_string (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x8F397A: g_type_init_with_debug_flags (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8F3B51: g_type_init (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0xC1334D: gdk_pre_parse_libgtk_only (in /usr/lib/libgdk-x11-2.0.so.0.1200.5) ==9705== by 0x218FBBA: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x218FE60: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== ==9705== ==9705== 192,904 bytes in 2,995 blocks are still reachable in loss record 235 of 239 ==9705== at 0x4005622: realloc (vg_replace_malloc.c:306) ==9705== by 0x7CB49BA: g_realloc (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x8F31BA: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8F3327: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8FB90C: g_type_register_static (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E2B94: g_param_type_register_static (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E6BCB: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8F3A6E: g_type_init_with_debug_flags (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8F3B51: g_type_init (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0xC1334D: gdk_pre_parse_libgtk_only (in /usr/lib/libgdk-x11-2.0.so.0.1200.5) ==9705== by 0x218FBBA: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x218FE60: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== ==9705== ==9705== 194,119 bytes in 7,766 blocks are still reachable in loss record 236 of 239 ==9705== at 0x4005525: malloc (vg_replace_malloc.c:149) ==9705== by 0x7CB4AF5: g_malloc (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CCD348: g_strdup (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CDA23E: g_set_prgname (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CBAF4E: g_option_context_parse (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x2190181: gtk_parse_args (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x21901F9: gtk_init_check (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x2190243: gtk_init (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x262C3F6: Gtk::Main::init(int*, char***, bool) (in /usr/lib/libgtkmm-2.4.so.1.0.30) ==9705== by 0x262C47B: Gtk::Main::Main(int*, char***, bool) (in /usr/lib/libgtkmm-2.4.so.1.0.30) ==9705== by 0x8066D58: main (main.cpp:425) ==9705== ==9705== ==9705== 228,334 bytes in 150 blocks are still reachable in loss record 237 of 239 ==9705== at 0x4005525: malloc (vg_replace_malloc.c:149) ==9705== by 0xAFE14C: (within /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB0199A: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB03F72: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB040C5: ft_mem_qrealloc (in /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB0418E: ft_mem_realloc (in /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB359B4: (within /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB37A37: (within /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB123BC: (within /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB052DD: (within /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB05EE2: FT_Open_Face (in /usr/lib/libfreetype.so.6.3.16) ==9705== by 0xB06C27: FT_New_Face (in /usr/lib/libfreetype.so.6.3.16) ==9705== ==9705== ==9705== 594,104 bytes in 521 blocks are possibly lost in loss record 238 of 239 ==9705== at 0x4004750: memalign (vg_replace_malloc.c:332) ==9705== by 0x40047AA: posix_memalign (vg_replace_malloc.c:425) ==9705== by 0x7CC8EC8: (within /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CCA0AB: g_slice_alloc (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CCA224: g_slice_alloc0 (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x8FAD36: g_type_create_instance (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E21A1: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E03EA: g_object_newv (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E1037: g_object_new_valist (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8E113F: g_object_new (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x664743: gdk_pixbuf_new_from_data (in /usr/lib/libgdk_pixbuf-2.0.so.0.1200.5) ==9705== by 0x662905: gdk_pixbuf_new_subpixbuf (in /usr/lib/libgdk_pixbuf-2.0.so.0.1200.5) ==9705== ==9705== ==9705== 825,800 bytes in 2,839 blocks are still reachable in loss record 239 of 239 ==9705== at 0x4004750: memalign (vg_replace_malloc.c:332) ==9705== by 0x40047AA: posix_memalign (vg_replace_malloc.c:425) ==9705== by 0x7CC8EC8: (within /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CCA0AB: g_slice_alloc (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x7CCAD71: g_slist_prepend (in /lib/libglib-2.0.so.0.1400.6) ==9705== by 0x8DFEFE: g_object_notify (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x2321D95: gtk_widget_set_parent (in /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x206795D: (within /usr/lib/libgtk-x11-2.0.so.0.1200.5) ==9705== by 0x8E7918: g_cclosure_marshal_VOID__OBJECT (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8D9778: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8DAF82: g_closure_invoke (in /lib/libgobject-2.0.so.0.1400.6) ==9705== by 0x8EB919: (within /lib/libgobject-2.0.so.0.1400.6) ==9705== ==9705== LEAK SUMMARY: ==9705== definitely lost: 51,434 bytes in 210 blocks. ==9705== indirectly lost: 108,396 bytes in 5,345 blocks. ==9705== possibly lost: 614,288 bytes in 1,131 blocks. ==9705== still reachable: 1,922,113 bytes in 23,737 blocks. ==9705== suppressed: 0 bytes in 0 blocks.