<br>Hi All,<br><br>I am trying to profile a mixed Java/C# application running on Linux (Fedora Core 10) using the Mono default profiler.<br>(I have not had any luck using the Mono Logging profiler or Valgrind.)<br>Please see my system information and stack trace below.<br>
<br>My run script looks like the following:<br><br>#!/bin/sh<br>export MONO_IOMAP=all<br>export MONO_REGISTRY_PATH=/home/mbaker/.mono/registry<br>mono --trace=M:Microsoft.Win32.KeyHandler:Drop --debug --verbose --profile=default:stat,alloc,file=prof.out hrc.exe<br>
<br>I don&#39;t think either Mono environment variable has an affect on my run.<br><br>I think my program is dying on the first line of this method (quoted below), but I don&#39;t know the cause.<br><br>Since my program does not exit cleanly, I do not get the profiler output.<br>
Any help or insight is greatly appreciated.<br><br>Mike<br><br>**************************************************<br><br><pre>                <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <a title="Search for references of &#39;Drop&#39;" href="javascript:searchRef(&#39;Drop&#39;)" class="r">Drop</a> (<a title="Search for references of &#39;RegistryKey&#39;" href="javascript:searchRef(&#39;RegistryKey&#39;)" class="r">RegistryKey</a> <a title="Search for references of &#39;rkey&#39;" href="javascript:searchRef(&#39;rkey&#39;)" class="r">rkey</a>)<br>
                {<br>                        <span class="k">lock</span> (<span class="k">typeof</span> (<a title="Search for references of &#39;KeyHandler&#39;" href="javascript:searchRef(&#39;KeyHandler&#39;)" class="r">KeyHandler</a>)) {<br>                                <a title="Search for references of &#39;KeyHandler&#39;" href="javascript:searchRef(&#39;KeyHandler&#39;)" class="r">KeyHandler</a> <a title="Search for references of &#39;k&#39;" href="javascript:searchRef(&#39;k&#39;)" class="r">k</a> = (<a title="Search for references of &#39;KeyHandler&#39;" href="javascript:searchRef(&#39;KeyHandler&#39;)" class="r">KeyHandler</a>) <a title="Search for references of &#39;key_to_handler&#39;" href="javascript:searchRef(&#39;key_to_handler&#39;)" class="r">key_to_handler</a> [<a title="Search for references of &#39;rkey&#39;" href="javascript:searchRef(&#39;rkey&#39;)" class="r">rkey</a>];<br>
                                <span class="k">if</span> (<a title="Search for references of &#39;k&#39;" href="javascript:searchRef(&#39;k&#39;)" class="r">k</a> == <span class="k">null</span>)<br>                                        <span class="k">return</span>;<br>                                <a title="Search for references of &#39;key_to_handler&#39;" href="javascript:searchRef(&#39;key_to_handler&#39;)" class="r">key_to_handler</a>.<a title="Search for references of &#39;Remove&#39;" href="javascript:searchRef(&#39;Remove&#39;)" class="r">Remove</a> (<a title="Search for references of &#39;rkey&#39;" href="javascript:searchRef(&#39;rkey&#39;)" class="r">rkey</a>);<br>
<br>                                <span class="c">// remove cached KeyHandler if no other keys reference it<br></span>                                <span class="k">int</span> <a title="Search for references of &#39;refCount&#39;" href="javascript:searchRef(&#39;refCount&#39;)" class="r">refCount</a> = 0;<br>
                                <span class="k">foreach</span> (<a title="Search for references of &#39;DictionaryEntry&#39;" href="javascript:searchRef(&#39;DictionaryEntry&#39;)" class="r">DictionaryEntry</a> <a title="Search for references of &#39;de&#39;" href="javascript:searchRef(&#39;de&#39;)" class="r">de</a> <span class="k">in</span> <a title="Search for references of &#39;key_to_handler&#39;" href="javascript:searchRef(&#39;key_to_handler&#39;)" class="r">key_to_handler</a>)<br>
                                        <span class="k">if</span> (<a title="Search for references of &#39;de&#39;" href="javascript:searchRef(&#39;de&#39;)" class="r">de</a>.<a title="Search for references of &#39;Value&#39;" href="javascript:searchRef(&#39;Value&#39;)" class="r">Value</a> == <a title="Search for references of &#39;k&#39;" href="javascript:searchRef(&#39;k&#39;)" class="r">k</a>)<br>
                                                <a title="Search for references of &#39;refCount&#39;" href="javascript:searchRef(&#39;refCount&#39;)" class="r">refCount</a>++;<br>                                <span class="k">if</span> (<a title="Search for references of &#39;refCount&#39;" href="javascript:searchRef(&#39;refCount&#39;)" class="r">refCount</a> == 0)<br>
                                        <a title="Search for references of &#39;dir_to_handler&#39;" href="javascript:searchRef(&#39;dir_to_handler&#39;)" class="r">dir_to_handler</a>.<a title="Search for references of &#39;Remove&#39;" href="javascript:searchRef(&#39;Remove&#39;)" class="r">Remove</a> (<a title="Search for references of &#39;k&#39;" href="javascript:searchRef(&#39;k&#39;)" class="r">k</a>.<a title="Search for references of &#39;Dir&#39;" href="javascript:searchRef(&#39;Dir&#39;)" class="r">Dir</a>);<br>
                        }<br>                }<br></pre><br>*************************************************<br><br>$ uname -a<br>Linux localhost.localdomain 2.6.27.19-170.2.35.fc10.x86_64 #1 SMP Mon Feb 23 13:00:23 EST 2009 x86_64 x86_64 x86_64 GNU/Linux<br>
