Re: Regression for watchpoint-fork.exp [Re: [PATCH v3 2/5] PR breakpoints/7143 - Watchpoint does not trigger when first set]

Jan Kratochvil
2014-06-19T13:43:41Z

[-- Attachment #1: Type: text/plain, Size: 2831 bytes --]

On Tue, 17 Jun 2014 21:18:50 +0200, Jan Kratochvil wrote:
> On Thu, 20 Mar 2014 14:57:36 +0100, Pedro Alves wrote:
> > Here's what I pushed (nothing else changed).
>
> 31e77af205cf6564c2bf4c18400b4ca16bdf92cd is the first bad commit
> commit 31e77af205cf6564c2bf4c18400b4ca16bdf92cd
> Author: Pedro Alves <palves@redhat.com>
> Date: Thu Mar 20 13:26:32 2014 +0000
> PR breakpoints/7143 - Watchpoint does not trigger when first set
>
> PASS kernel-3.14.6-200.fc20.x86_64
> FAIL kernel-3.13.10-200.dentrybuflen.fc20.x86_64

That was a red herring, in fact it was due to different GCC.

(gdb) disas marker
Dump of assembler code for function marker:
0x0000000000400826 <+0>: push %rbp
0x0000000000400827 <+1>: mov %rsp,%rbp
=> 0x000000000040082a <+4>: pop %rbp
0x000000000040082b <+5>: retq
End of assembler dump.

ptrace(PTRACE_POKEUSER, 24574, offsetof(struct user, u_debugreg), 0x40082a) = -1 EINVAL (Invalid argument)

New GDB in the 'hbreak' case does not align the breakpoint address.
Attaching gzipped gdb.threads/watchpoint-fork-parent-st
from gcc-4.9.0-9.fc21.x86_64.

Jan

../gdb gdb.threads/watchpoint-fork-parent-st -ex 'set pagination off' -ex start -ex 'hbreak marker' -ex 'watch var' -ex c -ex c -ex c
GNU gdb (GDB) 7.8.50.20140619-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from gdb.threads/watchpoint-fork-parent-st...done.
Temporary breakpoint 1 at 0x400836: file ./gdb.threads/watchpoint-fork-st.c, line 43.
Starting program: /home/jkratoch/redhat/gdb-test-f20-noasan/gdb/testsuite/gdb.threads/watchpoint-fork-parent-st

Temporary breakpoint 1, main () at ./gdb.threads/watchpoint-fork-st.c:43
43 setbuf (stdout, NULL);
Hardware assisted breakpoint 2 at 0x40082a: file ./gdb.threads/watchpoint-fork-st.c, line 33.
Hardware watchpoint 3: var
Continuing.
main: 26352

Breakpoint 2, marker () at ./gdb.threads/watchpoint-fork-st.c:33
33 }
Continuing.
Hardware watchpoint 3: var

Old value = 0
New value = 1
main () at ./gdb.threads/watchpoint-fork-st.c:50
50 forkoff (1);
Continuing.
main () at ./gdb.threads/watchpoint-fork-st.c:50
50 forkoff (1);
Couldn't write debug register: Invalid argument.
(gdb) _

[-- Attachment #2: watchpoint-fork-parent-st.gz --]
[-- Type: application/gzip, Size: 4723 bytes --]