From patchwork Fri Nov 3 16:40:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Domani X-Patchwork-Id: 79036 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A4ECD3858416 for ; Fri, 3 Nov 2023 16:40:51 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from sonic307-54.consmr.mail.ir2.yahoo.com (sonic307-54.consmr.mail.ir2.yahoo.com [87.248.110.31]) by sourceware.org (Postfix) with ESMTPS id 853BE3858C74 for ; Fri, 3 Nov 2023 16:40:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 853BE3858C74 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 853BE3858C74 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=87.248.110.31 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699029638; cv=none; b=ZOhlAhxxxqn3JstCnKS7cdgsuyV2cHotsEIOCzNvMG7RuFtpZU+QeL10j2k9SICrsug14RxgXLYiVSi+rfO3mookY/eqB6KafTe5a7SoAVihUU6GsOyP8ThQThyPfG6WFwIA0+Y5NHaTQ9pSTAKP92e8enSYxj9oqtEJnxJKEG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699029638; c=relaxed/simple; bh=2gd9pmhrD3f/FgOv8XjoKA2Z15f/miKy1zC5vIdYtSQ=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=Vf5udXnzs1pC7B3gzdKK0sDm4HYVeuRzt0o6NVuWM8G1z+NKPIT0+952cxyfDpAGtZCW4oe+hBu5T0umLl1c7jZztqeDoJdCcdEWMJtk1ZxVducmQs6zTeMN/kzZiX8PStxs22/x7E9kvTsJtY/WYWRtPFXA84YVrpA8+34Vvco= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1699029627; bh=psY70Q8zxub043I8g+q0TiZ06qP1EzTGz5uf8KQhQBU=; h=From:To:Subject:Date:References:From:Subject:Reply-To; b=FN/9ZTyXjdjkCwW/g6mvioBbSXrZeJRzXAIHmoW0GsXadeqwjcHVn8gFhYygq8WEjghEQlA8u9EHDC2D+7tCH5oh5khDjXCA+alT9W8B93w3xdvkvAtdN+j/gJIYXQBDOu0cFmZOaaNLnrlClZy29up1WgbR9fIySrYRyBxyKD8w3/HwVRW29r8tfhK5KR+oRCWl1MQnqa7FWu71ZiSxTETmRAXY4vMQxp7owSJapwAgKJ+Jfwd8Hk9UHpQJmDUAUxo/8Dzwd0/r+aPuMr4u3p4/K8/3UkBIAk4udED6KzF16KDT4ITeUgvX9d4S3oeMaU1xhRgmi7THNNLphXztnA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1699029627; bh=U7Ux7dfIbLUeWgaYeVAumniVl7Y8dz7jFnraBuA6dG5=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=IDe/sNT5LsJb3ESXKFm5ywK7f0YfS2grjdB0Tif0bu7Tno8lC0linutlUsm87RYadtOu+ZNOTQlSHlQHOAxyr3U/ISylkb8q/yAgCQqB3bv0WKE5Ir1xRjdM4dw8ZTHxIQEpkVdWGVt+sL2qZb1yYNFgv1kg1xoK95wz87+DeblaTWb3o1ksssjgeXQgmralv4rZUTX8HI9n5oUpjb+wlB4wElUOSce8OAioQ/Yvg4JguLpZGgwIQYL514oMj/RX1gx5ThnwmGaqPFsv1489FgzJkY7AKvLNJpA0NV1pfGEbkZ5yIftjmrBV/FFf6WbBp7NgcxSF+D5s1/R1WqqDdg== X-YMail-OSG: gDhb18sVM1mGR7zLtSXXdzbYROMJnuID6XGrZg3_vWE0c_A7814q4EMJK13ur2_ PSKUiGKaFDtw1g3.0Wx9UV0EapSpCOeUTk_1W2RbXXsUMMe5BemS6F3KMKfUc6QUhx4qnmWRRBff 3_lvj57A.mddsVwfsWHjlc8nDefuQTIVQ8lGz9I.GSBylAbuNoRiBWgqBObVNsEo4OipLO57ZAnM 7LcsiGHBxIu_Pf85q_FwulRgHaY2IqfqyfozXSlXLfIMra7WirWAlL0vBL3ip4EDwo578A7GeZJW 6X1E4yjO6PfzHlarG2ccCnJTufzlCG5XUCewRGxcI0bF2bbXDg498v1VxnCMNFyYil0MrbGzWDAr KBJvpp7tH1oq29RElfPlTgHbD86aniRleYXfmb6upEDVWdSY9mgiV6ExFOpxVOahr9gz84cYQrTC PAjhEYJ7UWXnSd77ZU5Pg.DkifjwhuEW4oyt12aYUFR7DtvtcSBNsmGcChsweoZMbam9dQy5dG2E 5vUea7aAk.bxdB1sCc8uSkJQzGjjpbY4DFtwcN9vB9R0pMc8XLIa5UbV_Isj1oEf0IbYqvz_CCaq zzdmUpxsxbVdvWXCleS6PfN9U1I.zwrisA2hQ7mVfL1828o_KHShIL14igNFmK5MP11pBUkjkJOS mDN2z4t2iVX.0V9fiaRRb6aJgKq5ejepcHIEh8Jcxks.CoDFpxoqC9kEkw09AlRVuKAgjGo52M4V mk9PDbtSNDbSRr61w8o_afyFZxWyApl6as83JKmPTnRY9Hf5bpRHciPx6NjeXaRptol5bJ2lx3QE Y6KrQ4I3KpnQN.baCL3yUCULkbFYsKwbRzaKzTlaPLYBxSeaH7ylYk5hZb7l3_HqxBYBud1Ps.Xq JmGVZdlVDPptCE.7vC.7q5iuvxf9mMHRPCfzsgqm7Kx.2Nyt47r894raNluycUQ33PTBqtQ7lqko PyW8PuCwiNFOgGi29gwmylkYlX_jCOJcptqwfHxUCmlLRqi98pHd.NGUSPsKwq9LgreCDthDpvUW h8SlFKXq243Yqn.OOomiAvkbs1_wKSEXrju36_kW4KD633q4nF6xDVYDS14NdDoSXyjVQ2tb6N_C DAnJmnxrT62HLlAavYY.5Q542kVFi8WTI3Krc_P1tPP3sCuNY.aBrQGW6oRxdsy34KkfHEV2tzIY NIQlJkHaAzJqpsJrEJvGHlJKrO1MNxoioanPDnSu1K7liXmk_iufHJtlpaXxM1oDIB7rphcIqeX3 ys.DEWS6b.HI18ncAet0s7que8OWAlz..pakmFGi.gIA6AEW8UmOX9RymGQvZ7YUjWFVifuBsVGw 1yYgOf0G0iXSsb2vS6NIWhUP6huHxeYePrXSzKA730341jwPJGE1aoYPuY9LkMgDZfVMEmSUQDc2 De3xu11af6vAVileEE40Gwg5MaPjTEDrrrAI7uV0HqQ0tW61ebIDqc0eS6ZIFsfY_Uf9GwDjX91N 0vZNq.9zQ5GA9AhtAyY7q1hUwnyN63h9VXaTkfFlYJkqqcLRCw5pDZ8g7kOCwNfeQgFI7Y3qr1JR BtsADLdpxYGTDeSr875TlJougRXboaSOX4TQ8vgvpLDM.5NDPgkaSK6p.qekfitb6WtQSCL12SPN OgqxoE7OiGhN953F4znpFXErdEgdH2TnE038R1NAZ3Eb8riJTd4PW1aFLXBfyCRGSGuXL134zMUk TkG0CM8HS7E_gXlIqc6lLUU3.zDfoJWbzXzjfM.CkD4fyvrM1yhOgq2RHTzjKZYijuj3Z2r0JtZq TRBbfxcfjAOjb28KLw5fvR0qeDs7Gl.wY35vO9i4j5jwXbv4Ksxnbb62TT7bPE1eGLMbGLVaFvNi RgQCDoucAoVVc2.KVIWxQKbeKpM_3cRjbrni69HAEFWyZuPBEcXxYGjiu0WNyxkCRwDCsP6wEG9S ronPlsRn0AtpQEYSGaSydSb.bcP9NKUtmIWakXGxuJBSIKlsyQ9l90K4vZdfARJ2BbpXEmu4zwHz 2cfJI2X.Vrb_dYTwrBCEhFjxkvIs9xpixKJaGHzyyhGOaOxQ0Sqgtx3We4tsVbdifXXGcZihor9L uAvURlpIPvWnLcGOfN5fUXY_wO0.NPmxCJaHR5aothB1XeH.Vh3vCvnBO_VcnrzjflA0ikN8uIc3 Ve48TM8uD6q9fInB7CNDxyws7sc7jVofuMEmH3wSOTkOf_yC6qAr0AbVLTCB5mIm1fobLP_aH.2C 4PGDs3FxN2rxwnKRnuGC3liFH X-Sonic-MF: X-Sonic-ID: 85c92b00-027c-4eff-895a-4b3bb4d0842f Received: from sonic.gate.mail.ne1.yahoo.com by sonic307.consmr.mail.ir2.yahoo.com with HTTP; Fri, 3 Nov 2023 16:40:27 +0000 Received: by hermes--production-ir2-6755f9ff7c-q5mf6 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 47b6c727e70a94065a4540ee809865cc; Fri, 03 Nov 2023 16:40:26 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH] Fix resizing of TUI python windows Date: Fri, 3 Nov 2023 17:40:01 +0100 Message-Id: <20231103164001.3464-1-ssbssa@yahoo.de> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Antivirus: Avast (VPS 231102-4, 11/02/2023), Outbound message X-Antivirus-Status: Clean References: <20231103164001.3464-1-ssbssa.ref@yahoo.de> X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org When resizing from a big to small terminal size, and you have a TUI python window that would then be outside of the new size, valgrind shows this error: ==3389== Invalid read of size 1 ==3389== at 0xC3DFEE: wnoutrefresh (lib_refresh.c:167) ==3389== by 0xC3E3C9: wrefresh (lib_refresh.c:63) ==3389== by 0xA9766C: tui_unhighlight_win(tui_win_info*) (tui-wingeneral.c:134) ==3389== by 0x98921C: tui_py_window::rerender() (py-tui.c:183) ==3389== by 0xA8C23C: tui_layout_split::apply(int, int, int, int, bool) (tui-layout.c:1030) ==3389== by 0xA8C2A2: tui_layout_split::apply(int, int, int, int, bool) (tui-layout.c:1033) ==3389== by 0xA8C23C: tui_layout_split::apply(int, int, int, int, bool) (tui-layout.c:1030) ==3389== by 0xA8B1F8: tui_apply_current_layout(bool) (tui-layout.c:81) ==3389== by 0xA95CDB: tui_resize_all() (tui-win.c:525) ==3389== by 0xA95D1E: tui_async_resize_screen(void*) (tui-win.c:562) ==3389== by 0x6B855D: invoke_async_signal_handlers() (async-event.c:234) ==3389== by 0xC0CEF8: gdb_do_one_event(int) (event-loop.cc:199) ==3389== Address 0x115cc214 is 1,332 bytes inside a block of size 2,240 free'd ==3389== at 0x4A0A430: free (vg_replace_malloc.c:446) ==3389== by 0xC3CF7D: _nc_freewin (lib_newwin.c:121) ==3389== by 0xA8B1C6: tui_apply_current_layout(bool) (tui-layout.c:78) ==3389== by 0xA95CDB: tui_resize_all() (tui-win.c:525) ==3389== by 0xA95D1E: tui_async_resize_screen(void*) (tui-win.c:562) ==3389== by 0x6B855D: invoke_async_signal_handlers() (async-event.c:234) ==3389== by 0xC0CEF8: gdb_do_one_event(int) (event-loop.cc:199) ==3389== by 0x8E40E9: captured_command_loop() (main.c:407) ==3389== by 0x8E5E54: gdb_main(captured_main_args*) (main.c:1324) ==3389== by 0x62AC04: main (gdb.c:39) It's because tui_py_window::m_inner_window still has the outside coordinates, and wnoutrefresh then does an out-of-bounds access. Fix this by resetting m_inner_window on every resize, it will anyways be recreated in the next rerender call. --- gdb/python/py-tui.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c index 64f22dbb462..a84e38a0563 100644 --- a/gdb/python/py-tui.c +++ b/gdb/python/py-tui.c @@ -102,6 +102,8 @@ class tui_py_window : public tui_win_info tui_win_info::refresh_window (); } + void resize (int height, int width, int origin_x, int origin_y) override; + void click (int mouse_x, int mouse_y, int mouse_button) override; /* Erase and re-box the window. */ @@ -232,6 +234,14 @@ tui_py_window::do_scroll_vertical (int num_to_scroll) } } +void +tui_py_window::resize (int height_, int width_, int origin_x_, int origin_y_) +{ + m_inner_window.reset (nullptr); + + tui_win_info::resize (height_, width_, origin_x_, origin_y_); +} + void tui_py_window::click (int mouse_x, int mouse_y, int mouse_button) {