<br>$ mono ikvm.exe -version<br><a href="http://IKVM.NET">IKVM.NET</a> Launcher version 0.38.0.2<br>Copyright (C) 2002-2008 Jeroen Frijters<br><a href="http://www.ikvm.net/">http://www.ikvm.net/</a><br><br>CLR version: 2.0.50727.1433 (64 bit)<br>
Mono version: Mono 2.2<br>System: 2.0.0.0<br>IKVM.OpenJDK.ClassLibrary: 0.38.0.2<br>IKVM.Runtime: 0.38.0.2<br>ikvm: 0.38.0.2<br>mscorlib: 2.0.0.0<br>GNU Classpath version: 0.95<br>OpenJDK version: OpenJDK 6 b12<br><br><br>
Method Microsoft.Win32.RegistryKey:Finalize () emitted at 0x4c9fe0 to 0x4ca046 (code length 102) [hrc.exe]<br>Method Microsoft.Win32.RegistryKey:Close () emitted at 0x4ca050 to 0x4ca0d6 (code length 134) [hrc.exe]<br>Method Microsoft.Win32.RegistryKey:Flush () emitted at 0x4ca0e0 to 0x4ca13e (code length 94) [hrc.exe]<br>
Method Microsoft.Win32.UnixRegistryApi:Flush (Microsoft.Win32.RegistryKey) emitted at 0x4ca140 to 0x4ca19a (code length 90) [hrc.exe]<br>Method Microsoft.Win32.KeyHandler:Flush () emitted at 0x4ca1b0 to 0x4ca24a (code length 154) [hrc.exe]<br>
Method Microsoft.Win32.UnixRegistryApi:Close (Microsoft.Win32.RegistryKey) emitted at 0x4ca260 to 0x4ca2a2 (code length 66) [hrc.exe]<br>Method Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey) emitted at 0x4ca2b0 to 0x4ca5ee (code length 830) [hrc.exe]<br>
[0x7fc9c1a6c950: 0.00000 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9be548c78], )<br>[0x7fc9c1a6c950: 0.39365 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 0.39379 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9bccaacb0], )<br>[0x7fc9c1a6c950: 0.78490 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 0.78558 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9bcbdcd90], )<br>[0x7fc9c1a6c950: 1.18209 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 1.18268 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b5856d20], )<br>[0x7fc9c1a6c950: 1.57726 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 1.57735 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b7c61428], )<br>[0x7fc9c1a6c950: 1.96742 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 1.96752 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b5c335e8], )<br>[0x7fc9c1a6c950: 2.36141 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 2.36150 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b7d58658], )<br>[0x7fc9c1a6c950: 2.78386 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 2.78437 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b5788e00], )<br>[0x7fc9c1a6c950: 3.17805 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 3.17815 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9bccfd2d8], )<br>[0x7fc9c1a6c950: 3.57094 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 3.57103 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b5880038], )<br>[0x7fc9c1a6c950: 3.96326 0] LEAVE: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)<br>
[0x7fc9c1a6c950: 3.96336 0] ENTER: Microsoft.Win32.KeyHandler:Drop (Microsoft.Win32.RegistryKey)([Microsoft.Win32.RegistryKey:0x7fc9b59a0578], )<br><br>** (hrc.exe:3319): WARNING **: Shutting down finalizer thread timed out.<br>
**<br>ERROR:error.c:70:SetLastError: assertion failed: (ret == 0)<br>Stacktrace:<br><br>  at Microsoft.Win32.KeyHandler.Drop (Microsoft.Win32.RegistryKey) [0x000b2] in /builddir/build/BUILD/mono-2.2/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:287<br>
  at Microsoft.Win32.KeyHandler.Drop (Microsoft.Win32.RegistryKey) [0x00096] in /builddir/build/BUILD/mono-2.2/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:285<br>  at Microsoft.Win32.UnixRegistryApi.Close (Microsoft.Win32.RegistryKey) [0x00000] in /builddir/build/BUILD/mono-2.2/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:617<br>
  at Microsoft.Win32.RegistryKey.Close () [0x0001d] in /builddir/build/BUILD/mono-2.2/mcs/class/corlib/Microsoft.Win32/RegistryKey.cs:158<br>  at Microsoft.Win32.RegistryKey.Finalize () [0x00000] in /builddir/build/BUILD/mono-2.2/mcs/class/corlib/Microsoft.Win32/RegistryKey.cs:124<br>
  at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) &lt;0xffffffff&gt;<br><br>Native stacktrace:<br><br>    /usr/lib64/libmono.so.0 [0x6c7ab0]<br>    /lib64/libpthread.so.0 [0x3f3a60f0f0]<br>
    /lib64/libc.so.6(gsignal+0x35) [0x3f39a32f05]<br>    /lib64/libc.so.6(abort+0x183) [0x3f39a34a73]<br>    /lib64/libglib-2.0.so.0(g_assertion_message+0x113) [0x3f3b25d803]<br>    /lib64/libglib-2.0.so.0 [0x3f3b25dca2]<br>
    /usr/lib64/libmono.so.0(SetLastError+0x48) [0x7c0cb8]<br>    /usr/lib64/libmono.so.0(WaitForSingleObjectEx+0x21f) [0x7ddc6f]<br>    /usr/lib64/libmono.so.0 [0x76cee1]<br>    /usr/lib64/libmono.so.0 [0x76d2a9]<br>    [0x222818]<br>
<br>Debug info from gdb:<br><br>ptrace: No such process.<br>No registers.<br>No registers.<br><br>=================================================================<br>Got a SIGABRT while executing native code. This usually indicates<br>
a fatal error in the mono runtime or one of the native libraries <br>used by your application.<br>=================================================================<br><br>Aborted<br><br>