public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
@ 2023-02-03 12:24 vries at gcc dot gnu.org
  2023-02-04 20:13 ` [Bug record/30075] " vries at gcc dot gnu.org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-03 12:24 UTC (permalink / raw)
  To: gdb-prs

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

            Bug ID: 30075
           Summary: [intel Performance-core] FAIL:
                    gdb.python/py-record-btrace.exp: prepare record:
                    python insn = r.instruction_history
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: record
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

The processor is a i7-1250U with 12 threads:
- 2 performance cores (I guess providing 2 threads per core), and
- 8 efficient cores.

When using:
- taskset -c 0-3, the test-case fails  
- taskset -c 4-11, the test-case passes

Fails like this:
...
(gdb) PASS: gdb.python/py-record-btrace.exp: prepare record: stepi 100
python insn = r.instruction_history^M
warning: Decode error (-20) at instruction 33 (offset = 0x3d69, pc = 0x400501):
compressed return without call.^M
(gdb) FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn =
r.instruction_history
...

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
@ 2023-02-04 20:13 ` vries at gcc dot gnu.org
  2023-02-06 14:05 ` vries at gcc dot gnu.org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-04 20:13 UTC (permalink / raw)
  To: gdb-prs

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

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |markus.t.metzger at intel dot com

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
  2023-02-04 20:13 ` [Bug record/30075] " vries at gcc dot gnu.org
@ 2023-02-06 14:05 ` vries at gcc dot gnu.org
  2023-02-06 15:02 ` vries at gcc dot gnu.org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-06 14:05 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
Without libipt, I run into different fails, on the other set of cores: the
efficiency-cores.

With taskset -c 0, I have:
...
$ taskset -c 0 gdb -q -batch
./outputs/gdb.python/py-record-btrace/py-record-btrace -ex "set trace-commands
on" -ex "display /i \$pc" -ex "start" -ex "record btrace bts" -ex "si 4"  -ex
"record instruction-history"
+display /i $pc
+start
Temporary breakpoint 1 at 0x4004d1: file
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c, line 40.

Temporary breakpoint 1, main () at
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c:40
40        for (i = 0, j = 0; i < 100; ++i)
1: x/i $pc
=> 0x4004d1 <main+8>:   movl   $0x0,-0x4(%rbp)
+record btrace bts
+target record-btrace
+si 4
0x00000000004004f6      40        for (i = 0, j = 0; i < 100; ++i)
1: x/i $pc
=> 0x4004f6 <main+45>:  jle    0x4004e1 <main+24>
+record instruction-history
1          0x00000000004004d1 <main+8>: movl   $0x0,-0x4(%rbp)
2          0x00000000004004d8 <main+15>:        movl   $0x0,-0x8(%rbp)
3          0x00000000004004df <main+22>:        jmp    0x4004f2 <main+41>
4          0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
...

That looks reasonable.

With taskset -c 4, however:
...
$ taskset -c 4 ./gdb.sh -q -batch
./outputs/gdb.python/py-record-btrace/py-record-btrace -ex "set trace-commands
on" -ex "display /i \$pc" -ex "start" -ex "record btrace bts" -ex "si 4"  -ex
"record instruction-history" 
+display /i $pc
+start
Temporary breakpoint 1 at 0x4004d1: file
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c, line 40.

Temporary breakpoint 1, main () at
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c:40
40        for (i = 0, j = 0; i < 100; ++i)
1: x/i $pc
=> 0x4004d1 <main+8>:   movl   $0x0,-0x4(%rbp)
+record btrace bts
+target record-btrace
+si 4
0x00000000004004f6      40        for (i = 0, j = 0; i < 100; ++i)
1: x/i $pc
=> 0x4004f6 <main+45>:  jle    0x4004e1 <main+24>
+record instruction-history
1          0x00000000004004d1 <main+8>: movl   $0x0,-0x4(%rbp)
2          0x00000000004004d8 <main+15>:        movl   $0x0,-0x8(%rbp)
3          0x00000000004004df <main+22>:        jmp    0x4004f2 <main+41>
4          0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
5          0x00000000004004e4 <main+27>:        mov    %eax,%edi
6          0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
7          0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
8          0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
9          0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
...

