* [patch] Fix segfault on a failed watchpoint update
@ 2008-03-02 8:41 Jan Kratochvil
2008-03-02 15:09 ` Daniel Jacobowitz
0 siblings, 1 reply; 3+ messages in thread
From: Jan Kratochvil @ 2008-03-02 8:41 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 3222 bytes --]
Hi,
currently GDB HEAD segfaults during one case for the PIE inferiors (failing as
it is the unpatched CVS HEAD), segfault fix attached.
Regards,
Jan
crash reproducibility:
$ runtest --target_board=unix/-fPIE/-pie gdb.base/watchpoint.exp
WARNING: Couldn't find the global config file.
Test Run By jkratoch on Sun Mar 2 09:31:14 2008
Native configuration is x86_64-unknown-linux-gnu
=== gdb tests ===
Schedule of variations:
unix/-fPIE/-pie
Running target unix/-fPIE/-pie
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../.././gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running ../.././gdb/testsuite/gdb.base/watchpoint.exp ...
FAIL: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint
ERROR: Process no longer exists
ERROR: Couldn't send disable 3 to GDB.
ERROR: Delete all breakpoints in delete_breakpoints (timeout)
ERROR: Delete all breakpoints in delete_breakpoints (timeout)
FAIL: gdb.base/watchpoint.exp: watch tests suppressed
FAIL: gdb.base/watchpoint.exp: (timeout) disable fast watches
FAIL: gdb.base/watchpoint.exp: (timeout) show disable fast watches
FAIL: gdb.base/watchpoint.exp: (timeout) set slow conditional watch
FAIL: gdb.base/watchpoint.exp: (timeout) trigger slow conditional watch
FAIL: gdb.base/watchpoint.exp: (timeout) rwatch disallowed when can-use-hw-watchpoints cleared
ERROR: Delete all breakpoints in delete_breakpoints (timeout)
=== gdb Summary ===
# of expected passes 7
# of unexpected failures 7
# of unresolved testcases 5
.../sources/gdb/testsuite/../../gdb/gdb version 6.8.50.20080302-cvs -nx
...
(gdb) PASS: gdb.base/watchpoint.exp: disable watchpoint in test_simple_watchpoint
run
Starting program: /home/jkratoch/redhat/sources/gdb/testsuite/gdb.base/watchpoint
Error in re-setting breakpoint 1: Cannot access memory at address 0x86c
Error in re-setting breakpoint 2: Cannot access memory at address 0x872
Error in re-setting breakpoint 3: Cannot access memory at address 0x20127c
Error in re-setting breakpoint 1: Cannot access memory at address 0x86c
Error in re-setting breakpoint 2: Cannot access memory at address 0x872
Error in re-setting breakpoint 3: Cannot access memory at address 0x20127c
Error in re-setting breakpoint 1: Cannot access memory at address 0x86c
Error in re-setting breakpoint 2: Cannot access memory at address 0x872
Error in re-setting breakpoint 3: Cannot access memory at address 0x20127c
Program exited normally.
(gdb) FAIL: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint
info watch
*** glibc detected *** /home/jkratoch/redhat/sources/gdb/testsuite/../../gdb/gdb: double free or corruption (!prev): 0x00000000023f9d20 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3b98672832]
/lib64/libc.so.6(cfree+0x8c)[0x3b98675f2c]
/home/jkratoch/redhat/sources/gdb/testsuite/../../gdb/gdb(xfree+0x1c)[0x44efb6]
/home/jkratoch/redhat/sources/gdb/testsuite/../../gdb/gdb(free_all_values+0x2a)[0x4cd65a]
/home/jkratoch/redhat/sources/gdb/testsuite/../../gdb/gdb(execute_command+0x26)[0x44b9df]
...
[-- Attachment #2: gdb-value-update_watchpoint-exception.patch --]
[-- Type: text/plain, Size: 1045 bytes --]
2008-03-02 Jan Kratochvil <jan.kratochvil@redhat.com>
* breakpoint.c (update_watchpoint): Move B->VAL setting behind the
VALUE_CONTENTS call.
--- ./gdb/breakpoint.c 27 Feb 2008 20:27:49 -0000 1.304
+++ ./gdb/breakpoint.c 2 Mar 2008 08:27:20 -0000
@@ -913,13 +917,15 @@ update_watchpoint (struct breakpoint *b,
during evaluation, and set watchoints at addresses as needed.
Those values are explicitly deleted here. */
v = evaluate_expression (b->exp);
+ /* Fetch the value first as if ti fails and breaks out by the exception
+ there will be no stale V left in B->VAL. */
+ value_contents (v);
/* Avoid setting b->val if it's already set. The meaning of
b->val is 'the last value' user saw, and we should update
it only if we reported that last value to user. As it
happens, the code that reports it updates b->val directly. */
if (b->val == NULL)
b->val = v;
- value_contents (v);
value_release_to_mark (mark);
/* Look at each value on the value chain. */
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [patch] Fix segfault on a failed watchpoint update
2008-03-02 8:41 [patch] Fix segfault on a failed watchpoint update Jan Kratochvil
@ 2008-03-02 15:09 ` Daniel Jacobowitz
2008-03-02 15:17 ` Jan Kratochvil
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Jacobowitz @ 2008-03-02 15:09 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: gdb-patches
On Sun, Mar 02, 2008 at 09:40:50AM +0100, Jan Kratochvil wrote:
> Hi,
>
> currently GDB HEAD segfaults during one case for the PIE inferiors (failing as
> it is the unpatched CVS HEAD), segfault fix attached.
Thanks, I can see what's wrong. I'm about to commit another patch
which should fix this (just waiting for doc review, so probably
Monday). Could you let me know if this fixes it?
http://sourceware.org/ml/gdb-patches/2008-02/msg00472.html
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [patch] Fix segfault on a failed watchpoint update
2008-03-02 15:09 ` Daniel Jacobowitz
@ 2008-03-02 15:17 ` Jan Kratochvil
0 siblings, 0 replies; 3+ messages in thread
From: Jan Kratochvil @ 2008-03-02 15:17 UTC (permalink / raw)
To: gdb-patches; +Cc: Daniel Jacobowitz
On Sun, 02 Mar 2008 16:08:49 +0100, Daniel Jacobowitz wrote:
> On Sun, Mar 02, 2008 at 09:40:50AM +0100, Jan Kratochvil wrote:
> > Hi,
> >
> > currently GDB HEAD segfaults during one case for the PIE inferiors (failing as
> > it is the unpatched CVS HEAD), segfault fix attached.
>
> Thanks, I can see what's wrong. I'm about to commit another patch
> which should fix this (just waiting for doc review, so probably
> Monday). Could you let me know if this fixes it?
>
> http://sourceware.org/ml/gdb-patches/2008-02/msg00472.html
Yes, this patch also fixes the segfault.
Thanks,
Jan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-03-02 15:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-02 8:41 [patch] Fix segfault on a failed watchpoint update Jan Kratochvil
2008-03-02 15:09 ` Daniel Jacobowitz
2008-03-02 15:17 ` Jan Kratochvil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox