[Mono-dev] 'Interesting' difference between ARM and x86
Jon Shemitz
Jon.Shemitz at access-company.com
Thu Aug 20 17:51:11 EDT 2009
So far, I have been very pleasantly surprised at how much Mono on ARM
acts just like .NET on Windows. But, I've been writing some NUnit tests
as I develop a library, and have found that it seems like every Assert
failure leads to
ERROR:class.c:3324:mono_class_setup_vtable_general: assertion failed:
(cur_slot == class->vtable_size)
Stacktrace:
at NUnit.Core.TestMethod.RecordException
(System.Exception,NUnit.Core.TestResult) <0xffffffff>
at NUnit.Core.TestMethod.RecordException
(System.Exception,NUnit.Core.TestResult) <0x00088>
Native stacktrace:
mono [0xe0f48]
[0x41773df4]
Debug info from gdb:
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
Aborted
This has been annoying (and a bit worrisome - what if this is just a
symptom of some underlying weakness? Can I seriously propose that it
would be a good idea to teach our app guys C#?) but I've been inclined
to give Mono the benefit of the doubt, as NUnit does use all sorts of
security and isolation features that my wrapper library does not.
Yesterday, though, I was working at home, without ARM hardware, and ran
my tests in our simulator, running User Mode Linux on an x86. Assert
failures worked just fine!
Now, the kernel versions do vary between the ARM ("OS Version: Unix
2.6.24.7") and x86 UML ("OS Version: Unix 2.6.22.18") environments, but
the assertion failure in class.c sort of suggests that there's some
problem in either the ARM jitter or in the hardware-specific parts of
the CLR itself. ("CLR Version: 2.0.50727.1433 ( Mono 2.4.2 )")
Is this a known issue, or should I go ahead and log it with bugzilla? If
it is a known issue, are there any environment variables or mono
switches that mitigate it?
// Minimal test case:
using NUnit.Framework;
[TestFixture]
public class NunitCrash
{
[Test]
public void AssertionFailure()
{
Assert.AreEqual(1, 2);
}
}
// crashes, just like tests that use glib-sharp and my wrapper library.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20090820/cc37ff77/attachment.html
More information about the Mono-devel-list
mailing list