That makes no sense as instruction history, this is just disassembly.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
  2023-02-04 20:13 ` [Bug record/30075] " vries at gcc dot gnu.org
  2023-02-06 14:05 ` vries at gcc dot gnu.org
@ 2023-02-06 15:02 ` vries at gcc dot gnu.org
  2023-02-07 11:35 ` vries at gcc dot gnu.org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-06 15:02 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
> The processor is a i7-1250U with 12 threads:
> - 2 performance cores (I guess providing 2 threads per core), and
> - 8 efficient cores.
> 
> When using:
> - taskset -c 0-3, the test-case fails  
> - taskset -c 4-11, the test-case passes
> 
> Fails like this:
> ...
> (gdb) PASS: gdb.python/py-record-btrace.exp: prepare record: stepi 100
> python insn = r.instruction_history^M
> warning: Decode error (-20) at instruction 33 (offset = 0x3d69, pc =
> 0x400501): compressed return without call.^M
> (gdb) FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn =
> r.instruction_history
> ...

Originally with libipt v2.0.5, now also reproduced with current master @
bb87a06.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2023-02-06 15:02 ` vries at gcc dot gnu.org
@ 2023-02-07 11:35 ` vries at gcc dot gnu.org
  2023-02-07 12:03 ` vries at gcc dot gnu.org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-07 11:35 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
> warning: Decode error (-20) at instruction 33 (offset = 0x3d69, pc =
> 0x400501): compressed return without call.^M

Well, the message sort of make sense.

First for contrast, with an efficiency-core we have:
...
$ taskset -c 4 gdb -q -batch
outputs/gdb.python/py-record-btrace/py-record-btrace -ex start -ex "record
btrace pt" -ex "stepi 100" -ex "record instruction-history 1,+100"
Temporary breakpoint 1 at 0x4004d1: file
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c, line 40.

Temporary breakpoint 1, main () at
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c:40
40        for (i = 0, j = 0; i < 100; ++i)
40        for (i = 0, j = 0; i < 100; ++i)
1          0x00000000004004d1 <main+8>: movl   $0x0,-0x4(%rbp)
2          0x00000000004004d8 <main+15>:        movl   $0x0,-0x8(%rbp)
3          0x00000000004004df <main+22>:        jmp    0x4004f2 <main+41>
4          0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
5          0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
6          0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
7          0x00000000004004e4 <main+27>:        mov    %eax,%edi
8          0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
9          0x00000000004004a7 <function+0>:     push   %rbp
10         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
11         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
12         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
13         0x00000000004004b1 <function+10>:    add    $0x1,%eax
14         0x00000000004004b4 <function+13>:    pop    %rbp
15         0x00000000004004b5 <function+14>:    ret
16         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
17      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
18         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
19         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
20         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
21         0x00000000004004e4 <main+27>:        mov    %eax,%edi
22         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
23         0x00000000004004a7 <function+0>:     push   %rbp
24         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
25         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
26         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
27         0x00000000004004b1 <function+10>:    add    $0x1,%eax
28         0x00000000004004b4 <function+13>:    pop    %rbp
29         0x00000000004004b5 <function+14>:    ret
30         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
31      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
32         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
33         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
34         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
35         0x00000000004004e4 <main+27>:        mov    %eax,%edi
36         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
37         0x00000000004004a7 <function+0>:     push   %rbp
38         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
39         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
40         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
41         0x00000000004004b1 <function+10>:    add    $0x1,%eax
42         0x00000000004004b4 <function+13>:    pop    %rbp
43         0x00000000004004b5 <function+14>:    ret
44         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
45      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
46         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
47         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
48         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
49         0x00000000004004e4 <main+27>:        mov    %eax,%edi
50         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
51         0x00000000004004a7 <function+0>:     push   %rbp
52         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
53         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
54         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
55         0x00000000004004b1 <function+10>:    add    $0x1,%eax
56         0x00000000004004b4 <function+13>:    pop    %rbp
57         0x00000000004004b5 <function+14>:    ret
58         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
59      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
60         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
61         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
62         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
63         0x00000000004004e4 <main+27>:        mov    %eax,%edi
64         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
65         0x00000000004004a7 <function+0>:     push   %rbp
66         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
67         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
68         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
69         0x00000000004004b1 <function+10>:    add    $0x1,%eax
70         0x00000000004004b4 <function+13>:    pop    %rbp
71         0x00000000004004b5 <function+14>:    ret
72         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
73      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
74         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
75         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
76         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
77         0x00000000004004e4 <main+27>:        mov    %eax,%edi
78         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
79         0x00000000004004a7 <function+0>:     push   %rbp
80         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
81         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
82         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
83         0x00000000004004b1 <function+10>:    add    $0x1,%eax
84         0x00000000004004b4 <function+13>:    pop    %rbp
85         0x00000000004004b5 <function+14>:    ret
86         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
87      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
88         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
89         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
90         0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
91         0x00000000004004e4 <main+27>:        mov    %eax,%edi
92         0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
93         0x00000000004004a7 <function+0>:     push   %rbp
94         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
95         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
96         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
97         0x00000000004004b1 <function+10>:    add    $0x1,%eax
98         0x00000000004004b4 <function+13>:    pop    %rbp
99         0x00000000004004b5 <function+14>:    ret
100        0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
...
and we stay in main.

With the performance-core instead, we have:
...
$ taskset -c 0 gdb -q -batch
outputs/gdb.python/py-record-btrace/py-record-btrace -ex start -ex "record
btrace pt" -ex "stepi 100" -ex "record instruction-history 1,+100"
Temporary breakpoint 1 at 0x4004d1: file
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c, line 40.

Temporary breakpoint 1, main () at
/data/vries/gdb/src/gdb/testsuite/gdb.python/py-record-btrace.c:40
40        for (i = 0, j = 0; i < 100; ++i)
40        for (i = 0, j = 0; i < 100; ++i)
warning: Decode error (-20) at instruction 33 (offset = 0x3d6a, pc = 0x400501):
compressed return without call.
1          0x00000000004004d1 <main+8>: movl   $0x0,-0x4(%rbp)
2          0x00000000004004d8 <main+15>:        movl   $0x0,-0x8(%rbp)
3          0x00000000004004df <main+22>:        jmp    0x4004f2 <main+41>
4          0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
5          0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
6          0x00000000004004e1 <main+24>:        mov    -0x8(%rbp),%eax
7          0x00000000004004e4 <main+27>:        mov    %eax,%edi
8          0x00000000004004e6 <main+29>:        call   0x4004a7 <function>
9          0x00000000004004a7 <function+0>:     push   %rbp
10         0x00000000004004a8 <function+1>:     mov    %rsp,%rbp
11         0x00000000004004ab <function+4>:     mov    %edi,-0x4(%rbp)
12         0x00000000004004ae <function+7>:     mov    -0x4(%rbp),%eax
13         0x00000000004004b1 <function+10>:    add    $0x1,%eax
14         0x00000000004004b4 <function+13>:    pop    %rbp
15         0x00000000004004b5 <function+14>:    ret
16         0x00000000004004eb <main+34>:        mov    %eax,-0x8(%rbp)
17      => 0x00000000004004ee <main+37>:        addl   $0x1,-0x4(%rbp)
18         0x00000000004004f2 <main+41>:        cmpl   $0x63,-0x4(%rbp)
19         0x00000000004004f6 <main+45>:        jle    0x4004e1 <main+24>
20         0x00000000004004f8 <main+47>:        call   0x4004bd <outer>
21         0x00000000004004bd <outer+0>:        push   %rbp
22         0x00000000004004be <outer+1>:        mov    %rsp,%rbp
23         0x00000000004004c1 <outer+4>:        call   0x4004b6 <inner>
24         0x00000000004004b6 <inner+0>:        push   %rbp
25         0x00000000004004b7 <inner+1>:        mov    %rsp,%rbp
26         0x00000000004004ba <inner+4>:        nop
27         0x00000000004004bb <inner+5>:        pop    %rbp
28         0x00000000004004bc <inner+6>:        ret
29         0x00000000004004c6 <outer+9>:        nop
30         0x00000000004004c7 <outer+10>:       pop    %rbp
31         0x00000000004004c8 <outer+11>:       ret
32         0x00000000004004fd <main+52>:        mov    -0x8(%rbp),%eax
33         0x0000000000400500 <main+55>:        leave
34      [decode error (-20): compressed return without call]
...

I suppose the message is about the fact that (according to the execution trace)
we're leaving main, and no call to main was recorded.

What seems to be the problem is that the second conditional jump to the start
of the loop at main+24 is not present in the execution trace.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2023-02-07 11:35 ` vries at gcc dot gnu.org
@ 2023-02-07 12:03 ` vries at gcc dot gnu.org
  2023-02-07 12:05 ` markus.t.metzger at intel dot com
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-07 12:03 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
> (gdb) FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn =
> r.instruction_history

