<div>It&#39;s hard to know if I&#39;ve run into this specific problem or not from your description, but I have experience with the pitfalls of building mono for multi-core arm chips. Some things to try:</div><div><br></div>
- Try starting with -O0 and adding your flags back in one by one. I&#39;ve seen evidence of buggy GCC code generation for ARM that manifests in unpredictable stack corruption and crashes like yours. For my situation (mono 2.10.2 + codesourcery gcc 2009q1), -O is stable, but -O2 is not. <div>
<div><div><br></div><div>- Since you&#39;re dual-core, make extra-special-sure that mono is using MP-safe atomic ops--I know that it does on armv7, but unsure about armv6k. If you configure/build for armv5te, it does not, and you end up with binaries that do bad things on MP ARM systems but work fine on UP systems.</div>
<div><br></div><div>In case a comparison is useful, my arch/opt flags are:</div><div><br></div><div>-march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -O -ffast-math</div><div><br></div><div>and I am using <span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">-DARM_FPU_VFP. The CPU is an </span><span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 16px; background-color: rgb(255, 255, 255); ">APQ8060.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">I never tried with ARM_FPU_NONE, but I could totally see gcc optimizer bugs being hidden by avoiding certain hard fp code generation.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); "><br>
</span></div><div><br><br><div class="gmail_quote">On Sat, Jun 25, 2011 at 9:15 PM, Bill Agee <span dir="ltr">&lt;<a href="mailto:billagee@gmail.com">billagee@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,<br>
<br>
I&#39;m seeing an odd mono crash after cross compiling mono for a Cavium Econa<br>
CNS3420 (a dual-core ARM11).<br>
<br>
I&#39;m using the mono-2.10.2 tarball.<br>
<br>
The CNS3420 appears to support VFP, but when I compile Mono with these<br>
CFLAGS:<br>
<br>
  CFLAGS=&quot;-DARM_FPU_VFP -O3 -march=armv6k -mcpu=mpcore -mfloat-abi=softfp<br>
-mfpu=vfp&quot;<br>
<br>
...I frequently see a crash in mono when running on my target machine.<br>
<br>
The .NET stacktrace varies, but the native stacktrace and error is always<br>
this failed assertion:<br>
<br>
====<br>
wrong maximal instruction length of instruction r4const (expected 20, got<br>
24)<br>
* Assertion: should not be reached at mini-arm.c:4658<br>
<br>
Native stacktrace:<br>
<br>
        mono() [0xa6928]<br>
        /lib/libc.so.6(__default_rt_sa_restorer_v2+0) [0x3575d660]<br>
        /lib/libc.so.6(gsignal+0x40) [0x3575c2fc]<br>
        /lib/libc.so.6(abort+0x1b0) [0x35761b14]<br>
        mono() [0x1ed810]<br>
        mono() [0x1ed854]<br>
        mono() [0xd8e10]<br>
        mono() [0x1c494]<br>
        mono() [0x2166c]<br>
        mono() [0x22b74]<br>
        mono() [0x2342c]<br>
        mono(mono_compile_method+0x18) [0x1a4560]<br>
        mono() [0xaab50]<br>
        mono() [0xab6c4]<br>
<br>
<br>
Aborted<br>
====<br>
<br>
The problem goes away if I compile with -DARM_FPU_NONE instead of<br>
-DARM_FPU_VFP:<br>
<br>
  CFLAGS=&quot;-DARM_FPU_NONE -O3 -march=armv6k -mcpu=mpcore -mfloat-abi=softfp<br>
-mfpu=vfp&quot;<br>
<br>
<br>
Does anyone have any idea what the issue might be?<br>
<br>
Here&#39;s the full build command from my makefile:<br>
<br>
<br>
CC=/usr/local/cavium/cns3xxx-sdk/tools/glibc64k/bin/arm-none-linux-gnueabi-gcc<br>
\<br>
<br>
CXX=/usr/local/cavium/cns3xxx-sdk/tools/glibc64k/bin/arm-none-linux-gnueabi-g++<br>
\<br>
          CFLAGS=&quot;-DARM_FPU_VFP -O3 -march=armv6k -mcpu=mpcore<br>
-mfloat-abi=softfp -mfpu=vfp&quot; \<br>
          ./configure \<br>
          --prefix=/foo \<br>
          --disable-mcs-build \<br>
          --with-profile4=no \<br>
          --with-moonlight=no \<br>
          --host=arm-none-linux-gnueabi \<br>
          --with-tls=pthread \<br>
          --with-sigaltstack=no \<br>
          mono_cv_uscore=${mono_cv_uscore=no} &amp;&amp; \<br>
        make<br>
<br>
<br>
Thanks in advance for any hints/pointers!<br>
<font color="#888888"><br>
<br>
--<br>
View this message in context: <a href="http://mono.1490590.n4.nabble.com/Failed-assertion-on-ARM11-after-compiling-with-DARM-FPU-VFP-tp3625317p3625317.html" target="_blank">http://mono.1490590.n4.nabble.com/Failed-assertion-on-ARM11-after-compiling-with-DARM-FPU-VFP-tp3625317p3625317.html</a><br>

Sent from the Mono - Dev mailing list archive at Nabble.com.<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>
</font></blockquote></div><br></div></div></div>