On Thu, Oct 4, 2012 at 1:40 PM, Tom Hughes <t...@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.waroqui...@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 <gjun...@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 <kump...@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

but it doesn't appear that that patch ever made it into Mono:

https://github.com/search?q=repo%3Amono%2Fmono+JitEntry&type=Code

- Kerrick

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to