Doesn't trigger on openSUSE Tumbleweed, maybe related to kernel version?  For
TW, I have v6.1.8.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2023-02-07 12:03 ` vries at gcc dot gnu.org
@ 2023-02-07 12:05 ` markus.t.metzger at intel dot com
  2023-02-07 12:08 ` markus.t.metzger at intel dot com
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: markus.t.metzger at intel dot com @ 2023-02-07 12:05 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #5 from Markus Metzger <markus.t.metzger at intel dot com> ---
The 'compressed return without call' error indicates a mismatch between the
trace and the binary.  A return is an indirect branch from the point of view of
the processor, but if we recorded a direct call right before the address we're
returning to, we can still compress this in the trace, and have the decoder
keep track of the call stack.

To debug such trace decode errors, it helps to print the output of `maint
btrace packet-history`.  We need the full history, so something like `maint
btrace packet-history 0, 1000`.

I will try to reproduce the errors.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2023-02-07 12:05 ` markus.t.metzger at intel dot com
@ 2023-02-07 12:08 ` markus.t.metzger at intel dot com
  2023-02-09 10:46 ` markus.t.metzger at intel dot com
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: markus.t.metzger at intel dot com @ 2023-02-07 12:08 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #6 from Markus Metzger <markus.t.metzger at intel dot com> ---
> Doesn't trigger on openSUSE Tumbleweed, maybe related to kernel version?

