[Crash-utility] Re: [Crash-Utility][PATCH v2 06/13] Fix gdb_interface: restore gdb's output streams at end of gdb_interface

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

 



Hi Aditya,

On Wed, May 1, 2024 at 4:01 PM Aditya Gupta <adityag@xxxxxxxxxxxxx> wrote:
>
> Hi Tao,
>
> On 30/04/24 08:11, Tao Liu wrote:
>
> Hi Aditya,
>
> Sorry for the late reply.
>
> On Sun, Apr 28, 2024 at 4:46 PM Aditya Gupta <adityag@xxxxxxxxxxxxx> wrote:
>
> Hi Tao,
>
> Thanks for sending the series.
>
> Maybe you missed CCing people ?
>
> Yeah, I will get it fixed in v3.
>
> Sure.
>
> Also this patch's 'author' line is missing, maybe while editing the
> commit it messed up ?
>
> I didn't get it clear, where is the 'author' line? Could you give me
> an example, maybe show me the 'author' line which is valid in another
> patch?
>
> I meant, the 'Author' of this commit changed, if you notice patch #1, #8.
>
> It has a line on top of the patch:
>
> "From: Aditya Gupta <adityag@xxxxxxxxxxxxx>"
>
> This is not there in patch #6. Whenever the commit's author is different than the mail sender, git format-patch will add this line, and when this patch series is merged, git will take the 'From' here as the author.
>
> If you see in your git log of the branch, it will show you as author. This would have happened due to editing, resetting the change, commiting it again, somewhere the Author field got changed automatically.
>
Oh I see... Yeah, I didn't notice that. Will get it fixed in v3.

> I will proceed with testing the series, might do it later, currently my
> mails got messed up, I got some mails in Inbox (those patches with me in
> Cc), and others in my crash-utility folder (those with Cc: crash-utility).
>
> Could you please check the
> https://github.com/liutgnu/crash-dev/commits/tao-rebase-v4?? This may
> be better for testing.
>
> Sure, I will test that Tao.

Thanks for your testing!

Thanks,
Tao Liu
>
>
> Thanks,
>
> Aditya Gupta
>
> Thanks,
> Tao Liu
>
> Thanks,
> Aditya Gupta
>
> On 28/04/24 09:32, Tao Liu wrote:
>
> Currently for most gdb_interface call, in which a non-null file pointer
> is passed, GDB's output stream is replaced with the passed file pointer
>
> Due to this, 'info threads', which is a gdb passthrough, doesn't print any
> thread, after support was added to get registers from crash_target:
>
>      crash> info threads
>        Id   Target Id         Frame
>
> This empty output of 'info threads' was due to a subtle bug in
> gdb_interface.
>
> After this gdb passthrough is run, 'datatype_info' is called, with file
> pointer set to null_fp (pointing to /dev/null). And after
> 'datatype_info' returns, any output by gdb goes to /dev/null, and hence
> the output is lost.
>
> Fix this by restoring the original output streams, after gdb_interface
> has handled the output
>
> After this patch:
>
>      crash> info threads
>        Id   Target Id         Frame
>      * 1    2131 bash         0xc000000000051e40 in crash_fadump (regs=0x0, str=0xc000000002c60510 <buf> "sysrq triggered crash") at arch/powerpc/kernel/fadump.c:735
>
> Cc: Sourabh Jain <sourabhjain@xxxxxxxxxxxxx>
> Cc: Hari Bathini <hbathini@xxxxxxxxxxxxx>
> Cc: Mahesh J Salgaonkar <mahesh@xxxxxxxxxxxxx>
> Cc: Naveen N. Rao <naveen.n.rao@xxxxxxxxxxxxxxxxxx>
> Cc: Lianbo Jiang <lijiang@xxxxxxxxxx>
> Cc: HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab@xxxxxxx>
> Cc: Tao Liu <ltao@xxxxxxxxxx>
> Signed-off-by: Aditya Gupta <adityag@xxxxxxxxxxxxx>
> Signed-off-by: Tao Liu <ltao@xxxxxxxxxx>
> ---
>   gdb-10.2.patch | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 53 insertions(+)
>
> diff --git a/gdb-10.2.patch b/gdb-10.2.patch
> index 3694b13..0bed96a 100644
> --- a/gdb-10.2.patch
> +++ b/gdb-10.2.patch
> @@ -16118,3 +16118,56 @@ exit 0
>          subclass (SYMBOL_NONE)
>        {
>          /* We can't use an initializer list for members of a base class, and
> +--- gdb-10.2/gdb/ui-file.h.orig
> ++++ gdb-10.2/gdb/ui-file.h
> +@@ -195,6 +195,7 @@ public:
> +
> +   bool can_emit_style_escape () override;
> +
> ++  FILE *get_stream(void);
> +   /* Sets the internal stream to FILE, and saves the FILE's file
> +      descriptor in M_FD.  */
> +   void set_stream (FILE *file);
> +--- gdb-10.2/gdb/ui-file.c.orig
> ++++ gdb-10.2/gdb/ui-file.c
> +@@ -161,6 +161,12 @@ stdio_file::~stdio_file ()
> +     fclose (m_file);
> + }
> +
> ++FILE*
> ++stdio_file::get_stream(void)
> ++{
> ++  return m_file;
> ++}
> ++
> + void
> + stdio_file::set_stream (FILE *file)
> + {
> +--- gdb-10.2/gdb/symtab.c.orig
> ++++ gdb-10.2/gdb/symtab.c
> +@@ -6964,8 +6964,12 @@ void
> + gdb_command_funnel_1(struct gnu_request *req)
> + {
> +         struct symbol *sym;
> ++        FILE *original_stdout_stream = nullptr;
> ++        FILE *original_stderr_stream = nullptr;
> +
> +         if (req->command != GNU_VERSION && req->command != GNU_USER_PRINT_OPTION) {
> ++                original_stdout_stream = (dynamic_cast< stdio_file * >gdb_stdout)->get_stream();
> ++                original_stderr_stream = (dynamic_cast< stdio_file * >gdb_stderr)->get_stream();
> +                 (dynamic_cast<stdio_file *>gdb_stdout)->set_stream(req->fp);
> +                 (dynamic_cast<stdio_file *>gdb_stderr)->set_stream(req->fp);
> +         }
> +@@ -7068,6 +7072,12 @@ gdb_command_funnel_1(struct gnu_request *req)
> +                 req->flags |= GNU_COMMAND_FAILED;
> +                 break;
> +         }
> ++
> ++        /* Restore the streams gdb output was using */
> ++        if (original_stdout_stream)
> ++            (dynamic_cast<stdio_file *>gdb_stdout)->set_stream(original_stdout_stream);
> ++        if (original_stderr_stream)
> ++            (dynamic_cast<stdio_file *>gdb_stderr)->set_stream(original_stderr_stream);
> + }
> +
> + /*
--
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