[Crash-utility] Re: [PATCH] gdb bt: multiple stacks support (x86_64)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alexey,

On Wed, Nov 13, 2024 at 10:56 AM Alexey Makhalov
<alexey.makhalov@xxxxxxxxxxxx> wrote:
>
> Hi Tao, waiting to see your updated patch.
>

I made a trial patchset in [1], which added support for
x86_64/arm64/ppc64 multi-stack. I made the following improvements:

1. Decrease highest_thread_num to prevent thread id from increasing if
we change pid/thread for multiple times.
2. Extract the original patch into arch independent and arch specific parts.
3. Reuse the original user_regs_bitmap_struct struct for storing the
multi-stack regs.

There are still something need to be improved, e.g.:

1. Can we make stacks_regs from global array into a local/malloced array?
2. The "#define MAX_EXCEPTION_STACKS 7" is not good.
3. I have not fully tested the arch specific parts, there might be
cases which gdb_add_substack() missed.
...

>
> >> Implmentation is machine specific. In x86_64, I use cmd_bt() to add
> >> additional gdb threads (gdb_add_substack(stack_id) call). Once added,
> >> gdb will may call machdep->get_current_task_reg() with corresonding
> >> stack_id (sid: new argument).
> >> Note: crash 'bt' command must be called for addition threads to appear.
> >>
> > I guess this is not very user-friendly, I'm trying to improve that.
> >
> Agree, I though of adding silent 'bt' invocation on current task
> set/switch. But it will slowdown initialization and 'set' command.
>
> If you have other ideas, I happy to hear it.
>
Sorry I haven't improved this, I agree a silent "bt" is an approach,
other than that, I didn't think of a better approach... Anyway, this
is worth to be improved.

>
> >>
> >> crash> gdb info threads
> >>    Id   Target Id            Frame
> >> * 1    94228 SCTP (stack 0) 0xffffffff998eaadf in __inb (port=100) at ./arch/x86/include/asm/shared/io.h:22
> >>    2    94228 SCTP (stack 1) crypto_aead_encrypt (req=req@entry=0xffff96a348352060) at crypto/aead.c:86
> >
> > The stack(0,1) doesn't make sense for users, I prefer to set marks for
> > each threads, as the follows:
> >
> > crash> info threads
> > Detaching from process 18613
> >    Id   Target Id             Frame
> > * 1    18336 insmod          crash_setup_regs (oldregs=<optimized
> > out>, newregs=<optimized out>) at ./arch/x86/include/asm/kexec.h:134
> >    2    18336 insmod "eframe" 0xffffffffa008300e in ?? ()
> >
> > So the user will know what kind of stack the thread is...
> It would be great!

Ditto.

>

For anyone who is interested, please have a try and I'm happy to
receive your comments & suggestions.

[1]: https://github.com/liutgnu/crash-dev/commits/multi-stack-v2/

Thanks,
Tao Liu

>
> Thanks,
> --Alexey
>
--
Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux