This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

breakpoints/2457: Incorrect handling of erroneous breakpoint conditions


>Number:         2457
>Category:       breakpoints
>Synopsis:       Incorrect handling of erroneous breakpoint conditions
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 13 21:58:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Francois Chouinard
>Release:        GNU gdb 6.8-debian
>Organization:
>Environment:
Ubuntu 8.04 (Hardy Heron)
>Description:
When setting a condition on an existing breakpoint, GDB performs essentially the following steps (I skip the multi-location handling):

- Clear any existing condition
- Attach the new condition on the breakpoint
- Validate the condition (in context) using the parser

The problem occurs when the condition fails the validation: an exception is thrown and the subsequent longjmp() unrolls the stack beyond condition_command(). This prevents the caller from recovering from the error and leaves the breakpoint in an undesirable state (IMHO).

See the attached trace for an example.

>How-To-Repeat:
Follow the steps in the attached file.
>Fix:
Ideally, the exception should be caught and handled properly but this is a real pain in C.

There is a very simple solution (2 lines of code!) which I could provide if you want.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bp_cond.problem"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bp_cond.problem"

ZnJhbmNvaXNAc3VzaGk6fi9UZXN0cyQgL3Vzci9iaW4vZ2RiIEhlbGxvCkdOVSBnZGIgNi44LWRl
YmlhbgpDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkxp
Y2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciA8aHR0cDovL2dudS5vcmcv
bGljZW5zZXMvZ3BsLmh0bWw+ClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRv
IGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0LgpUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhl
IGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LiAgVHlwZSAic2hvdyBjb3B5aW5nIgphbmQgInNob3cg
d2FycmFudHkiIGZvciBkZXRhaWxzLgpUaGlzIEdEQiB3YXMgY29uZmlndXJlZCBhcyAiaTQ4Ni1s
aW51eC1nbnUiLi4uCihnZGIpIGxpc3QKNgkvLyBEZXNjcmlwdGlvbiA6IFNpbXBsZSB0ZXN0IGFw
cGxpY2F0aW9uCjcJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjgJCjkJI2luY2x1ZGUgPGlvc3RyZWFt
PgoxMAkKMTEJdXNpbmcgbmFtZXNwYWNlIHN0ZDsKMTIJCjEzCWludCBtYWluKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pCjE0CXsKMTUJCWludCBpID0gMDsKKGdkYikgCjE2CQoxNwkJcHJpbnRmKCJI
ZWxsbywgd29ybGQhXG4iKTsKMTgJCXJldHVybiAwOwoxOQl9CjIwCQooZ2RiKSBicmVhayAxNwpC
cmVha3BvaW50IDEgYXQgMHg4MDQ4NzU4OiBmaWxlIEhlbGxvLmNwcCwgbGluZSAxNy4KKGdkYikg
Y29uZCAxIGJhZF9jb25kaXRpb24KTm8gc3ltYm9sICJiYWRfY29uZGl0aW9uIiBpbiBjdXJyZW50
IGNvbnRleHQuCihnZGIpIGluZm8gYnJlYWsKTnVtICAgICBUeXBlICAgICAgICAgICBEaXNwIEVu
YiBBZGRyZXNzICAgIFdoYXQKMSAgICAgICBicmVha3BvaW50ICAgICBrZWVwIHkgICAweDA4MDQ4
NzU4IGluIG1haW4gYXQgSGVsbG8uY3BwOjE3CglzdG9wIG9ubHkgaWYgYmFkX2NvbmRpdGlvbgoo
Z2RiKSBydW4KU3RhcnRpbmcgcHJvZ3JhbTogL2hvbWUvZnJhbmNvaXMvVGVzdHMvSGVsbG8gCndh
cm5pbmc6IGZhaWxlZCB0byByZWV2YWx1YXRlIGNvbmRpdGlvbiBmb3IgYnJlYWtwb2ludCAxOiBO
byBzeW1ib2wgImJhZF9jb25kaXRpb24iIGluIGN1cnJlbnQgY29udGV4dC4Kd2FybmluZzogZmFp
bGVkIHRvIHJlZXZhbHVhdGUgY29uZGl0aW9uIGZvciBicmVha3BvaW50IDE6IE5vIHN5bWJvbCAi
YmFkX2NvbmRpdGlvbiIgaW4gY3VycmVudCBjb250ZXh0Lgp3YXJuaW5nOiBmYWlsZWQgdG8gcmVl
dmFsdWF0ZSBjb25kaXRpb24gZm9yIGJyZWFrcG9pbnQgMTogTm8gc3ltYm9sICJiYWRfY29uZGl0
aW9uIiBpbiBjdXJyZW50IGNvbnRleHQuCndhcm5pbmc6IGZhaWxlZCB0byByZWV2YWx1YXRlIGNv
bmRpdGlvbiBmb3IgYnJlYWtwb2ludCAxOiBObyBzeW1ib2wgImJhZF9jb25kaXRpb24iIGluIGN1
cnJlbnQgY29udGV4dC4Kd2FybmluZzogZmFpbGVkIHRvIHJlZXZhbHVhdGUgY29uZGl0aW9uIGZv
ciBicmVha3BvaW50IDE6IE5vIHN5bWJvbCAiYmFkX2NvbmRpdGlvbiIgaW4gY3VycmVudCBjb250
ZXh0LgpIZWxsbywgd29ybGQhCgpQcm9ncmFtIGV4aXRlZCBub3JtYWxseS4KKGdkYikgCgo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]