There is an erratum affecting recent P-cores that might garble traces by
wrapping around after the first page instead of moving on, causing all kinds of
decode errors.  This is being worked around in the kernel.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2023-02-07 12:08 ` markus.t.metzger at intel dot com
@ 2023-02-09 10:46 ` markus.t.metzger at intel dot com
  2023-02-09 12:15 ` vries at gcc dot gnu.org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: markus.t.metzger at intel dot com @ 2023-02-09 10:46 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #7 from Markus Metzger <markus.t.metzger at intel dot com> ---
I was able to reproduce the issue, although with a different decode error.  It
looks very much like the erratum I mentioned.

Here's the kernel patch to work around it.  Looks like it came in with 6.1.

ce0d998be927 (tag: perf_urgent_for_v6.1_rc6) perf/x86/intel/pt: Fix sampling
using single range output
diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
index 82ef87e9a897..42a55794004a 100644
--- a/arch/x86/events/intel/pt.c
+++ b/arch/x86/events/intel/pt.c
@@ -1263,6 +1263,15 @@ static int pt_buffer_try_single(struct pt_buffer *buf,
int nr_pages)
        if (1 << order != nr_pages)
                goto out;

+       /*
+        * Some processors cannot always support single range for more than
+        * 4KB - refer errata TGL052, ADL037 and RPL017. Future processors
might
+        * also be affected, so for now rather than trying to keep track of
+        * which ones, just disable it for all.
+        */
+       if (nr_pages > 1)
+               goto out;
+
        buf->single = true;
        buf->nr_pages = nr_pages;
        ret = 0;

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2023-02-09 10:46 ` markus.t.metzger at intel dot com
@ 2023-02-09 12:15 ` vries at gcc dot gnu.org
  2023-02-13 18:10 ` vries at gcc dot gnu.org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-09 12:15 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #8 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Markus Metzger from comment #7)

Thanks for the pointer.

I've filed a backport request for my distro:
https://bugzilla.suse.com/show_bug.cgi?id=1208106.

