<div dir="ltr">Good catch! I'm pushing a fix for it as of now, it will be part of mono 3.0.7.<div>Thanks for investigating it.<br></div><div><br></div><div>--</div><div style>Rodrigo</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Mar 4, 2013 at 7:53 AM, Chris Ball <span dir="ltr"><<a href="mailto:qhalid@gmail.com" target="_blank">qhalid@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div>I maintain a Linux build of mono (and F#) that is hosted via NFS, and used on a large number of machines, but the mount directory is not always identical. I have discovered that the mono-sgen binary does not properly detect the location of mscorlib on my systems, but the normal mono binary has no problems. This problem occurs in both 2.10.9 and 3.0.4. My "simple" test case (for mono 3.0) is to build the runtime, rename the output directory, and run the following:</div>

<div> </div><div>   MONO_GAC_PREFIX=/tmp/mono-test/renamed \</div><div>   PATH=$PATH:/tmp/mono-test/renamed/bin \</div><div>   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/mono-test/renamed/lib \</div><div>   /tmp/mono-test/renamed/bin/mono /tmp/mono-test/renamed/lib/mono/4.5/sn.exe</div>

<div> </div><div><div>   MONO_GAC_PREFIX=/tmp/mono-test/renamed \</div><div>   PATH=$PATH:/tmp/mono-test/renamed/bin \</div><div>   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/mono-test/renamed/lib \</div><div>   /tmp/mono-test/renamed/bin/mono-sgen /tmp/mono-test/renamed/lib/mono/4.5/sn.exe</div>

<div> </div><div>The first command succeeds (prints out the usage). The second command fails, returning:</div><div> </div><div>   The assembly mscorlib.dll was not found or could not be loaded.<br>   It should have been installed in the `/source/on/build/server/lib/mono/4.5/mscorlib.dll' directory.<br>

</div><div>I have traced the issue to mono/metadata/assembly.c:compute_base:<div> </div><div>   /* Not a well known Mono executable, we are embedded, cant guess the base  */<br>   if (strcmp (p, "/mono") && strcmp (p, "/monodis") && strcmp (p, "/mint") && strcmp (p, "/monodiet"))<br>

        return NULL;<br><br>By changing this as follows, the behavior is corrected:</div><div> </div><div>   /* Not a well known Mono executable, we are embedded, cant guess the base  */<br>   if (strcmp (p, "/mono") && strcmp (p, "/mono-sgen") && strcmp (p, "/monodis") && strcmp (p, "/mint") && strcmp (p, "/monodiet"))<br>

        return NULL;<br></div><div>I have not filed this as a bug or submitted a patch yet, because I am not sure if other binaries should be included in this test as well (e.g. pedump). My preliminary tests using "pedump --verify all" suggest that it should also be added to the "well known" list.</div>

</div></div></div>
<br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div>