From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30560 invoked by alias); 7 Sep 2011 02:56:29 -0000 Received: (qmail 30549 invoked by uid 22791); 7 Sep 2011 02:56:27 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_RV,TW_TR,TW_VF,TW_XZ X-Spam-Check-By: sourceware.org Received: from mail-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 07 Sep 2011 02:56:13 +0000 Received: by fxg9 with SMTP id 9so199261fxg.0 for ; Tue, 06 Sep 2011 19:56:12 -0700 (PDT) Received: by 10.223.85.154 with SMTP id o26mr2730248fal.72.1315364172210; Tue, 06 Sep 2011 19:56:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.112.68 with HTTP; Tue, 6 Sep 2011 19:55:32 -0700 (PDT) In-Reply-To: <20110906085007.GA19880@host1.jankratochvil.net> References: <20110906085007.GA19880@host1.jankratochvil.net> From: Hui Zhu Date: Wed, 07 Sep 2011 09:27:00 -0000 Message-ID: Subject: Re: [PATCH] printcmd.c (ui_printf): make internalvar string can be printf and eval when inferior cannot alloc memory To: Jan Kratochvil Cc: Tom Tromey , gdb-patches ml Content-Type: multipart/mixed; boundary=0015174026563c21fa04ac511626 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-09/txt/msg00104.txt.bz2 --0015174026563c21fa04ac511626 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2326 On Tue, Sep 6, 2011 at 16:50, Jan Kratochvil wr= ote: > On Tue, 06 Sep 2011 10:21:53 +0200, Hui Zhu wrote: >> + =A0 =A0 =A0 =A0 =A0 =A0if (TYPE_CODE (check_typedef (value_type (val_a= rgs[i]))) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =3D=3D TYPE_CODE_ARRAY) >> + =A0 =A0 =A0 =A0 =A0 fprintf_filtered (stream, current_substring, >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (char *) value= _contents (val_args[i])); > > (gdb) set $a=3D{'a','b'} > (gdb) printf "%s\n",$a > =3D=3D23392=3D=3D Invalid read of size 1 > =3D=3D23392=3D=3D =A0 =A0at: vfprintf (vfprintf.c:1568) > =3D=3D23392=3D=3D =A0 =A0by: vasprintf (vasprintf.c:64) > =3D=3D23392=3D=3D =A0 =A0by: xstrvprintf (common-utils.c:131) > =3D=3D23392=3D=3D =A0 =A0by: vfprintf_maybe_filtered (utils.c:2379) > =3D=3D23392=3D=3D =A0 =A0by: vfprintf_filtered (utils.c:2389) > =3D=3D23392=3D=3D =A0 =A0by: fprintf_filtered (utils.c:2441) > =3D=3D23392=3D=3D =A0 =A0by: ui_printf (printcmd.c:2348) > [...] > =3D=3D23392=3D=3D =A0Address 0xd24bb82 is 0 bytes after a block of size 2= alloc'd > =3D=3D23392=3D=3D =A0 =A0at: calloc (vg_replace_malloc.c:467) > =3D=3D23392=3D=3D =A0 =A0by: xcalloc (common-utils.c:92) > =3D=3D23392=3D=3D =A0 =A0by: xzalloc (common-utils.c:102) > =3D=3D23392=3D=3D =A0 =A0by: allocate_value_contents (value.c:690) > =3D=3D23392=3D=3D =A0 =A0by: allocate_value (value.c:700) > =3D=3D23392=3D=3D =A0 =A0by: value_copy (value.c:1299) > =3D=3D23392=3D=3D =A0 =A0by: value_of_internalvar (value.c:1725) > =3D=3D23392=3D=3D =A0 =A0by: evaluate_subexp_standard (eval.c:903) > =3D=3D23392=3D=3D =A0 =A0by: evaluate_subexp_c (c-lang.c:720) > =3D=3D23392=3D=3D =A0 =A0by: evaluate_subexp (eval.c:76) > =3D=3D23392=3D=3D =A0 =A0by: evaluate_expression (eval.c:151) > =3D=3D23392=3D=3D =A0 =A0by: parse_to_comma_and_eval (eval.c:136) > =3D=3D23392=3D=3D =A0 =A0by: ui_printf (printcmd.c:2328) > [...] > > The original code was not completely correct in such cases but GDB could = not > crash, now it can, I find it as a regression. > > I would welcome a testcase. > > > Thanks, > Jan > Thanks for remind me about it. I make a patch add a test for it. Please help me review it. Best, Hui 2011-09-07 Hui Zhu * gdb.base/printcmds.exp: Add test for printing internal var values with printf. --0015174026563c21fa04ac511626 Content-Type: text/plain; charset=US-ASCII; name="test-v-string.txt" Content-Disposition: attachment; filename="test-v-string.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gs9pqc9r0 Content-length: 1135 LS0tCiB0ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnRjbWRzLmV4cCB8ICAgIDgg KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKCi0t LSBhL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmludGNtZHMuZXhwCisrKyBiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9wcmludGNtZHMuZXhwCkBAIC03NzUsNiArNzc1 LDEyIEBAIHByb2MgdGVzdF9wcmludGZfd2l0aF9kZnAge30gewogICAgIGdk Yl90ZXN0ICJwcmludGYgXCIlRERmXFxuXCIsMS4yRTYxNDRkbCIgIjEuMjAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRVxcKzYxNDQiCiB9CiAK KyNUZXN0IHByaW50aW5nIGludGVybmFsIHZhciB2YWx1ZXMgd2l0aCBwcmlu dGYKK3Byb2MgdGVzdF9wcmludGZfd2l0aF9pbnRlcm5hbHZhciB7fSB7Cisg ICAgZ2RiX3Rlc3QgInNldCBcJGE9e1wnYVwnLFwnYlwnfSIgIiIKKyAgICBn ZGJfdGVzdCAicHJpbnRmIFwiJXNcXG5cIiwgXCRhIiAiYWIiCit9CisKICMg RXNjYXBlIGEgbGVmdCBjdXJseSBicmFjZSB0byBwcmV2ZW50IGl0IGZyb20g YmVpbmcgaW50ZXJwcmV0ZWQgYXMgCiAjIHRoZSBiZWdpbm5pbmcgb2YgYSBi b3VuZAogcHJvYyBnZGJfdGVzdF9lc2NhcGVfYnJhY2VzIHsgYXJncyB9IHsK QEAgLTgxNiw2ICs4MjIsOCBAQCBpZiB7IFt0ZXN0X2NvbXBpbGVyX2luZm8g ImFybWNjLSoiXSB9IHsKIH0KIGdkYl90ZXN0ICJwIGN0YWJsZTFcWzEyMFxd IiAiMTIwICd4JyIgInAgY3RhYmxlMVxbMTIwXF0gIzEiCiAKK3Rlc3RfcHJp bnRmX3dpdGhfaW50ZXJuYWx2YXIKKwogZ2RiX2xvYWQgJHtiaW5maWxlfQog CiBpZiAhW3J1bnRvX21haW5dIHRoZW4gewo= --0015174026563c21fa04ac511626--