From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailsec218.isp.belgacom.be (mailsec218.isp.belgacom.be [195.238.22.114]) by sourceware.org (Postfix) with ESMTPS id 814AB388552F for ; Sun, 20 Nov 2022 10:54:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 814AB388552F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=skynet.be Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=skynet.be DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=rmail; t=1668941687; x=1700477687; h=message-id:subject:from:to:date:in-reply-to:references: mime-version:content-transfer-encoding; bh=wsUhxXEJV2kheeDFVlrfOAXrNmbm9DqPdPOj6N5GWTg=; b=dlte5oL2n9GwqoJfasnkAInRwnh5EVitBRKPL43tRP2/0Muv64x5Ts0F ZVuwyMRTtDY1nmvAYrQts9mD22rUZa90X0IZrXLtYbJspWT18kEizNyBJ 0kM3bGDydLlv911YEJMEUqj6TlCtE+dU57718J/eFc2TUbaNTeRQ2HVDO 4=; X-ExtLoop: 1 X-IPAS-Result: =?us-ascii?q?A2BmAQCoBnpj/1uGgG0NTYEJCYFGggWBLIFYhE6RGgOdM?= =?us-ascii?q?YF+DwEBAQEBAQEBAQk5CwQBAYUFAoUCJjYHDgECBAEBAQEDAgMBAQEBAQEDA?= =?us-ascii?q?QEGAQEBAQEBBgQBgRuFLzmCQiKDfQEBAQMjDwFWCw4KAgImAgJXBgGCN1mDN?= =?us-ascii?q?bE2eoEygQGDUAGcBYFhBoEULIkAg2CEMDeBVUSECDc+gmIDhTaCZwSXXRw3A?= =?us-ascii?q?xkrHUADC20KShtYDgkfFgYOFw0FBhIDIEYmBQo3DygvZxAbHBsHgQwqCR8VA?= =?us-ascii?q?wQEAwIGEwMiAg0pMRQEKRMNKydvCQIDIWUFAwMEKCwDCSEfBxYRJjwHVhIoA?= =?us-ascii?q?QQDAg8gOAYDCQMCIhNCdQklERUFAwsVJQgFSwQIOQUGUxICChEDEg8GJkUOS?= =?us-ascii?q?D45FgYndA4OFANegWkENYFxCplvgX0hLCtKFgIgN4EVXJJXAa9bNAeDa4FHB?= =?us-ascii?q?gyJdJUHMoN4kzuKV4cMLZcHII0jmjWBaQuCA21gE4JHUiiOKQMWFYhPhUt0O?= =?us-ascii?q?wIHAQoBAQMJimIBAQ?= IronPort-PHdr: A9a23:OjluDR3EsJ2Zrg6hsmDOQQMyDhhOgF0UFjAc5pdvsb9SaKPrp82kY BaDo6g2xwaVDc2bs6sC17CN9fi4GCQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgH c5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTajbr5+N hW7oAveusULjoZvKbs6xh/VrndVYehbyn1kKFyJkxrg+su8+YNo/jhNtf4m68NOS7jxcb4iT bxfAjQmMmQ169PuuBLeUwaB5WYSX3sPnBZQDAfL8B/1XpHqsivnreV9wzWVPdf3Tb8vRzuv6 bpgRQLyhycGMz4593zXitB1galGrh+tuwBzzojJa4yTKfFwfL7SfckCSGRCQ8hfVzJPDI2+Y IsBE+UOM+lXoYbmqlsSrhazHxWgCP/1xzJKgHL9wK000/4mEQHDxAEuBdIOsHXQrNX0LKcSS f66x7TIwjrZdfNW3i796JXJch8/u/GMRq97fM3JyUkvFgPFilSQqZT9PzyLzOgMvXKU7/BnV eK2lm4nqh9+oiK0xso3kYnJhYIUylba+iVl2oo6PsO3RVd9bNW5H5ReqzuUOJFqQsM+XW5oo iA6x6UCtJO1YSQEx4oqyhHdZvGHcIWF4B3uWumfLztkin9rd7yyiwiv/EWh1+DwSse53VRFo yZZktfBtXQA2gHT58WITPZ240mv2TGK1w/J6+FEJ1g5lbHcK5482L4/ioQcsErZES/shkr6l qiWdl8r+uWu9u/pYa3mq4eBO4NojgzyKLkiltK8DOgiLwQDUWeW9f642bH++0DyXa9Egecsk qbDtZDXPcEbpqmkDABLyosj8BO/Dyu+0NQfgHkHMEpJeBKZgIjtPFHDOPT3Aeq7jliyijtn2 vHLM777DpnQNHTPjbPscrBl505dzgo808xf6opJBr0dJP//QFL9uMLbAxMjLgC5zenqBM952 48DQW6PB7WWMKLWsV+G/OIvJOyMaZcNuDb9Kvgl4//ujWchmVADZ6Wo04EYaGq/HvR/PkWZY GTjgs0aEWoRpQo+T+zriFucXj5PfXq9RLwz6ik9CI29FYjDXJyigKSd3CenGZ1bfm5LBkiWE Xj0b4WER+sMaCWKL896kzwEUKKuS5Ui1Ry1rw/6yr9nIfDO+i0br57syMJ66/XJlR4u7Tx0E 9id02aVQmF7g2wHXCY63Lhlrkxh1liD0bZ3g+dDGNxI4PNJTx06OoLCwO10Ed/yQBzOcs2OS Fa8TdWqGSsxQc4pw98Sf0Z9HM2vjgzE3yqvGLIVi6aLBJsx8q3C33n9Pdpyy3HD1Ppps15ze cpKMmvuo6dl/AjST9rSkkCQjaWCbqUZ1TTOsmyKmy7Gs01SFRZ5Ta7FUGs3fUzLt9/0+UrYQ vmpE7tjejdGzIa+MKxPZ8yh2UlBQd//ItPbbnP3kGC1U0Wm3LSJObLqemEcxD3QQHcNiQcK4 HeLLxN2Uj+hombfFCRjU03meUT17OhzsmiTVUwlyQyWKUdsgenmsiUJjOCRHqtAlokPvz0s/ m0cIQ== IronPort-Data: A9a23:Gw9NyKyZ9NDrXwGgHFV6t+dDxyrEfRIJ4+MujC+fZmUNrF6WrkVWn 2IXDGyGMv+PN2P2Kt93a9i1o05Uv5XSnINkSwBs/lhgHilAwSbn6XR1DatR0we6dJCroJdPt p1GAjX4BJloCCWa/39BC5C5xVFkz6aEW7HgP+DNPyF1VGdMRTwo4f5Zs7dRbrVA3J7oXWthh fuo+5eFYQb/g2YtWo4pw/vrRC1H7ayaVAww4wRWicBj5Df2i3QTBZQDEqC9R1OQrl58R7PSq 07rldlVz0uBl/sfIorNfoXTLiXmdoXv0T2m0RK6bUQNbi9q/UTe2o5jXBYVhNw+Zz+hx7idw /0V3XC8pJtA0qDkwIwgvxdk/y5WBoJjyoDYMVqE7u+9yXfmS2vL6dZzNRRjVWEY0r4f7WBmx qVJcnZUMEDF3qTvkYfTputE35xyapCxbMVG4S0mnGix4fUOGPgvR43S5d5c3S8oi4ZRFOzZf tcYZCB0RA/DchtCJhEdBfrSmc/y1imuL2UF8Dp5o4Jt/UfW9DYs3IHrG9b+SNLQRcJqhUmx8 zeuE2PRR0ty2Mak4SGE93u2hcfUnCbyQoFUH7TQ3vFmihiLz3AYCBANfUC8vOOyh1G3Qd8ZL FYbkgIyqq0a6FasS9TsGRa/pRa5UgU0CoMWSrZmrVjXmu+Nu1ffD2QfSntNedpgtdQuAzYn0 lCAlNTsQzZi2FGIdU+gGn6vhWvaEUAowaUqPEfokSNtDxLfTE3fQ/4BohuP0EJ4szEtJQzN/ g== IronPort-HdrOrdr: A9a23:rDQMaq2bBiJUq8lv6Nr3KAqjBIUkLtp133Aq2lEZdPU1SL38qy nKpp8mPHDP5wr5NEtBpTn4Asi9qCrnm6Kdg7NhWYtKLTOLhILAFugLh+bfKlbbak7DH4BmpN 5dWpk7JNrsDUVryebWiTPIa+rJ3LO8gcKVbD7lvhBQpNdRGsdd0zs= X-IronPort-Anti-Spam-Filtered: true Received: from 91.134-128-109.adsl-dyn.isp.belgacom.be (HELO [192.168.1.19]) ([109.128.134.91]) by relay.proximus.be with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Nov 2022 11:54:45 +0100 Message-ID: <75718637483e4eb742006ebc514dd51607070326.camel@skynet.be> Subject: Re: [RFAv4] Show locno for 'multi location' breakpoint hit msg+conv var $_hit_bbnum $_hit_locno. From: Philippe Waroquiers To: Simon Marchi , gdb-patches@sourceware.org, Tom Tromey Date: Sun, 20 Nov 2022 11:54:44 +0100 In-Reply-To: <26ab916ba5ec80bc34bb44e96b4a90dd9ce801c6.camel@skynet.be> References: <20221112224146.3148234-1-philippe.waroquiers@skynet.be> <563d4081-5eda-6c9c-048d-0db1a77bfd8f@simark.ca> <26ab916ba5ec80bc34bb44e96b4a90dd9ce801c6.camel@skynet.be> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.3-1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Sun, 2022-11-20 at 09:35 +0100, Philippe Waroquiers via Gdb-patches wrote: > On Sat, 2022-11-19 at 21:06 -0500, Simon Marchi wrote: > > > > Here are the other failures I get. I didn't check if they were caused > > by your patch, but since they appeared at the same time, it's likely. > > > >  - gdb.threads/multi-create-ns-info-thr.exp > >  - gdb.base/dprintf-execution-x-script.exp > >  - gdb.base/commands.exp > >  - gdb.base/bp-cmds-execution-x-script.exp > >  - gdb.base/bp-cmds-continue-ctrl-c.exp > > > valgrind also shows a use after free e.g. in gdb.base/commands.exp > > Will investigate further ... I have sent [RFA] Fix use after free introduced by $_hit_bpnum/$_hit_locno variables. https://sourceware.org/pipermail/gdb-patches/2022-November/194014.html that should fix the user after free. Sorry for the breakage, thanks for reporting the issue. Note that I did some verifications with valgrind, which highlighted some leaks: * some thread related data structure (probably not a big leak, there are not a lot of threads) * in command execution related to the mi interpreter * seems like some more big leaks in the dwarf reader (see below) If I have some more time this week-end, I might investigate the dwarf reader leaks first. Philippe Here are leaks reported when running gdb.mi/mi-break.exp ==2133857== ==2133857== HEAP SUMMARY: ==2133857== in use at exit: 24,643,711 bytes in 24,500 blocks ==2133857== total heap usage: 402,114 allocs, 377,614 frees, 176,035,340 bytes allocated ==2133857== ==2133857== VALGRIND_GDB_ERROR_BEGIN ==2133857== 632 bytes in 1 blocks are definitely lost in loss record 6,861 of 7,483 ==2133857== at 0x4839F01: operator new(unsigned long) (vg_replace_malloc.c:434) ==2133857== by 0x7CA7B5: new_thread (thread.c:247) ==2133857== by 0x7CA7B5: add_thread_silent(process_stratum_target*, ptid_t) (thread.c:281) ==2133857== by 0x5D7A25: inf_ptrace_target::create_inferior(char const*, std::__cxx11::basic_string, std::allocator > const&, char**, int) (inf-ptrace.c:100) ==2133857== by 0x624FC4: linux_nat_target::create_inferior(char const*, std::__cxx11::basic_string, std::allocator > const&, char**, int) (linux-nat.c:978) ==2133857== by 0x5E2EE1: run_command_1(char const*, int, run_how) (infcmd.c:469) ==2133857== by 0x48DFD4: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:2543) ==2133857== by 0x7D0781: execute_command(char const*, int) (top.c:692) ==2133857== by 0x6761E1: mi_execute_cli_command(char const*, bool, char const*) (mi-main.c:2135) ==2133857== by 0x6764F1: mi_cmd_exec_run(char const*, char**, int) (mi-main.c:477) ==2133857== by 0x673B40: mi_cmd_execute(mi_parse*) (mi-main.c:2109) ==2133857== by 0x675FDF: captured_mi_execute_command (mi-main.c:1816) ==2133857== by 0x675FDF: mi_execute_command(char const*, int) (mi-main.c:1941) ==2133857== by 0x66525B: mi_execute_command_wrapper (mi-interp.c:281) ==2133857== by 0x66525B: mi_execute_command_input_handler(std::unique_ptr >&&) (mi-interp.c:310) ==2133857== by 0x571A27: gdb_readline_no_editing_callback(void*) (event-top.c:925) ==2133857== by 0x571DDF: stdin_event_handler(int, void*) (event-top.c:541) ==2133857== by 0x97D9C5: gdb_wait_for_event(int) [clone .part.0] (event-loop.cc:694) ==2133857== by 0x97E1F3: gdb_wait_for_event (event-loop.cc:593) ==2133857== by 0x97E1F3: gdb_do_one_event(int) (event-loop.cc:264) ==2133857== by 0x647F19: start_event_loop (main.c:411) ==2133857== by 0x647F19: captured_command_loop() (main.c:471) ==2133857== by 0x649A44: captured_main (main.c:1330) ==2133857== by 0x649A44: gdb_main(captured_main_args*) (main.c:1345) ==2133857== by 0x3A0A0B: main (gdb.c:32) ==2133857== ==2133857== VALGRIND_GDB_ERROR_END ==2133857== VALGRIND_GDB_ERROR_BEGIN ==2133857== 3,269 (32 direct, 3,237 indirect) bytes in 1 blocks are definitely lost in loss record 7,179 of 7,483 ==2133857== at 0x483E1E8: calloc (vg_replace_malloc.c:1340) ==2133857== by 0x3F54B0: xcalloc (alloc.c:97) ==2133857== by 0x609636: xcnew (poison.h:122) ==2133857== by 0x609636: get_interp_info (interps.c:63) ==2133857== by 0x609636: interp_lookup_existing (interps.c:205) ==2133857== by 0x609636: interp_lookup(ui*, char const*) (interps.c:228) ==2133857== by 0x6099B2: set_top_level_interpreter(char const*) (interps.c:249) ==2133857== by 0x7CD891: new_ui_command(char const*, int) (top.c:398) ==2133857== by 0x48DFD4: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:2543) ==2133857== by 0x7D0781: execute_command(char const*, int) (top.c:692) ==2133857== by 0x572CBC: command_handler(char const*) (event-top.c:616) ==2133857== by 0x57304C: command_line_handler(std::unique_ptr >&&) (event-top.c:860) ==2133857== by 0x573660: gdb_rl_callback_handler(char*) (event-top.c:246) ==2133857== by 0x87B65F: rl_callback_read_char (callback.c:290) ==2133857== by 0x5720CD: gdb_rl_callback_read_char_wrapper_noexcept() (event-top.c:188) ==2133857== by 0x573540: gdb_rl_callback_read_char_wrapper(void*) (event-top.c:221) ==2133857== by 0x571DDF: stdin_event_handler(int, void*) (event-top.c:541) ==2133857== by 0x97D9C5: gdb_wait_for_event(int) [clone .part.0] (event-loop.cc:694) ==2133857== by 0x97E1F3: gdb_wait_for_event (event-loop.cc:593) ==2133857== by 0x97E1F3: gdb_do_one_event(int) (event-loop.cc:264) ==2133857== by 0x647F19: start_event_loop (main.c:411) ==2133857== by 0x647F19: captured_command_loop() (main.c:471) ==2133857== by 0x649A44: captured_main (main.c:1330) ==2133857== by 0x649A44: gdb_main(captured_main_args*) (main.c:1345) ==2133857== by 0x3A0A0B: main (gdb.c:32) ==2133857== ==2133857== VALGRIND_GDB_ERROR_END ==2133857== VALGRIND_GDB_ERROR_BEGIN ==2133857== 43,165 bytes in 1,801 blocks are definitely lost in loss record 7,450 of 7,483 ==2133857== at 0x483979B: malloc (vg_replace_malloc.c:393) ==2133857== by 0x3F5434: xmalloc (alloc.c:57) ==2133857== by 0x96B83E: xstrdup (xstrdup.c:34) ==2133857== by 0x5380F1: dw2_get_file_names_reader (read.c:2825) ==2133857== by 0x5380F1: dw2_get_file_names(dwarf2_per_cu_data*, dwarf2_per_objfile*) (read.c:2851) ==2133857== by 0x538D1C: dw_expand_symtabs_matching_file_matcher(dwarf2_per_objfile*, gdb::function_view) (read.c:4149) ==2133857== by 0x557855: cooked_index_functions::expand_symtabs_matching(objfile*, gdb::function_view, lookup_name_info const*, gdb::function_view, gdb::function_view, enum_flags, domain_enum, search_domain) (read.c:18679) ==2133857== by 0x777F5A: objfile::map_symtabs_matching_filename(char const*, char const*, gdb::function_view) (symfile-debug.c:207) ==2133857== by 0x78B23C: iterate_over_symtabs(char const*, gdb::function_view) (symtab.c:633) ==2133857== by 0x78B2F4: lookup_symtab(char const*) (symtab.c:647) ==2133857== by 0x464FCA: classify_name(parser_state*, block const*, bool, bool) (c-exp.y:3086) ==2133857== by 0x46705F: c_yylex() (c-exp.y:3254) ==2133857== by 0x467B3B: c_yyparse() (c-exp.c.tmp:2037) ==2133857== by 0x46FB3B: c_parse(parser_state*) (c-exp.y:3420) ==2133857== by 0x6A312D: parse_exp_in_context(char const**, unsigned long, block const*, int, bool, innermost_block_tracker*, std::unique_ptr >*) (parse.c:515) ==2133857== by 0x6A33C0: parse_exp_1(char const**, unsigned long, block const*, int, innermost_block_tracker*) (parse.c:428) ==2133857== by 0x44EFF8: create_breakpoint(gdbarch*, location_spec*, char const*, int, char const*, bool, int, int, bptype, int, auto_boolean, breakpoint_ops const*, int, int, int, unsigned int) (breakpoint.c:9034) ==2133857== by 0x65B884: mi_cmd_break_insert_1(int, char const*, char**, int) [clone .constprop.0] (mi-cmd-break.c:360) ==2133857== by 0x673B40: mi_cmd_execute(mi_parse*) (mi-main.c:2109) ==2133857== by 0x675FDF: captured_mi_execute_command (mi-main.c:1816) ==2133857== by 0x675FDF: mi_execute_command(char const*, int) (mi-main.c:1941) ==2133857== by 0x66525B: mi_execute_command_wrapper (mi-interp.c:281) ==2133857== by 0x66525B: mi_execute_command_input_handler(std::unique_ptr >&&) (mi-interp.c:310) ==2133857== by 0x571A27: gdb_readline_no_editing_callback(void*) (event-top.c:925) ==2133857== by 0x571DDF: stdin_event_handler(int, void*) (event-top.c:541) ==2133857== by 0x97D9C5: gdb_wait_for_event(int) [clone .part.0] (event-loop.cc:694) ==2133857== by 0x97E1F3: gdb_wait_for_event (event-loop.cc:593) ==2133857== by 0x97E1F3: gdb_do_one_event(int) (event-loop.cc:264) ==2133857== by 0x647F19: start_event_loop (main.c:411) ==2133857== by 0x647F19: captured_command_loop() (main.c:471) ==2133857== by 0x649A44: captured_main (main.c:1330) ==2133857== by 0x649A44: gdb_main(captured_main_args*) (main.c:1345) ==2133857== by 0x3A0A0B: main (gdb.c:32) ==2133857==