public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "vries at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug tdep/31486] [gdb/tdep, aarch64] Hang when hitting access watchpoint on M1
Date: Tue, 19 Mar 2024 09:04:52 +0000	[thread overview]
Message-ID: <bug-31486-4717-5lGUefElb7@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-31486-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=31486

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
There's a similar issue with lldb (version 17.0.6), with less serious failure
mode though.

When setting a write watchpoint on data.u.size8twice[1], execution stops for
reason "trace":
...
$ lldb outputs/gdb.base/watchpoint-unaligned/watchpoint-unaligned
(lldb) target create
"outputs/gdb.base/watchpoint-unaligned/watchpoint-unaligned"
Current executable set to
'/home/vries/gdb/outputs/gdb.base/watchpoint-unaligned/watchpoint-unaligned'
(aarch64).
(lldb) b main
Breakpoint 1: where = watchpoint-unaligned`main + 8 at
watchpoint-unaligned.c:65:3, address = 0x0000000000410208
(lldb) r
Process 1075081 launched:
'/home/vries/gdb/outputs/gdb.base/watchpoint-unaligned/watchpoint-unaligned'
(aarch64)
Process 1075081 stopped
* thread #1, name = 'watchpoint-unal', stop reason = breakpoint 1.1
    frame #0: 0x0000000000410208 watchpoint-unaligned`main at
watchpoint-unaligned.c:65:3
   62  
   63     assert (sizeof (data) == 8 + 3 * 8);
   64  
-> 65     write_size8twice ();
   66  
   67     while (size)
   68       {
(lldb) watch set var -w write data.u.size8twice[1]
Watchpoint created: Watchpoint 1: addr = 0x00440048 size = 8 state = enabled
type = w
    declare @
'/home/vries/gdb/src/gdb/testsuite/gdb.base/watchpoint-unaligned.c:35:3'
    watchpoint spec = 'data.u.size8twice[1]'
    new value: 0
(lldb) c
Process 1075081 resuming
Process 1075081 stopped
* thread #1, name = 'watchpoint-unal', stop reason = trace
    frame #0: 0x00000000004101f0 watchpoint-unaligned`write_size8twice at
watchpoint-unaligned.c:48:3
   45  
   46   #ifdef __aarch64__
   47     volatile void *p = &data.u.size8twice[offset];
-> 48     asm volatile ("stp %1, %2, [%0]"
   49                   : /* output */
   50                   : "r" (p), "r" (first), "r" (second) /* input */
   51                   : "memory" /* clobber */);
...

In contrast, when setting a write watchpoint on data.u.size8twice[0], execution
stops for reason "watchpoint":
...
(lldb) c
Process 1075169 resuming

Watchpoint 1 hit:
old value: 0
new value: 1
Process 1075169 stopped
* thread #1, name = 'watchpoint-unal', stop reason = watchpoint 1
    frame #0: 0x00000000004101f4 watchpoint-unaligned`write_size8twice at
watchpoint-unaligned.c:56:1
   53     data.u.size8twice[offset] = first;
   54     data.u.size8twice[offset + 1] = second;
   55   #endif
-> 56   }
   57  
   58   int
   59   main (void)
(lldb) 
...

This is using a write watchpoint, but it's the same for a regular watchpoint. 
Note that gdb handles a regualar watchpoint by reporting a watchpoint stop in
both (data.u.size8twice[0] and data.u.size8twice[1]) cases.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2024-03-19  9:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-14 12:39 [Bug tdep/31486] New: " vries at gcc dot gnu.org
2024-03-14 12:39 ` [Bug tdep/31486] " vries at gcc dot gnu.org
2024-03-19  9:04 ` vries at gcc dot gnu.org [this message]
2024-03-19 12:42 ` vries at gcc dot gnu.org
2024-03-20  9:50 ` luis.machado at arm dot com
2024-03-22 16:26 ` vries at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-31486-4717-5lGUefElb7@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).