As for the gdb test-cases, I'll try to come up with some xfailing.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2023-02-09 12:15 ` vries at gcc dot gnu.org
@ 2023-02-13 18:10 ` vries at gcc dot gnu.org
  2023-02-14 12:15 ` cvs-commit at gcc dot gnu.org
  2023-02-14 12:16 ` [Bug testsuite/30075] " vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-13 18:10 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #9 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #8)
> (In reply to Markus Metzger from comment #7)
> 
> Thanks for the pointer.
> 
> I've filed a backport request for my distro:
> https://bugzilla.suse.com/show_bug.cgi?id=1208106.
> 
> As for the gdb test-cases, I'll try to come up with some xfailing.

https://sourceware.org/pipermail/gdb-patches/2023-February/197036.html

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug record/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2023-02-13 18:10 ` vries at gcc dot gnu.org
@ 2023-02-14 12:15 ` cvs-commit at gcc dot gnu.org
  2023-02-14 12:16 ` [Bug testsuite/30075] " vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-02-14 12:15 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #10 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5bed9dc992a0136d403a7addb29a2ed822fd4fd2

commit 5bed9dc992a0136d403a7addb29a2ed822fd4fd2
Author: Tom de Vries <tdevries@suse.de>
Date:   Tue Feb 14 13:15:49 2023 +0100

    [gdb/testsuite] Add xfail in gdb.python/py-record-btrace.exp

    There's a HW bug affecting Processor Trace on some Intel processors
    (Ice Lake to Raptor Lake microarchitectures).

    The bug was exposed by linux kernel commit 670638477aed
    ("perf/x86/intel/pt: Opportunistically use single range output mode"),
    added in version v5.5.0, and was worked around by commit ce0d998be927
    ("perf/x86/intel/pt: Fix sampling using single range output") in version
    6.1.0.

    The bug manifests (on a Performance-core of an i7-1250U, an Alder Lake cpu)
in
    a single test-case:
    ...
    (gdb) python insn = r.instruction_history^M
    warning: Decode error (-20) at instruction 33 (offset = 0x3d6a, \
      pc = 0x400501): compressed return without call.^M
    (gdb) FAIL: gdb.python/py-record-btrace.exp: prepare record: \
      python insn = r.instruction_history
    ...

    Add a corresponding XFAIL.

    Note that the i7-1250U has both Performance-cores and Efficient-cores, and
on
    an Efficient-Core the test-case runs without any problems, so if the
testsuite
    run is not pinned to a specific cpu, the test may either PASS or XFAIL.

    Tested on x86_64-linux:
    - openSUSE Leap 15.4 with linux kernel version 5.14.21
    - openSUSE Tumbleweed with linux kernel version 6.1.8

    PR testsuite/30075
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30075

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug testsuite/30075] [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history
  2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2023-02-14 12:15 ` cvs-commit at gcc dot gnu.org
@ 2023-02-14 12:16 ` vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2023-02-14 12:16 UTC (permalink / raw)
  To: gdb-prs

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

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
          Component|record                      |testsuite
   Target Milestone|---                         |14.1
             Status|NEW                         |RESOLVED

--- Comment #11 from Tom de Vries <vries at gcc dot gnu.org> ---
Added xfail in test-case.

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-02-14 12:16 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-03 12:24 [Bug record/30075] New: [intel Performance-core] FAIL: gdb.python/py-record-btrace.exp: prepare record: python insn = r.instruction_history vries at gcc dot gnu.org
2023-02-04 20:13 ` [Bug record/30075] " vries at gcc dot gnu.org
2023-02-06 14:05 ` vries at gcc dot gnu.org
2023-02-06 15:02 ` vries at gcc dot gnu.org
2023-02-07 11:35 ` vries at gcc dot gnu.org
2023-02-07 12:03 ` vries at gcc dot gnu.org
2023-02-07 12:05 ` markus.t.metzger at intel dot com
2023-02-07 12:08 ` markus.t.metzger at intel dot com
2023-02-09 10:46 ` markus.t.metzger at intel dot com
2023-02-09 12:15 ` vries at gcc dot gnu.org
2023-02-13 18:10 ` vries at gcc dot gnu.org
2023-02-14 12:15 ` cvs-commit at gcc dot gnu.org
2023-02-14 12:16 ` [Bug testsuite/30075] " vries at gcc dot gnu.org

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).