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

Rodrigo Kumpera kumpera at gmail.com
Fri Oct 5 18:11:42 UTC 2012


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.

On Thu, Oct 4, 2012 at 2:19 PM, Kerrick Staley <mail at kerrickstaley.com>wrote:

> Hello,
>
> I'm running Valgrind on Mono as it executes a C# program. The C# program
> in question invokes several native routines in several different shared
> object files, and it's crashing in one of these native routines. The
> following is a snippet from Valgrind's output:
>
> ==3652== Thread 5:
> ==3652== Conditional jump or move depends on uninitialised value(s)
> ==3652==    at 0xA55A385: ???
> ==3652==    by 0xA55A1F7: ???
> ==3652==    by 0x78C8074: ???
> ==3652==    by 0x8064415: mono_jit_runtime_invoke (mini.c:5791)
> ==3652==    by 0x81AF4EE: mono_runtime_invoke (object.c:2755)
> ==3652==    by 0x81AF8F3: mono_runtime_delegate_invoke (object.c:3420)
> ==3652==    by 0x8202FEB: start_wrapper (threads.c:790)
> ==3652==    by 0x82305EE: thread_start_routine (wthreads.c:287)
> ==3652==    by 0x416FD5D: clone (clone.S:130)
> ==3652==
> ==3652== Invalid read of size 4
> ==3652==    at 0xA55A543: ???
> ==3652==    by 0xA55A1F7: ???
> ==3652==    by 0x78C8074: ???
> ==3652==    by 0x8064415: mono_jit_runtime_invoke (mini.c:5791)
> ==3652==    by 0x81AF4EE: mono_runtime_invoke (object.c:2755)
> ==3652==    by 0x81AF8F3: mono_runtime_delegate_invoke (object.c:3420)
> ==3652==    by 0x8202FEB: start_wrapper (threads.c:790)
> ==3652==    by 0x82305EE: thread_start_routine (wthreads.c:287)
> ==3652==    by 0x416FD5D: clone (clone.S:130)
> ==3652==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==3652==
> ==3652== Thread 5 return signal frame corrupted.  Killing process.
> ==3652==
> ==3652== Process terminating with default action of signal 11 (SIGSEGV)
> ==3652==  General Protection Fault
> ==3652==    at 0x408F655: ??? (in /lib/libpthread-2.11.3.so)
> ==3652==    by 0xA55A1F7: ???
> ==3652==    by 0x78C8074: ???
> ==3652==    by 0x8064415: mono_jit_runtime_invoke (mini.c:5791)
> ==3652==    by 0x81AF4EE: mono_runtime_invoke (object.c:2755)
> ==3652==    by 0x81AF8F3: mono_runtime_delegate_invoke (object.c:3420)
> ==3652==    by 0x8202FEB: start_wrapper (threads.c:790)
> ==3652==    by 0x82305EE: thread_start_routine (wthreads.c:287)
> ==3652==    by 0x416FD5D: clone (clone.S:130)
>
> I can't track down the error since the stack trace doesn't indicate which
> shared object and function it occurs in.
>
> According to http://valgrind.org/docs/manual/faq.html#faq.unhelpful, if a
> shared object is unloaded before the program terminates, ??? entries will
> appear in the stack trace, so I'm guessing that Mono is dynamically
> unloading the shared object after the segfault. I'm unsure as to whether
> this hunch even makes sense, though. Is there anything I can do on either
> the Valgrind or the Mono side to get more information from the stack trace?
>
> Thanks,
> Kerrick
>
> _______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20121005/eecba836/attachment.html>


More information about the Mono-list mailing list