[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20221014224453.5upiioslqjzo2bow@treble>
Date: Fri, 14 Oct 2022 15:44:53 -0700
From: Josh Poimboeuf <jpoimboe@...nel.org>
To: Chen Zhongjin <chenzhongjin@...wei.com>
Cc: linux-kernel@...r.kernel.org, x86@...nel.org,
linux-arch@...r.kernel.org, peterz@...radead.org,
tglx@...utronix.de, mingo@...hat.com, bp@...en8.de,
dave.hansen@...ux.intel.com, hpa@...or.com, mbenes@...e.cz
Subject: Re: [PATCH] Revert "x86/unwind/orc: Don't skip the first frame for
inactive tasks"
On Sun, Oct 09, 2022 at 11:14:05AM +0800, Chen Zhongjin wrote:
> Hi Josh,
>
> On 2022/8/5 6:06, Josh Poimboeuf wrote:
> > On Thu, Aug 04, 2022 at 03:27:39PM +0800, Chen Zhongjin wrote:
> > > I believe disassemble show_stack in vmlinux and if we have:
> > >
> > > push %rbp
> > >
> > > mov %rsp,%rbp
> > >
> > > ... (no regs pushed to stack)
> > >
> > > callq <show_trace_log_lvl>
> > >
> > > This can be reproduced.
> > Weird, that's what I have. This is GCC 12.1.
> >
> > ffffffff81056de0 <show_stack>:
> > ffffffff81056de0: e8 0b 43 05 00 call ffffffff810ab0f0 <__fentry__>
> > ffffffff81056de5: 55 push %rbp
> > ffffffff81056de6: 48 83 05 b2 0f c9 02 01 addq $0x1,0x2c90fb2(%rip) # ffffffff83ce7da0 <__gcov0.show_stack>
> > ffffffff81056dee: 48 89 e5 mov %rsp,%rbp
> > ffffffff81056df1: 48 85 ff test %rdi,%rdi
> > ffffffff81056df4: 74 41 je ffffffff81056e37 <show_stack+0x57>
> > ffffffff81056df6: 48 85 f6 test %rsi,%rsi
> > ffffffff81056df9: 0f 85 c2 24 15 01 jne ffffffff821a92c1 <show_stack.cold+0xd>
> > ffffffff81056dff: 65 48 8b 04 25 c0 bd 01 00 mov %gs:0x1bdc0,%rax
> > ffffffff81056e08: 48 39 c7 cmp %rax,%rdi
> > ffffffff81056e0b: 0f 85 a3 24 15 01 jne ffffffff821a92b4 <show_stack.cold>
> > ffffffff81056e11: 48 83 05 af 0f c9 02 01 addq $0x1,0x2c90faf(%rip) # ffffffff83ce7dc8 <__gcov0.show_stack+0x28>
> > ffffffff81056e19: 48 89 ee mov %rbp,%rsi
> > ffffffff81056e1c: 48 89 d1 mov %rdx,%rcx
> > ffffffff81056e1f: 48 89 f2 mov %rsi,%rdx
> > ffffffff81056e22: 31 f6 xor %esi,%esi
> > ffffffff81056e24: e8 8e 20 15 01 call ffffffff821a8eb7 <show_trace_log_lvl>
> > ffffffff81056e29: 48 83 05 9f 0f c9 02 01 addq $0x1,0x2c90f9f(%rip) # ffffffff83ce7dd0 <__gcov0.show_stack+0x30>
> > ffffffff81056e31: 5d pop %rbp
> > ffffffff81056e32: e9 49 b2 5a 01 jmp ffffffff82602080 <__x86_return_thunk>
> > ffffffff81056e37: 48 83 05 69 0f c9 02 01 addq $0x1,0x2c90f69(%rip) # ffffffff83ce7da8 <__gcov0.show_stack+0x8>
> > ffffffff81056e3f: 65 48 8b 3c 25 c0 bd 01 00 mov %gs:0x1bdc0,%rdi
> > ffffffff81056e48: eb ac jmp ffffffff81056df6 <show_stack+0x16>
> > ffffffff81056e4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
>
> This problem still exist on my machine:
>
> CONFIG: defconfig + CONFIG_GCOV_PROFILE_ALL
>
> GCC: gcc 7.5.0 & 12.1.0
>
> TRIGGER:
>
> # echo l > /proc/sysrq-trigger
Hi Chen,
Thanks for your patience. I'm able to recreate now. I still have no
idea why I couldn't recreate before.
Anyway the patch looks good. I'll run it through some more testing.
--
Josh
Powered by blists - more mailing lists