From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 16CAF388F04E for ; Thu, 4 Jun 2020 14:38:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 16CAF388F04E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 77F14B135; Thu, 4 Jun 2020 14:38:26 +0000 (UTC) Subject: Re: [gdb/testsuite] Fix error handling in gdb_file_cmd To: Pedro Alves , gdb-patches@sourceware.org References: <20200604102423.GA2054@delia> <10439d10-c133-4738-9f39-d8295a75c2e4@suse.de> From: Tom de Vries Autocrypt: addr=tdevries@suse.de; keydata= xsBNBF0ltCcBCADDhsUnMMdEXiHFfqJdXeRvgqSEUxLCy/pHek88ALuFnPTICTwkf4g7uSR7 HvOFUoUyu8oP5mNb4VZHy3Xy8KRZGaQuaOHNhZAT1xaVo6kxjswUi3vYgGJhFMiLuIHdApoc u5f7UbV+egYVxmkvVLSqsVD4pUgHeSoAcIlm3blZ1sDKviJCwaHxDQkVmSsGXImaAU+ViJ5l CwkvyiiIifWD2SoOuFexZyZ7RUddLosgsO0npVUYbl6dEMq2a5ijGF6/rBs1m3nAoIgpXk6P TCKlSWVW6OCneTaKM5C387972qREtiArTakRQIpvDJuiR2soGfdeJ6igGA1FZjU+IsM5ABEB AAHNH1RvbSBkZSBWcmllcyA8dGRldnJpZXNAc3VzZS5kZT7CwKsEEwEIAD4WIQSsnSe5hKbL MK1mGmjuhV2rbOJEoAUCXSW0JwIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAh CRDuhV2rbOJEoBYhBKydJ7mEpsswrWYaaO6FXats4kSgc48H/Ra2lq5p3dHsrlQLqM7N68Fo eRDf3PMevXyMlrCYDGLVncQwMw3O/AkousktXKQ42DPJh65zoXB22yUt8m0g12xkLax98KFJ 5NyUloa6HflLl+wQL/uZjIdNUQaHQLw3HKwRMVi4l0/Jh/TygYG1Dtm8I4o708JS4y8GQxoQ UL0z1OM9hyM3gI2WVTTyprsBHy2EjMOu/2Xpod95pF8f90zBLajy6qXEnxlcsqreMaqmkzKn 3KTZpWRxNAS/IH3FbGQ+3RpWkNGSJpwfEMVCeyK5a1n7yt1podd1ajY5mA1jcaUmGppqx827 8TqyteNe1B/pbiUt2L/WhnTgW1NC1QDOwE0EXSW0JwEIAM99H34Bu4MKM7HDJVt864MXbx7B 1M93wVlpJ7Uq+XDFD0A0hIal028j+h6jA6bhzWto4RUfDl/9mn1StngNVFovvwtfzbamp6+W pKHZm9X5YvlIwCx131kTxCNDcF+/adRW4n8CU3pZWYmNVqhMUiPLxElA6QhXTtVBh1RkjCZQ Kmbd1szvcOfaD8s+tJABJzNZsmO2hVuFwkDrRN8Jgrh92a+yHQPd9+RybW2l7sJv26nkUH5Z 5s84P6894ebgimcprJdAkjJTgprl1nhgvptU5M9Uv85Pferoh2groQEAtRPlCGrZ2/2qVNe9 XJfSYbiyedvApWcJs5DOByTaKkcAEQEAAcLAkwQYAQgAJhYhBKydJ7mEpsswrWYaaO6FXats 4kSgBQJdJbQnAhsMBQkDwmcAACEJEO6FXats4kSgFiEErJ0nuYSmyzCtZhpo7oVdq2ziRKD3 twf7BAQBZ8TqR812zKAD7biOnWIJ0McV72PFBxmLIHp24UVe0ZogtYMxSWKLg3csh0yLVwc7 H3vldzJ9AoK3Qxp0Q6K/rDOeUy3HMqewQGcqrsRRh0NXDIQk5CgSrZslPe47qIbe3O7ik/MC q31FNIAQJPmKXX25B115MMzkSKlv4udfx7KdyxHrTSkwWZArLQiEZj5KG4cCKhIoMygPTA3U yGaIvI/BGOtHZ7bEBVUCFDFfOWJ26IOCoPnSVUvKPEOH9dv+sNy7jyBsP5QxeTqwxC/1ZtNS DUCSFQjqA6bEGwM22dP8OUY6SC94x1G81A9/xbtm9LQxKm0EiDH8KBMLfQ== Message-ID: <1ec7348a-cdf2-00f8-183b-5b975a3be2af@suse.de> Date: Thu, 4 Jun 2020 16:38:19 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------7063581382165803B33BC997" Content-Language: en-US X-Spam-Status: No, score=-16.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jun 2020 14:38:25 -0000 This is a multi-part message in MIME format. --------------7063581382165803B33BC997 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 04-06-2020 13:51, Pedro Alves wrote: > On 6/4/20 11:45 AM, Tom de Vries wrote: >>> [gdb/testsuite] Fix PATH error in gdb_file_cmd >> >> And a follow-up patch fixing another problem in gdb_file_cmd. > > LGTM. Updated log message to accommodate for commit 0cfcd4f003 "[gdb/testsuite] Fix use of fail in gdb_cmd_file", committed as attached. Thanks, - Tom --------------7063581382165803B33BC997 Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-testsuite-Fix-error-handling-in-gdb_file_cmd.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename*0="0001-gdb-testsuite-Fix-error-handling-in-gdb_file_cmd.patch" [gdb/testsuite] Fix error handling in gdb_file_cmd Consider a gdb_load patch to call the gdb_file_cmd twice: ... proc gdb_load { arg } { if { $arg != "" } { + set res [gdb_file_cmd $arg] + if { $res != 0 } { + return $res + } return [gdb_file_cmd $arg] } return 0 } ... When running test-case gdb.base/index-cache.exp, we run into: ... ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache, other program \ already loaded (timeout). FAIL: gdb.base/index-cache.exp: test_cache_enabled_miss: check index-cache \ stats (GDB internal error) ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache, other program \ already loaded (timeout). ... The first timeout in more detail: ... (gdb) file outputs/gdb.base/index-cache/index-cache^M Load new symbol table from "index-cache"? (y or n) y^M Reading symbols from index-cache...^M src/gdb/dwarf2/read.c:2540: internal-error: \ void create_cus_from_index(dwarf2_per_bfd*, const gdb_byte*, offset_type, \ const gdb_byte*, offset_type): \ Assertion `per_bfd->all_comp_units.empty ()' failed.^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M Quit this debugging session? (y or n) ERROR: Couldn't load index-cache, \ other program already loaded (timeout). ... Proc gdb_file_cmd has a gdb_expect handling the result of the file command, and if the result is a "Load new symbol table from index-cache? (y or n) " prompt, it sends a "y" and enters in a nested gdb_expect to handle the result. The first gdb_expect contains code to handle "A problem internal to GDB has been detected", but the second one doesn't, which causes the timeout. Fix this by removing the nested gdb_expect, and using exp_continue instead, such that we have instead: ... ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache -- with new \ symbol table into gdb (GDB internal error). ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache -- with new \ symbol table into gdb (GDB internal error). ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-06-04 Tom de Vries * lib/gdb.exp (gdb_file_cmd): Replace incomplete gdb_expect by exp_continue. --- gdb/testsuite/lib/gdb.exp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 63a9e3da53..3cdaefaa9c 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1761,6 +1761,7 @@ proc gdb_file_cmd { arg } { } send_gdb "file $arg\n" + set new_symbol_table 0 gdb_expect 120 { -re "Reading symbols from.*LZMA support was disabled.*$gdb_prompt $" { verbose "\t\tLoaded $arg into $GDB; .gnu_debugdata found but no LZMA available" @@ -1778,22 +1779,14 @@ proc gdb_file_cmd { arg } { return 0 } -re "Load new symbol table from \".*\".*y or n. $" { + if { $new_symbol_table > 0 } { + perror "Couldn't load $arg, interactive prompt loop detected." + return -1 + } send_gdb "y\n" answer - gdb_expect 120 { - -re "Reading symbols from.*$gdb_prompt $" { - verbose "\t\tLoaded $arg with new symbol table into $GDB" - set gdb_file_cmd_debug_info "debug" - return 0 - } - timeout { - perror "Couldn't load $arg, other program already loaded (timeout)." - return -1 - } - eof { - perror "Couldn't load $arg, other program already loaded (eof)." - return -1 - } - } + incr new_symbol_table + set arg "$arg -- with new symbol table" + exp_continue } -re "No such file or directory.*$gdb_prompt $" { perror "($arg) No such file or directory" --------------7063581382165803B33BC997--