From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17213 invoked by alias); 31 May 2011 17:54:46 -0000 Received: (qmail 17204 invoked by uid 22791); 31 May 2011 17:54:45 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST 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; Tue, 31 May 2011 17:54:31 +0000 Received: by vxk20 with SMTP id 20so4598051vxk.0 for ; Tue, 31 May 2011 10:54:30 -0700 (PDT) Received: by 10.52.73.33 with SMTP id i1mr751225vdv.133.1306864470101; Tue, 31 May 2011 10:54:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.199.1 with HTTP; Tue, 31 May 2011 10:54:10 -0700 (PDT) In-Reply-To: <201105311844.25465.pedro@codesourcery.com> References: <201105311844.25465.pedro@codesourcery.com> From: Kevin Pouget Date: Tue, 31 May 2011 17:54:00 -0000 Message-ID: Subject: Re: Python and target-async To: Pedro Alves Cc: gdb@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2011-05/txt/msg00141.txt.bz2 > you have "set target-async on" twice. Was that a pasto? sorry, yes the first one was wrong here is the correct behaviour: > (gdb) set target-async off > (gdb) py gdb.execute("attach PID") ; gdb.execute("where") > 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 > #0 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 > #1 0x000000000043ede2 in ?? () > #2 0x000000000044005f in wait_for () > #3 0x0000000000430c45 in execute_command_internal () > #4 0x0000000000430e0e in execute_command () > #5 0x000000000041d526 in reader_loop () > #6 0x000000000041ccde in main () and this one is wrong because the backtrace is not correctly computed: > (gdb) set target-async on > (gdb) py gdb.execute("attach PID") ; gdb.execute("where") > #0 0x0000003cbd0aa47e in ?? () > #1 0x0000000000000000 in ?? () > 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 I expected to read: > (gdb) set target-async on > (gdb) py gdb.execute("attach PID") ; gdb.execute("where") > 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 > #0 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 > #1 0x000000000043ede2 in ?? () > #2 0x000000000044005f in wait_for () > #3 0x0000000000430c45 in execute_command_internal () > #4 0x0000000000430e0e in execute_command () > #5 0x000000000041d526 in reader_loop () > #6 0x000000000041ccde in main () is it clearer this way ? thanks, Kevin > On Tuesday 31 May 2011 14:51:45, Kevin Pouget wrote: >> Hello, >> >> I'm facing a problem with Python not behaving correctly when >> "target-async" is on. I'll report it in the bugtracker if someone else >> confirms the problem: >> >> (replace PID by any process ID to which you can attach) >> >> > (gdb) set target-async on >> > (gdb) py gdb.execute("attach PID") ; gdb.execute("where") >> > 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 >> > #0 =A00x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 >> > #1 =A00x000000000043ede2 in ?? () >> > #2 =A00x000000000044005f in wait_for () >> > #3 =A00x0000000000430c45 in execute_command_internal () >> > #4 =A00x0000000000430e0e in execute_command () >> > #5 =A00x000000000041d526 in reader_loop () >> > #6 =A00x000000000041ccde in main () >> > (gdb) detach >> > Detaching from program ... >> > (gdb) set target-async on >> > (gdb) py gdb.execute("attach PID") ; gdb.execute("where") >> > #0 =A00x0000003cbd0aa47e in ?? () >> > #1 =A00x0000000000000000 in ?? () >> > 0x0000003cbd0aa47e in waitpid () from /lib64/libc.so.6 >> >> --> the inferior can't be access normally >> >> the problem lies in the fact that GDB doesn't return from Python >> between the `attach' and the `where', (the situation occurs during a >> Python function calls as well). >> >> > (gdb) set target-async on >> > (gdb) py gdb.execute("attach PID") >> > (gdb) py gdb.execute("where") >> >> works correctly. >> >> >> I'm not sure there is something I can do to solve it, any idea what I >> should look for? >> >> >> thanks, >> >> Kevin >> > > -- > Pedro Alves >