winedbg: suppress bogus clone() frames in backtrace

Ralf Habacker ralf.habacker at freenet.de
Fri Nov 27 02:03:17 CST 2015


Am 26.11.2015 um 09:25 schrieb Daniel Santos:
> Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
> ---
>  programs/winedbg/stack.c | 27 ++++++++++++++++++++++-----
>  1 file changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c
> index f49480a..8ef2dbc 100644
> --- a/programs/winedbg/stack.c
> +++ b/programs/winedbg/stack.c
> @@ -307,6 +307,11 @@ static void stack_print_addr_and_args(int nf)
>                      im.ModuleName, (DWORD_PTR)(ihsf.InstructionOffset - im.BaseOfImage));
>  }
>  
> +static int addr_is_nonzero(const ADDRESS64 *addr)
> +{
> +    return addr->Offset && (addr->Mode != AddrModeFlat || addr->Segment);
> +}
> +
>  /******************************************************************
>   *		backtrace
>   *
> @@ -322,12 +327,24 @@ static void backtrace(void)
>           dbg_curr_thread->curr_frame < dbg_curr_thread->num_frames;
>           dbg_curr_thread->curr_frame++)
>      {
> -        dbg_printf("%s%d ", 
> -                   (cf == dbg_curr_thread->curr_frame ? "=>" : "  "),
> -                   dbg_curr_thread->curr_frame);
> -        stack_print_addr_and_args(dbg_curr_thread->curr_frame);
> +        const unsigned nf     = dbg_curr_thread->curr_frame;
> +        const ADDRESS64 *addr = &dbg_curr_thread->frames[nf].addr_frame;
> +
> +        /* suppress bogus clone() frames from repeating */
Hi,
any idea if the mentioned bug have the same reason
https://bugs.winehq.org/show_bug.cgi?id=39606

Regards
Ralf





More information about the wine-devel mailing list