[Mono-list] Addresses marked as ??? in Valgrind stack trace

Rodrigo Kumpera kumpera at gmail.com
Tue Oct 9 16:43:59 UTC 2012


On Tue, Oct 9, 2012 at 12:40 PM, Kerrick Staley <mail at kerrickstaley.com>wrote:

> On Thu, Oct 4, 2012 at 1:40 PM, Tom Hughes <tom at compton.nu> wrote:
> > The "mono_jit_runtime_invoke" is a big clue - those will be run time
> > generated code that the JIT has created so they won't be in the symbol
> table.
>
> Ah, that makes a lot more sense than my theory.
>
> On Thu, Oct 4, 2012 at 1:50 PM, Philippe Waroquiers
> <philippe.waroquiers at skynet.be> wrote:
> > If that is effectively the case, have you given
> > the argument --smc-check=all (or =all-non-file) ?
> > One of these two is for sure mandatory in a JITted env (on x86/amd64
> > at least).
>
> Yes, I'm passing this argument.
>
> > Otherwise, you might always try using gdb/vgdb to connect to the process
> > under Valgrind when the error is raised : gdb might maybe help
> > to see what is going on.
>
> You mean I should use --db-attach=yes (as Greg suggested)?
>
> On Thu, Oct 4, 2012 at 5:38 PM, Gregory Junker <gjunker at dayark.com> wrote:
> > Well, for starters, you can look at what line 5791 in mini.c is doing:
> >
> > https://github.com/mono/mono/blob/master/mono/mini/mini.c
>
> Not everyone runs master :)
>
> https://github.com/mono/mono/blob/mono-2-10-9/mono/mini/mini.c#L5791
>
> It looks like the line is calling runtime_invoke, which means it's
> running JIT code (as others suggested).
>
> > One thing you can do with Valgrind is have it break to debugger on
> errors,
> > by supplying the --attach-db=yes option. If you still can't get function
> > names in GDB, you may be able to get module names (the addresses look to
> be
> > in different modules than the Mono runtime), and from there you might
> have
> > to get your hands dirty with nm or objdump.
>
> OK, I'll try seeing what I can turn up with gdb. Initial results
> aren't promising; when I try the disassemble command at the site of
> the error, it tells me "No function contains program counter for
> selected frame".
>
> On Fri, Oct 5, 2012 at 1:11 PM, Rodrigo Kumpera <kumpera at gmail.com> wrote:
> > Mono features a JIT that dynamically generates code and those unknown
> frames
> > are precisely that.
> > Look at the man page to see how to enable valgrind integration to show
> > actual names instead.
>
> Per the manpage, I tried setting MONO_XDEBUG=true and passing
> --debug=gdb to Mono; neither caused the ???'s to be replaced with
> useful information. Mono generated an xdb.il and an xdb.s file when I
> did this, but it doesn't seem like GDB can use these files. I'm going
> to see if I can get anywhere with the --aot flag (enabling
> ahead-of-time compilation).
>
> I also noticed this blog post describing Valgrind integration for Mono:
>
> http://tirania.org/blog/archive/2007/Jun-29.html


Valgrind support does exist in mono for a few years, you just need to make
sure that
your mono build has detected and enabled it correctly.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20121009/3b9a2ea7/attachment.html>


More information about the Mono-list mailing list