From patchwork Sun Feb 11 12:25:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Domani X-Patchwork-Id: 85576 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 E5BAE3858D35 for ; Sun, 11 Feb 2024 12:23:18 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from sonic304-22.consmr.mail.ir2.yahoo.com (sonic304-22.consmr.mail.ir2.yahoo.com [77.238.179.147]) by sourceware.org (Postfix) with ESMTPS id CCE4F3858D20 for ; Sun, 11 Feb 2024 12:22:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CCE4F3858D20 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 CCE4F3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.179.147 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707654176; cv=none; b=vbsuNNN351JXS9Ltjdf1tkjbJJZmyO9txN+/4taYC7/0UjCD0EdhFXSFyymvFv2q+7JRiUfkhs0FHV9KLM6GbNIrNFfD6myxPti7mWZfiAD8qU/nZPWzNmeosd/6Lu95NSs47ISQoX6u/y04naAwfzJ/9njdpTngiMpenrcg6wE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707654176; c=relaxed/simple; bh=bs+dEuLlHW9/AqKOlXSWP38kWvL++nB3dM3FyRXlvUk=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=WAqg0vYXqZpm6JLb1mB0mXDeNHq40xxxEbQCORdH2zqoMWel5X+7MrcHg+R8jrcjVkAfzVXhTWbSKCLUY7VXOq/qxd4tfVH4M7Q5fov29oOEeKTlNw0HrTR0iMbnRDOlRRGjzYXVE0t2eUARYGDSYmgRPJhEG2T4QOMA94PZWv8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1707654173; bh=3/NKUjezhnNR0HJLb9qbRr4/jlO27aDXuXJuzE2KKH8=; h=From:To:Subject:Date:References:From:Subject:Reply-To; b=jpW2JDJY7PtzFBZEn0lY6EOhGJjMEXknF2me/q84t+H92MRipvF4g33sLyuzQIka67L2h93kU6VWKNGAeUlHzSWoG4agQQlcJmaISLcIwF0VyqLB7AaU68HcrFKwsfp6TIPe1LFyzwyBhTw/PzuvZFr17iO1qmkjHrTq2LUhR8ZR1fWPeh3W+p4OBEnP7mu3LguzSnhSSWj9q13Ic3HG0tv1GLCGxbs9HuqEb0v3n/xg+Vg7VFKvW3pZXrr0zM+RPfcGx3gJSdUwQ86XywTv1Pjtc1zp9BUKyRTnbSCzOOlIdSOmvd2oxGogvp8ZdV/dtg4ghfuLPNOKx6lHbb1/Gg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1707654173; bh=rLKqDPPRSDYdED/8OI4SfIS2+gTB5ybQFgTbTdrxPse=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=aH5ATuwxe2CRaSXSknFtubFgsNGZ9gR8G6cWbpFmdMP0JspMzTJTPaIA/bplhzB4A3qhvjZsPAC/csPqjR4XQ7xXkvWYvqEljWU11XnTZuW2/4TyrxMRTZKcNaKRlc0WLh1QQtPkF/VJ6brwMG0ZQSZ2K2KpgdKWusm/KnFsLIf/NPWUuZIcoug8PkfjZN2/Vs9e0JlANulkWUIePfHnBIt8ozrLM5YIVVqyg7QDB+Qj3bORZmG7Fzdu8wnLnFU345lYoCQA4vu+pfwA6zoZTblyXZuC+9i2pSKM+xWA+eX6OGPf+v5AAYTox7SeGKAa76nAPWY0DxHDntRY4eO8yA== X-YMail-OSG: DxHl5ZIVM1maEgF2UPB2HNP14anIBNyHiEXoC8BdbVmUWcwLuNdByAU4J9mkqTS D0TOFyH4HVgQkfumOAlLlv6WVj.teQRmXfUOwmVYtygl6grvvASMXg7vciQmOyuSyug3m83GbbnI 7jrNkKn9q0RjkACbErudSa.4hWQEk63bCymN1SPQuQtmODZzN1oLRzIcDkW10N4_qohiJCpHWHBe N7dhdxhrrm66avrcpjoqqIlVEA5tq1ozmxjsGDULJSmVvc5OVZm1G9BVsyn5fcZV3QgxoIcmLxY_ 2hg9rN30IWvLhiFP5eCbVfpceWfrp29clFcCTwMz7z7KqDqZ9SkSrtyUgZNsfpNMwECNCU0TE7Eb XjOtwEAOCMEbxojN_yZRoN3mp09Wx3WWzAbvagfBZTKoQC1F_aGpTIGDbjsVjvsA_bwMPY8haYD0 SxrQknbvfOo8wMvjm1fJ4Qh_IEfYjR8l.fhSMrINY0Ddn1Z7Htabr3r9cnVqUum5d4zbtAASnpOy na8Tb.ogXZBnH9ErQwbB6jmSYFi4B9qJbHRIr5wNpjbIgtb16in0KCY0UDP3qjeWy6v0fv7HziKk 3rsqsoXj2sHKrWpEz4LxIpdbFlWHo079b41I0JP80mRYgZuhJFxFNVngdi3jMDiU.N.1VZQPvQfE 8..2nEmKxxTZnvlGUxyt6tlHm.VxFVdxDGPuVtLsjO00OjwkDQC7cyGVlMEuBCkNI.TnF4.LZpra BNNKsrfpn6CUgTlJCkz5BWEhAa_12pyWmwo_Mnw5ZJQfSbsO_ViczNImDIkG4BgaqKgf6q9.dFAp AuEJuNGQGC9MX7jIFaNaYXQZB9O7A.7dYeSdjxxH13Ztk7UkWjN_0420MieCl53Q8X5dLTDnvdez PhSXNU.APK2JHLoklCpp9PI4ee.PLrfTAoHLfZ8.wTE0WmPeyjgTEHoMiMh1yoA2PNWoNSEcwJDG lhBbxVKpXsBpO9ok1O4B3iFAoI5kOU9xnMKqU3yMlhjBD_Irfq7nMJgehxieB4esZpeB8RJXXcmI 1cdXD9KthkfjdRLIlRgUviaMFYKKFNKhPDm4EyiFdNeH0KDd4_r6ILWUfViLva.a.gGel0UHsJbY 76Mx78jf02MyLGh9hma4z8x4iRimT.VKyPUjhhNjUaSX3cAcTuEZeZGrkOP8YQNBLcAHbM6K7dj1 qhf2yXiLq.YWw4z39.8TJ5CZSCCIlBwPrTUQJydQUTagwolTDZ5YONB3PMLWF9S7gtlL4OQGF_PT KlewsW62zrIkCbM88nFSCgUcwts5lmfFuI9572HCNOytM8CqkXuqbwS2a4lW5aP2Hutx5XU4MOkp XGTlWMD0UF.0hjul3uaL5ZnGoUnCeKb8k63FxHgOsbI6nQa0xxCDwicPU1clBe.LPwB8DVRxAaI3 9mBLiujyFeWNQwQ2tWlNIsZ6oNg.TB6azY4QDnNJBv8LbYuFFxisPMyej3ckGsJgl8mhiNDA_2Km nkipWI8wVOWoF7dw04vzgIkCefek7S9yD1Dpt3PzebrEV51h893K62uykQaBFNtL52.vSM20acgn AjrOOlfCMgtS58m4BEAAAcrfZ89d7lc3D.df.fN.Api3TixuMo2rI9UAX3i3by2giCWtTewhd5QP 8PLZkDIBrqkvDVREAUU2gkZ59H0LiPd5coTt0RCKdQ09zh1fBUFv.dXCMgV9THL2BGpI12Rle5oo jdqBJ55l7qEElG2BcEKV9lmC_oubkZU4vzcnP_nUsBxkAVHMMT9nlMca9ai7HNWxWH8.whNjhy2X .ZmTIfDTKQ_urV20bBnoAjEyjxH5w0fyx6.hb0.hTIXI3O9Vpt5dbhDV_IDVJbi7nXD8BMGxCcCl U7pxr8hqN2JyjccKHRDJPxZ3dDfA7KaF9AKk58OCItBKf5_imrxqzgJpyN0Ja4ZA4Z6OW_vQvwFv W40bNY0ewjmShxIQKHlsSI_Qa0M77Z2G4UQbwn0EywSNkSnYAQveEfNCWsB2MCABqxIqWEBIJLl8 OCdN5Xpyy0NknNje8yMW4UWMtLrR4PKe8x2M83RywO.dQSEh1bxptFltpiVyNnR6wfnmx9JZ.a7A f4sFfrbaU6XS1fpNrRZrNAzwhM1csaluYzvSkAyJrIA1.OUUqyxArsX301NGxqkEEi.T2ZwyG3W6 zOB3bcwYCx__m.Bp8T3ZspphedReHcPwkKmrVo98.n3yHj5_6R9UFE2tJTdF6XRrRvm5tysXr7Y9 .sSRvGouzr_1WadEhcMP.pxWNxIu8SFMx X-Sonic-MF: X-Sonic-ID: b8e20980-0352-4fe6-b0c5-eb54f533a324 Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.ir2.yahoo.com with HTTP; Sun, 11 Feb 2024 12:22:53 +0000 Received: by hermes--production-ir2-7bc88bfc75-8kqvj (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 972ff12599a70991b222efad46b22a10; Sun, 11 Feb 2024 12:22:52 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH] Fix crash when calling Frame.static_link Date: Sun, 11 Feb 2024 13:25:07 +0100 Message-Id: <20240211122507.1069-1-ssbssa@yahoo.de> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Antivirus: Avast (VPS 240211-0, 02/11/2024), Outbound message X-Antivirus-Status: Clean References: <20240211122507.1069-1-ssbssa.ref@yahoo.de> X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, 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 If you try to call Frame.static_link for a frame without debug info, gdb crashes: ``` Temporary breakpoint 1, 0x000000013f821650 in main () (gdb) py print(gdb.selected_frame().static_link()) This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. ``` The problem was a missing check if get_frame_block returns nullptr inside frame_follow_static_link. With this, it works: ``` Temporary breakpoint 1, 0x000000013f941650 in main () (gdb) py print(gdb.selected_frame().static_link()) None ``` Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31366 --- gdb/frame.c | 3 +++ gdb/testsuite/gdb.python/py-frame.exp | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/gdb/frame.c b/gdb/frame.c index fae89cbbc0a..72a34fcfedc 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -3121,6 +3121,9 @@ frame_info_ptr frame_follow_static_link (frame_info_ptr frame) { const block *frame_block = get_frame_block (frame, nullptr); + if (frame_block == nullptr) + return {}; + frame_block = frame_block->function_block (); const struct dynamic_prop *static_link = frame_block->static_link (); diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp index 016fbacdb49..110ddf24480 100644 --- a/gdb/testsuite/gdb.python/py-frame.exp +++ b/gdb/testsuite/gdb.python/py-frame.exp @@ -187,3 +187,17 @@ gdb_test "python print(gdb.selected_frame().language())" "c" \ gdb_test "python print(gdb.selected_frame().read_register(list()))" \ ".*Invalid type for register.*" \ "test Frame.read_register with list" + +# Compile again without debug info. +gdb_exit +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {}] } { + return -1 +} + +if {![runto_main]} { + return 0 +} + +# Test if Frame.static_link works for a frame without debug info. +gdb_test "python print(gdb.selected_frame().static_link())" "None" \ + "test Frame.static_link for a frame without debug info"