How do I find out which info table a continuation belongs to?

Ömer Sinan Ağacan omeragacan at gmail.com
Wed Apr 24 09:58:03 UTC 2019


Bumping thread, this is still a problem for me.

I wonder if this ever worked. I should try this with older GHCs.

Ömer

Sergei Azovskov <lastg at fb.com>, 26 Şub 2019 Sal, 19:21 tarihinde şunu yazdı:
>
> Hey!
>
> Unfortunately, I'm not a big expert in gdb and debugging ghc runtime. I stripped some auto generated symbols from the symtab but they can still be found in dwarf section. I don't know how to force gdb to show them but you can manually check via dwarfdump.
> ________________________________
> From: Ömer Sinan Ağacan <omeragacan at gmail.com>
> Sent: Sunday, February 10, 2019 6:45 PM
> To: Simon Marlow
> Cc: ghc-devs; Sergei Azovskov
> Subject: Re: How do I find out which info table a continuation belongs to?
>
> I'm already using -g3. Here's my build.mk:
>
>     BuildFlavour = quick
>
>     ifneq "$(BuildFlavour)" ""
>     include mk/flavours/$(BuildFlavour).mk
>     endif
>
>     GhcRtsHcOpts += -O0 -g3
>     SRC_HC_OPTS += -g3
>     GhcStage1HcOpts += -g3
>     GhcStage2HcOpts += -g3
>     GhcLibHcOpts += -g3
>
>     STRIP_CMD = :
>
> Ömer
>
> Simon Marlow <marlowsd at gmail.com>, 10 Şub 2019 Paz, 19:00 tarihinde şunu yazdı:
> >
> > I believe this is due to https://urldefense.proofpoint.com/v2/url?u=https-3A__phabricator.haskell.org_D4722&d=DwIFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=kdITsLFp8oDGMKQlc9eIzA&m=TC61xap_n2utc37GJd4nKe0d_swgwMyqoHVKekcPDZk&s=I_8-wOL9DBs5msIWONBC1IwDvNFG-rXrOgrXVhBqt6Q&e=
> >
> > (cc Sergei Azovskov)
> >
> > I'm a bit surprised that gdb isn't showing anything though, it should know that the address corresponds to a temporary symbol like `.L1234`. Perhaps you need to compile with -g to make this work, I'm not sure.
> >
> > On Sun, 10 Feb 2019 at 07:50, Ömer Sinan Ağacan <omeragacan at gmail.com> wrote:
> >>
> >> I'm currently working on a bug and one of the things I often want to know is
> >> what's on the stack. The problem is I can't see labels of continuations so the
> >> information is really useless. Example:
> >>
> >>     >>> call printStack(((StgTSO*)0x42000e0198)->stackobj)
> >>     0x42000c8788: RET_SMALL (0x512d70)
> >>     0x42000c8790: RET_SMALL (0x40edf0)
> >>        stk[5] (0x42000c8798) = 0x7b3938
> >>     0x42000c87a0: CATCH_FRAME(0x735a98,0x7d3ff2)
> >>     0x42000c87b8: STOP_FRAME(0x7311b8)
> >>
> >> (I modified the printer to print stack locations when printing stacks)
> >>
> >> Here I need to know which info table the RET_SMALLs return to. Normally I do
> >> this for other kinds of closures:
> >>
> >>     >>> print ((StgClosure*)...)->header.info
> >>     $15 = (const StgInfoTable *) 0x404dc0 <Main_nats_info>
> >>
> >> But for continuations that doesn't work:
> >>
> >>     >>> print ((StgClosure*)0x42000c8788)->header.info
> >>     $11 = (const StgInfoTable *) 0x512d80
> >>     >>> info symbol 0x512d80
> >>     No symbol matches 0x512d80.
> >>
> >> Anyone know how to make this work? Can I maybe mark the continuations label in
> >> the generated assembly somehow to make those labels available in gdb?
> >>
> >> Thanks
> >>
> >> Ömer
> >> _______________________________________________
> >> ghc-devs mailing list
> >> ghc-devs at haskell.org
> >> https://urldefense.proofpoint.com/v2/url?u=http-3A__mail.haskell.org_cgi-2Dbin_mailman_listinfo_ghc-2Ddevs&d=DwIFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=kdITsLFp8oDGMKQlc9eIzA&m=TC61xap_n2utc37GJd4nKe0d_swgwMyqoHVKekcPDZk&s=OIXAtMjQkAnHAverwOpWQrKM1GIy-Eo85s3wxcnOqfU&e=


More information about the ghc-devs mailing list