From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20516 invoked by alias); 12 Oct 2011 14:02:57 -0000 Received: (qmail 20502 invoked by uid 22791); 12 Oct 2011 14:02:56 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 12 Oct 2011 14:02:42 +0000 Received: by vcbfo14 with SMTP id fo14so721991vcb.0 for ; Wed, 12 Oct 2011 07:02:41 -0700 (PDT) Received: by 10.52.100.68 with SMTP id ew4mr23914455vdb.102.1318428161308; Wed, 12 Oct 2011 07:02:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.180.75 with HTTP; Wed, 12 Oct 2011 07:02:20 -0700 (PDT) From: Kevin Pouget Date: Wed, 12 Oct 2011 14:02:00 -0000 Message-ID: Subject: [RFC][Python] gdbpy_frame_stop_reason_string bug To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf3071cc343777c204af1a7a82 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00350.txt.bz2 --20cf3071cc343777c204af1a7a82 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 960 Hi, I wanted to discuss the best way to solve this bug before going any further in the development: > (gdb) py print gdb.frame_stop_reason_string(2) > /home/kevin/travail/git/gdb/gdb/frame.c:2372: internal-error: Invalid frame stop reason > A problem internal to GDB has been detected,further debugging may prove unreliable. I prepared the attached patch, which requires to change 'internal_error' to a simple 'error' (I assume that it can't break anything because it ends up calling `exit()', but I didn't check yet), but "Frame.unwind_stop_reason ()" easily returns 'invalid frame stop reason', for instance > (gdb) start > ... > (gdb) pp gdb.newest_frame().unwind_stop_reason() > 0 so I'm not convinced that it's the best solution. Would it be better to return (in frame_stop_reason_string) a reason for each value of "enum unwind_stop_reason reason", but breaking the original intend of the `internal_error' call? thanks for your comments, Kevin --20cf3071cc343777c204af1a7a82 Content-Type: text/x-patch; charset=US-ASCII; name="gdbpy_frame_stop_reason_string.patch" Content-Disposition: attachment; filename="gdbpy_frame_stop_reason_string.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtodzeg20 Content-length: 1896 ZGlmZiAtLWdpdCBhL2dkYi9mcmFtZS5jIGIvZ2RiL2ZyYW1lLmMKaW5kZXgg NTgyNDAyMC4uMWMxYTE4YiAxMDA2NDQKLS0tIGEvZ2RiL2ZyYW1lLmMKKysr IGIvZ2RiL2ZyYW1lLmMKQEAgLTIzNjksOCArMjM2OSw3IEBAIGZyYW1lX3N0 b3BfcmVhc29uX3N0cmluZyAoZW51bSB1bndpbmRfc3RvcF9yZWFzb24gcmVh c29uKQogICAgIGNhc2UgVU5XSU5EX05PX1JFQVNPTjoKICAgICBjYXNlIFVO V0lORF9GSVJTVF9FUlJPUjoKICAgICBkZWZhdWx0OgotICAgICAgaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLQkJICAgICAgIkludmFs aWQgZnJhbWUgc3RvcCByZWFzb24iKTsKKyAgICAgIGVycm9yIChfKCJJbnZh bGlkIGZyYW1lIHN0b3AgcmVhc29uIikpOwogICAgIH0KIH0KIApkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jIGIvZ2RiL3B5dGhvbi9weS1m cmFtZS5jCmluZGV4IDc1YWE0NGUuLjJiOTUxMTIgMTAwNjQ0Ci0tLSBhL2dk Yi9weXRob24vcHktZnJhbWUuYworKysgYi9nZGIvcHl0aG9uL3B5LWZyYW1l LmMKQEAgLTUzOCwxOSArNTM4LDIwIEBAIGdkYnB5X2ZyYW1lX3N0b3BfcmVh c29uX3N0cmluZyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQog ewogICBpbnQgcmVhc29uOwogICBjb25zdCBjaGFyICpzdHI7CisgIFB5T2Jq ZWN0ICpweV9zdHJfcmVhc29uID0gTlVMTDsKKyAgdm9sYXRpbGUgc3RydWN0 IGdkYl9leGNlcHRpb24gZXhjZXB0OwogCiAgIGlmICghUHlBcmdfUGFyc2VU dXBsZSAoYXJncywgImkiLCAmcmVhc29uKSkKICAgICByZXR1cm4gTlVMTDsK IAotICBpZiAocmVhc29uIDwgMCB8fCByZWFzb24gPiBVTldJTkRfTk9fU0FW RURfUEMpCisgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwp CiAgICAgewotICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19WYWx1ZUVy cm9yLCAKLQkJICAgICAgIF8oIkludmFsaWQgZnJhbWUgc3RvcCByZWFzb24u IikpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICBzdHIgPSBmcmFtZV9z dG9wX3JlYXNvbl9zdHJpbmcgKHJlYXNvbik7CisgICAgICBweV9zdHJfcmVh c29uID0gUHlVbmljb2RlX0RlY29kZSAoc3RyLCBzdHJsZW4gKHN0ciksIGhv c3RfY2hhcnNldCAoKSwgTlVMTCk7CiAgICAgfQorICBHREJfUFlfSEFORExF X0VYQ0VQVElPTiAoZXhjZXB0KTsKIAotICBzdHIgPSBmcmFtZV9zdG9wX3Jl YXNvbl9zdHJpbmcgKHJlYXNvbik7Ci0gIHJldHVybiBQeVVuaWNvZGVfRGVj b2RlIChzdHIsIHN0cmxlbiAoc3RyKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxM KTsKKyAgcmV0dXJuIHB5X3N0cl9yZWFzb247CiB9CiAKIC8qIEltcGxlbWVu dHMgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIEZyYW1lIG9iamVjdHMu Cg== --20cf3071cc343777c204af1a7a82--