Rob Wilkens | 1 Jun 2012 02:48
Picon
Gravatar

Control.Dispose glitch?

(This is re: System.Windows.Forms)

IT appears Control.Dispose is destroying the parent window, then 
destroying the children...  Is it supposed to do that?

This is causing some warning messages from X11 in my test code under 
some circumstances, at least when the window is created under another 
thread and it takes the "if (this.InvokeRequired)"==true path (which 
happens when the control was created in a different thread.)  I haven't 
tried to see if other paths lead to this.

The code still runs (no crash), but I get the following warning from X11:
X11 Error encountered:
   Error: BadWindow (invalid Window parameter)
   Request:     4 (0)
   Resource ID: 0x3C0002C
   Serial:      544
....(etc)....

The events leading up to this are (all from same call to Control.Dispose 
for the form):
(1) An XDestroyWindow is sent to the Form which contained the label 
(From DestroyHandle() call path in Control.Dispose).. This succeeds.
(2) An XDestroyWindow is sent to the label when the children[] are being 
disposed (which eventually gets back to their Control.Dispose of their 
own, which then calls DestroyHandle()),and the child label has probably 
already been 'destroyed' by virtue of Destroying the parent form, and 
the result is the BadWindow message above.

I can fix this, I think, by moving the parent delete below the children 
(Continue reading)

Steven Boswell II | 1 Jun 2012 05:25
Picon
Favicon

Patches for mono-winforms

I work in a shop where our apps are written with C# and WinForms.  Thank God for Mono; I'm allowed to do all my work under Linux with Mono, and my code works fine under MS Windows and .NET.

Recently, I ran into a showstopper bug in mono-winforms, and finally decided to look through the code.  I fixed the bug quickly.  That led me to looking for the source of other, non-showstopper bugs I've encountered, and those went quickly too.  Enclosed is an archive with all of the bug fixes I made, which were made against the latest version on GitHub.  (I originally made these bug fixes against version 2.10.5, the most recent one in Fedora Core 16's yum repos.)

Patch 1 implements the EditingControlShowing event in DataGridView.  Before, it wasn't called at all.  I had to split a DataGridViewCell.StyleEditingControl() method off of DataGridViewCell.InitializeEditingControl(); under .NET, ComboBox.Items is initialized before EditingControlShowing is posted, and this split was necessary to get Mono to work that way too.  Styles modified in the EditingControlShowing event are now applied to text-box and checkbox controls too, not just combo-boxes.

Patch 2 resolves different behavior between .NET and Mono when the user leaves a DataGridView.  Under .NET, the last-edited cell is committed; under Mono, changed made to the last-edited cell are lost.  It was a one-line fix.

Patch 3 fires the DataGridView.SelectionChanged event when the selected rows/columns changes.  Before, the values of the SelectedRows and SelectedColumns properties were semi-random during the SelectionChanged event; now they're accurate.

Patches 4 and 5 fix two different exception-throws I encountered when ComboBox.Items.Remove() is called with an item that's not in the combo box.  .NET doesn't throw any exceptions in this case.

Patch 6 fixes the implementation of BackColor on ToolStripItem objects.  Now it behaves like it does under .NET, i.e. the BackColor setting on menu items etc. shows up.

I would very much appreciate it if you would consider committing these changes.  My MS-Windows-oriented co-workers were impressed by how quickly bugs in Mono can be found and fixed.  Who knows, maybe I'll get some converts to open-source.  (It amazes me that this sort of thing still has to be evangelized...sigh.)

Steven Boswell

Attachment (mwf-patches.tar.bz2): application/octet-stream, 2262 bytes
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Stifu | 1 Jun 2012 08:06
Picon
Favicon
Gravatar

Re: Patches for mono-winforms

Hello,

Thanks for your work.

If I'm not mistaken, you reported each of these bugs, right? At least I
could find the two first ones in bugzilla, but didn't go further. Anyway, I
suggest you make pull requests for each bug separately, specifying the bug
number. Also, please include unit tests with each patch, highlighting what
was fixed. I know it's more work, but it will make commiters more confident
with your changes, and will guarantee no one will ever break these parts
again.

Let me know if you need help.

Steven Boswell II wrote
> 
> I work in a shop where our apps are written with C# and WinForms.  Thank
> God for Mono; I'm allowed to do all my work under Linux with Mono, and my
> code works fine under MS Windows and .NET.
> 
> Recently, I ran into a showstopper bug in mono-winforms, and finally
> decided to look through the code.  I fixed the bug quickly.  That led me
> to looking for the source of other, non-showstopper bugs I've encountered,
> and those went quickly too.  Enclosed is an archive with all of the bug
> fixes I made, which were made against the latest version on GitHub.  (I
> originally made these bug fixes against version 2.10.5, the most recent
> one in Fedora Core 16's yum repos.)
> 
> Patch 1 implements the EditingControlShowing event in DataGridView.
>  Before, it wasn't called at all.  I had to split a
> DataGridViewCell.StyleEditingControl() method off of
> DataGridViewCell.InitializeEditingControl(); under .NET, ComboBox.Items is
> initialized before EditingControlShowing is posted, and this split was
> necessary to get Mono to work that way too.  Styles modified in the
> EditingControlShowing event are now applied to text-box and checkbox
> controls too, not just combo-boxes.
> 
> Patch 2 resolves different behavior between .NET and Mono when the user
> leaves a DataGridView.  Under .NET, the last-edited cell is committed;
> under Mono, changed made to the last-edited cell are lost.  It was a
> one-line fix.
> 
> Patch 3 fires the DataGridView.SelectionChanged event when the selected
> rows/columns changes.  Before, the values of the SelectedRows and
> SelectedColumns properties were semi-random during the SelectionChanged
> event; now they're accurate.
> 
> Patches 4 and 5 fix two different exception-throws I encountered when
> ComboBox.Items.Remove() is called with an item that's not in the combo
> box.  .NET doesn't throw any exceptions in this case.
> 
> Patch 6 fixes the implementation of BackColor on ToolStripItem objects.
>  Now it behaves like it does under .NET, i.e. the BackColor setting on
> menu items etc. shows up.
> 
> I would very much appreciate it if you would consider committing these
> changes.  My MS-Windows-oriented co-workers were impressed by how quickly
> bugs in Mono can be found and fixed.  Who knows, maybe I'll get some
> converts to open-source.  (It amazes me that this sort of thing still has
> to be evangelized...sigh.)
> 
> Steven Boswell
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list <at> .ximian
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 

--
View this message in context: http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649621.html
Sent from the Mono - Dev mailing list archive at Nabble.com.
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Dennis Krzyzaniak | 1 Jun 2012 12:29
Favicon

Mono runtime on ARM920t with many assertions

Hi all,

 

I am trying to get Mono running on a spider III device including an ARM920t processor with Linux as OS.

 

/host $ uname -a

Linux Spider-III 2.6.17.3-axo-s07.2 #1425 Fri Jul 25 10:59:30 CEST 2008 armv4tl unknown

 

When I try to invoke a simple hello_world.exe I get 399 assertions in eglib (always the same asserts):

 

/host $ ./mono hello_world.exe

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

 

The ‘Hello World’ is also displayed:

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

Hello World../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

 

The hello world code:

using System;

namespace foobar {

   public class foo {

      public static void Main(string[] args) {

         Console.WriteLine("Hello World");

      }

   }

}

 

I am absolutely new to Mono and completely lost with this behavior. Maybe someone knows the reason or can point me to a direction to find the issue?

I attached a trace (./mono –trace hello_world.exe), maybe this helps? The trace is cut to fit into this mail, please let me know if a full trace is needed.

 

I am using the debian source package of Mono 2_10_8.1-1 because in the official release a unittest fails.

To get Mono build with the ‘old’ ARM  toolchain provided by the vendor I made a few changes in the project please see below.

I am calling configure with the following parameters:

configure  --build=i686-pc-linux-gnu --host=arm-axotec-linux-gnu LD=arm-axotec-linux-gnu-ld OBJDUMP=arm-axotec-linux-gnu-objdump --prefix=/host --disable-mcs-build --srcdir=../..

 

configure.in:

+

+dnl

+dnl BEGIN Conworx Spider III ARMv4t settings

+dnl there are already arm-*-linux* settings below but the place is to late, checks which

+dnl tested before fails. So I added my specific stuff here without changing the old

+dnl settings.

+dnl

+if test "x$host" = "xarm-axotec-linux-gnu"; then

+dnl looks like this are all needed settings, the rest is redundant.

+  TARGET=ARM;

+  cross_compiling=yes

+  dnl which defines are needed? just copied some

+  dnl CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -D__ARM_EABI__"

+  CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -mcpu=arm920t -D__ARM_ARCH_4__"

+  CPPFLAGS="$CPPFLAGS -DNO_THUMB2_INSTRUCTIONS"

+  arch_target=arm;

+  ACCESS_UNALIGNED="no"

+  JIT_SUPPORTED=yes

+  jit_wanted=true

+  sgen_supported=true

+  dnl Can't use tls, since it depends on the runtime detection of tls offsets

+  dnl  in mono-compiler.h

+  libgc_threads=pthreads

+  with_tls=pthread

+  use_sigposix=yes

+  dnl Enable support for using sigaltstack for SIGSEGV and

+  dnl stack overflow handling (TODO not sure if it works on my arm)

+  with_sigaltstack=no

+  dnl to bypass the underscore linker check, can't work when cross-compiling

+  mono_cv_uscore=yes

+  dnl support ahead of time compilation

+  AOT_SUPPORTED="yes"

+  libdl="-ldl"

+  dnl I need some define to enable my hacks oO

+  AC_DEFINE(PLATFORM_AXOTEC_LINUX,1,[Targeting axotec linux on arm920t])

+fi

+

 

+# Added LT_OUTPUT to generate libtool script by config.lt before calling it.

+LT_OUTPUT

export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`

AC_SUBST(export_ldflags)

 

+dnl the check for cross compiling is included in the mono release but removed

+dnl in the debian source package because for the debian distribution no cross

+dnl compiling is used.

+if test ${TARGET} = ARM  && test x$cross_compiling = xno; then

   dnl ******************************************

   dnl *** Check to see what FPU is available ***

   dnl ******************************************

 

 

 

mono/metadata/sgen-archdep.h:

 

/* We dont store ip, sp */

#define ARCH_NUM_REGS 14

+/* arm920t does not support thumb2 instructions */

+#if !defined (NO_THUMB2_INSTRUCTIONS)

+/* THUMB2 instuctions */

#define ARCH_STORE_REGS(ptr)    \

   __asm__ __volatile__(         \

      "push {lr}\n"           \

<at> <at> -145,6 +148,17 <at> <at>

      :                    \

      : "r" (ptr)             \

   )

+#else /* NO_THUMB2_INSTRUCTIONS */

+/* ARM instuctions */

+#define ARCH_STORE_REGS(ptr) \

+   __asm__ __volatile__( \

+         "stmfd sp!, {lr}\n" \

+         "mov lr, %0\n" \

+         "stmia lr!, {r0-r12}\n" \

+         "ldmfd sp!, {lr}\n" \

+         : \

+         : "r" (ptr))

+#endif /* NO_THUMB2_INSTRUCTIONS */

 

 

 

mono/mini/jit-icalls.c:

 

#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT

+#if defined (PLATFORM_AXOTEC_LINUX)

+   /* ULLONG_MAX is not defined, just define here the max size of an unsigend

+    * long long int. */

+#ifndef ULLONG_MAX

+#define ULLONG_MAX   18446744073709551615ULL

+#endif /* !ULLONG_MAX */

+#endif /* PLATFORM_AXOTEC_LINUX */

   if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {

      mono_raise_exception (mono_get_exception_overflow ());

 

 

Would be great to get some help!

 

 

Best regards,

Dennis Krzyzaniak

 

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.00003 0] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.00076 1] ENTER: System.OutOfMemoryException:.ctor (string)() ip: (nil)
[0x4000: 0.00403 2] ENTER: System.SystemException:.ctor (string)() ip: (nil)
[0x4000: 0.00696 3] ENTER: System.Exception:.ctor (string)() ip: (nil)
[0x4000: 0.00739 3] LEAVE: System.Exception:.ctor (string)
[0x4000: 0.00824 2] LEAVE: System.SystemException:.ctor (string)
[0x4000: 0.00885 1] LEAVE: System.OutOfMemoryException:.ctor (string)
[0x4000: 0.00943 0] LEAVE: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.01480 0] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.01529 1] ENTER: System.NullReferenceException:.ctor (string)() ip: (nil)
[0x4000: 0.01587 2] ENTER: System.SystemException:.ctor (string)() ip: (nil)
[0x4000: 0.01630 3] ENTER: System.Exception:.ctor (string)() ip: (nil)
[0x4000: 0.01666 3] LEAVE: System.Exception:.ctor (string)
[0x4000: 0.01721 2] LEAVE: System.SystemException:.ctor (string)
[0x4000: 0.01776 1] LEAVE: System.NullReferenceException:.ctor (string)
[0x4000: 0.01855 0] LEAVE: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.02335 0] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.02383 1] ENTER: System.StackOverflowException:.ctor (string)() ip: (nil)
[0x4000: 0.02441 2] ENTER: System.SystemException:.ctor (string)() ip: (nil)
[0x4000: 0.02484 3] ENTER: System.Exception:.ctor (string)() ip: (nil)
[0x4000: 0.02521 3] LEAVE: System.Exception:.ctor (string)
[0x4000: 0.02579 2] LEAVE: System.SystemException:.ctor (string)
[0x4000: 0.02631 1] LEAVE: System.StackOverflowException:.ctor (string)
[0x4000: 0.02689 0] LEAVE: (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)[OBJECT:(nil)]
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.07587 0] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_void_object
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.07629 1] ENTER: foobar.foo:Main (string[])() ip: (nil)
[0x4000: 0.16626 2] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.16702 3] ENTER: System.Console:.cctor ()() ip: (nil)
[0x4000: 0.17047 4] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.17093 4] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[.InternalCancelHandler:0x4065ff18]
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.20511 4] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.20578 5] ENTER: System.Text.Encoding:.cctor ()() ip: (nil)
[0x4000: 0.20889 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)() ip: (nil)
[0x4000: 0.20972 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)[System.Object[]:0x40688f00]
[0x4000: 0.21295 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.21344 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654fa0:0]
[0x4000: 0.21851 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.21893 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.21945 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.21982 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22031 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22067 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22113 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22150 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22195 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22244 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22290 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22327 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22373 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22409 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22455 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22492 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22534 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22571 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22617 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22653 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22711 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22748 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22794 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.22830 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.22900 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.22943 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f90:0]
[0x4000: 0.22998 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23035 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23080 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23117 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23163 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23206 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23258 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23294 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23340 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23373 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23419 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23456 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23502 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23535 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23602 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.23642 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f80:0]
[0x4000: 0.23694 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23734 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23779 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23816 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23862 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23895 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.23944 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.23978 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24024 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24060 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24106 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24143 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24219 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.24262 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f70:0]
[0x4000: 0.24316 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24350 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24396 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24432 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24490 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24527 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24573 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24610 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24658 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24692 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24738 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24774 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.24838 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.24881 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f60:0]
[0x4000: 0.24933 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.24970 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25015 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25052 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25098 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25134 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25208 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.25250 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f50:0]
[0x4000: 0.25302 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25339 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25384 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25421 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25467 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25504 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25549 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25586 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25653 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.25693 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f40:0]
[0x4000: 0.25745 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25778 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25827 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.25861 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.25928 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)() ip: (nil)
[0x4000: 0.25970 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree_box (intptr)[INT32:0x40654f30:0]
[0x4000: 0.26019 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.26059 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.26105 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.26141 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.26196 6] ENTER: (wrapper stelemref) object:virt_stelemref_object (intptr,object)() ip: (nil)
[0x4000: 0.26245 6] LEAVE: (wrapper stelemref) object:virt_stelemref_object (intptr,object)
[0x4000: 0.26550 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)() ip: (nil)
[0x4000: 0.26596 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)[System.Object:0x40683ff0]
[0x4000: 0.26657 5] LEAVE: System.Text.Encoding:.cctor ()
[0x4000: 0.26715 4] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.26807 4] ENTER: (wrapper managed-to-native) System.Text.Encoding:InternalCodePage
(int&)() ip: (nil)
[0x4000: 0.26898 4] LEAVE: (wrapper managed-to-native) System.Text.Encoding:InternalCodePage
(int&)[STRING:null], 
[0x4000: 0.28146 4] ENTER: System.Text.Encoding:get_Default ()() ip: (nil)
[0x4000: 0.28497 5] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)()
ip: (nil)
[0x4000: 0.28555 5] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)
[0x4000: 0.28644 5] ENTER: (wrapper managed-to-native) System.Text.Encoding:InternalCodePage
(int&)() ip: (nil)
[0x4000: 0.28699 5] LEAVE: (wrapper managed-to-native) System.Text.Encoding:InternalCodePage
(int&)[STRING:null], 
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.32791 5] ENTER: System.Text.Encoding:GetEncoding (int)() ip: (nil)
[0x4000: 0.34027 6] ENTER: System.Text.Encoding:get_ASCII ()() ip: (nil)
[0x4000: 0.34100 7] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)()
ip: (nil)
[0x4000: 0.34149 7] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)
[0x4000: 0.34216 7] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.34262 7] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.ASCIIEncoding:0x4065ef90]
[0x4000: 0.34705 7] ENTER: System.Text.ASCIIEncoding:.ctor ()() ip: (nil)
[0x4000: 0.35498 8] ENTER: System.Text.Encoding:.ctor (int)() ip: (nil)
[0x4000: 0.36566 9] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.36612 10] ENTER: System.Text.DecoderFallback:.cctor ()() ip: (nil)
[0x4000: 0.36655 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)() ip: (nil)
[0x4000: 0.36694 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)[System.Text.DecoderExceptionFallback:0x40683fe8]
[0x4000: 0.36960 11] ENTER: System.Text.DecoderExceptionFallback:.ctor ()() ip: (nil)
[0x4000: 0.37167 12] ENTER: System.Text.DecoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.37219 12] LEAVE: System.Text.DecoderFallback:.ctor ()
[0x4000: 0.37280 11] LEAVE: System.Text.DecoderExceptionFallback:.ctor ()
[0x4000: 0.37335 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.37378 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.DecoderReplacementFallback:0x40385cf0]
[0x4000: 0.37637 11] ENTER: System.Text.DecoderReplacementFallback:.ctor ()() ip: (nil)
[0x4000: 0.38025 12] ENTER: System.Text.DecoderReplacementFallback:.ctor (string)() ip: (nil)
[0x4000: 0.38098 13] ENTER: System.Text.DecoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.38141 13] LEAVE: System.Text.DecoderFallback:.ctor ()
[0x4000: 0.38208 12] LEAVE: System.Text.DecoderReplacementFallback:.ctor (string)
[0x4000: 0.38278 11] LEAVE: System.Text.DecoderReplacementFallback:.ctor ()
[0x4000: 0.38336 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.38379 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.DecoderReplacementFallback:0x40385ce0]
[0x4000: 0.38452 11] ENTER: System.Text.DecoderReplacementFallback:.ctor (string)() ip: (nil)
[0x4000: 0.38495 12] ENTER: System.Text.DecoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.38532 12] LEAVE: System.Text.DecoderFallback:.ctor ()
[0x4000: 0.38583 11] LEAVE: System.Text.DecoderReplacementFallback:.ctor (string)
[0x4000: 0.38638 10] LEAVE: System.Text.DecoderFallback:.cctor ()
[0x4000: 0.38693 9] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.38882 9] ENTER: System.Text.DecoderFallback:get_ReplacementFallback ()() ip: (nil)
[0x4000: 0.38925 9] LEAVE: System.Text.DecoderFallback:get_ReplacementFallback ()[System.Text.DecoderReplacementFallback:0x40385cf0]
[0x4000: 0.39975 9] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.40024 10] ENTER: System.Text.EncoderFallback:.cctor ()() ip: (nil)
[0x4000: 0.40064 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)() ip: (nil)
[0x4000: 0.40103 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)[System.Text.EncoderExceptionFallback:0x40683fe0]
[0x4000: 0.40375 11] ENTER: System.Text.EncoderExceptionFallback:.ctor ()() ip: (nil)
[0x4000: 0.40595 12] ENTER: System.Text.EncoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.40637 12] LEAVE: System.Text.EncoderFallback:.ctor ()
[0x4000: 0.40695 11] LEAVE: System.Text.EncoderExceptionFallback:.ctor ()
[0x4000: 0.40750 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.40793 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.EncoderReplacementFallback:0x40385ca0]
[0x4000: 0.41055 11] ENTER: System.Text.EncoderReplacementFallback:.ctor ()() ip: (nil)
[0x4000: 0.41391 12] ENTER: System.Text.EncoderReplacementFallback:.ctor (string)() ip: (nil)
[0x4000: 0.41464 13] ENTER: System.Text.EncoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.41504 13] LEAVE: System.Text.EncoderFallback:.ctor ()
[0x4000: 0.41562 12] LEAVE: System.Text.EncoderReplacementFallback:.ctor (string)
[0x4000: 0.41617 11] LEAVE: System.Text.EncoderReplacementFallback:.ctor ()
[0x4000: 0.41672 11] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.41714 11] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.EncoderReplacementFallback:0x40385c90]
[0x4000: 0.41785 11] ENTER: System.Text.EncoderReplacementFallback:.ctor (string)() ip: (nil)
[0x4000: 0.41828 12] ENTER: System.Text.EncoderFallback:.ctor ()() ip: (nil)
[0x4000: 0.41867 12] LEAVE: System.Text.EncoderFallback:.ctor ()
[0x4000: 0.41919 11] LEAVE: System.Text.EncoderReplacementFallback:.ctor (string)
[0x4000: 0.41971 10] LEAVE: System.Text.EncoderFallback:.cctor ()
[0x4000: 0.42026 9] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.42212 9] ENTER: System.Text.EncoderFallback:get_ReplacementFallback ()() ip: (nil)
[0x4000: 0.42267 9] LEAVE: System.Text.EncoderFallback:get_ReplacementFallback ()[System.Text.EncoderReplacementFallback:0x40385ca0]
[0x4000: 0.42328 8] LEAVE: System.Text.Encoding:.ctor (int)
[0x4000: 0.42383 7] LEAVE: System.Text.ASCIIEncoding:.ctor ()
[0x4000: 0.42676 7] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)()
ip: (nil)
[0x4000: 0.42728 7] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)
[0x4000: 0.42795 6] LEAVE: System.Text.Encoding:get_ASCII ()[System.Text.ASCIIEncoding:0x4065ef90]
[0x4000: 0.42856 5] LEAVE: System.Text.Encoding:GetEncoding (int)[System.Text.ASCIIEncoding:0x4065ef90]
[0x4000: 0.42941 5] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)()
ip: (nil)
[0x4000: 0.42987 5] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)
[0x4000: 0.43045 4] LEAVE: System.Text.Encoding:get_Default ()[System.Text.ASCIIEncoding:0x4065ef90]
[0x4000: 0.43576 4] ENTER: System.Console:OpenStandardError (int)() ip: (nil)
[0x4000: 0.44479 5] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.44525 6] ENTER: System.IO.MonoIO:.cctor ()() ip: (nil)
[0x4000: 0.44565 6] LEAVE: System.IO.MonoIO:.cctor ()
[0x4000: 0.44620 5] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.44699 5] ENTER: (wrapper managed-to-native) System.IO.MonoIO:get_ConsoleError ()() ip: (nil)
[0x4000: 0.44812 5] LEAVE: (wrapper managed-to-native) System.IO.MonoIO:get_ConsoleError ()result=2
[0x4000: 0.46686 5] ENTER: System.Console:Open (intptr,System.IO.FileAccess,int)() ip: (nil)
[0x4000: 0.47006 6] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)() ip: (nil)
[0x4000: 0.47064 6] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)[System.IO.FileStream:0x40658f50]
[0x4000: 0.47833 6] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.47879 7] ENTER: System.IO.FileStream:.cctor ()() ip: (nil)
[0x4000: 0.47919 8] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)() ip: (nil)
[0x4000: 0.47958 8] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_ptrfree (intptr)[System.Object:0x40683fd8]
[0x4000: 0.48016 7] LEAVE: System.IO.FileStream:.cctor ()
[0x4000: 0.48074 6] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.48160 6] ENTER: (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor
(intptr,System.IO.FileAccess,bool,int,bool,bool)() ip: (nil)
[0x4000: 0.49896 7] ENTER: System.IO.FileStream:.ctor
(intptr,System.IO.FileAccess,bool,int,bool,bool)() ip: (nil)
[0x4000: 0.50458 8] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.50507 9] ENTER: System.IO.Stream:.cctor ()() ip: (nil)
[0x4000: 0.50546 10] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)() ip: (nil)
[0x4000: 0.50586 10] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)[System.IO.NullStream:0x40385c40]
[0x4000: 0.50922 10] ENTER: (wrapper remoting-invoke-with-check) System.IO.NullStream:.ctor ()()
ip: (nil)
[0x4000: 0.51163 11] ENTER: System.IO.NullStream:.ctor ()() ip: (nil)
[0x4000: 0.51245 12] ENTER: System.IO.Stream:.ctor ()() ip: (nil)
[0x4000: 0.51453 13] ENTER: System.MarshalByRefObject:.ctor ()() ip: (nil)
[0x4000: 0.51496 13] LEAVE: System.MarshalByRefObject:.ctor ()
[0x4000: 0.51553 12] LEAVE: System.IO.Stream:.ctor ()
[0x4000: 0.51608 11] LEAVE: System.IO.NullStream:.ctor ()
[0x4000: 0.51663 10] LEAVE: (wrapper remoting-invoke-with-check) System.IO.NullStream:.ctor ()
[0x4000: 0.51715 9] LEAVE: System.IO.Stream:.cctor ()
[0x4000: 0.51770 8] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.51862 8] ENTER: System.IO.Stream:.ctor ()() ip: (nil)
[0x4000: 0.51907 9] ENTER: System.MarshalByRefObject:.ctor ()() ip: (nil)
[0x4000: 0.51944 9] LEAVE: System.MarshalByRefObject:.ctor ()
[0x4000: 0.51999 8] LEAVE: System.IO.Stream:.ctor ()
[0x4000: 0.52335 8] ENTER: (wrapper managed-to-native) System.IO.MonoIO:GetFileType
(intptr,System.IO.MonoIOError&)() ip: (nil)
[0x4000: 0.52405 8] LEAVE: (wrapper managed-to-native) System.IO.MonoIO:GetFileType (intptr,System.IO.MonoIOError&)result=2
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.54279 8] ENTER: System.IO.FileStream:InitBuffer (int,bool)() ip: (nil)
[0x4000: 0.54346 9] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)() ip: (nil)
[0x4000: 0.54395 9] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)[System.Byte[]:0x40660f18]
[0x4000: 0.54453 8] LEAVE: System.IO.FileStream:InitBuffer (int,bool)
[0x4000: 0.54517 7] LEAVE: System.IO.FileStream:.ctor (intptr,System.IO.FileAccess,bool,int,bool,bool)
[0x4000: 0.54581 6] LEAVE: (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (intptr,System.IO.FileAccess,bool,int,bool,bool)
[0x4000: 0.54642 5] LEAVE: System.Console:Open (intptr,System.IO.FileAccess,int)[System.IO.FileStream:0x40658f50]
[0x4000: 0.54694 4] LEAVE: System.Console:OpenStandardError (int)[System.IO.FileStream:0x40658f50]
[0x4000: 0.54770 4] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)() ip: (nil)
[0x4000: 0.54828 4] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)[System.IO.UnexceptionalStreamWriter:0x4065fee0]
[0x4000: 0.55215 4] ENTER: (wrapper remoting-invoke-with-check)
System.IO.UnexceptionalStreamWriter:.ctor (System.IO.Stream,System.Text.Encoding)() ip: (nil)
[0x4000: 0.55521 5] ENTER: System.IO.UnexceptionalStreamWriter:.ctor
(System.IO.Stream,System.Text.Encoding)() ip: (nil)
[0x4000: 0.56186 6] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.56241 7] ENTER: System.IO.StreamWriter:.cctor ()() ip: (nil)
[0x4000: 0.57272 8] ENTER: System.Text.Encoding:get_UTF8Unmarked ()() ip: (nil)
[0x4000: 0.57349 9] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)()
ip: (nil)
[0x4000: 0.57398 9] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Enter (object)
[0x4000: 0.57456 9] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)() ip: (nil)
[0x4000: 0.57501 9] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_fast (intptr)[System.Text.UTF8Encoding:0x4065fea8]
[0x4000: 0.58365 9] ENTER: System.Text.UTF8Encoding:.ctor (bool,bool)() ip: (nil)
[0x4000: 0.58429 10] ENTER: System.Text.Encoding:.ctor (int)() ip: (nil)
[0x4000: 0.58655 11] ENTER: System.Text.DecoderFallback:get_StandardSafeFallback ()() ip: (nil)
[0x4000: 0.58701 11] LEAVE: System.Text.DecoderFallback:get_StandardSafeFallback ()[System.Text.DecoderReplacementFallback:0x40385ce0]
[0x4000: 0.58939 11] ENTER: System.Text.EncoderFallback:get_StandardSafeFallback ()() ip: (nil)
[0x4000: 0.58984 11] LEAVE: System.Text.EncoderFallback:get_StandardSafeFallback ()[System.Text.EncoderReplacementFallback:0x40385c90]
[0x4000: 0.59042 10] LEAVE: System.Text.Encoding:.ctor (int)
[0x4000: 0.59357 10] ENTER: System.Text.Encoding:SetFallbackInternal
(System.Text.EncoderFallback,System.Text.DecoderFallback)() ip: (nil)
[0x4000: 0.59415 10] LEAVE: System.Text.Encoding:SetFallbackInternal (System.Text.EncoderFallback,System.Text.DecoderFallback)
[0x4000: 0.59473 9] LEAVE: System.Text.UTF8Encoding:.ctor (bool,bool)
[0x4000: 0.59555 9] ENTER: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)()
ip: (nil)
[0x4000: 0.59604 9] LEAVE: (wrapper managed-to-native) System.Threading.Monitor:Exit (object)
[0x4000: 0.59656 8] LEAVE: System.Text.Encoding:get_UTF8Unmarked ()[System.Text.UTF8Encoding:0x4065fea8]
[0x4000: 0.59714 8] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)() ip: (nil)
[0x4000: 0.59769 8] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)[System.IO.StreamWriter:0x4065fe70]
[0x4000: 0.60162 8] ENTER: (wrapper remoting-invoke-with-check) System.IO.StreamWriter:.ctor
(System.IO.Stream,System.Text.Encoding,int)() ip: (nil)
[0x4000: 0.60840 9] ENTER: System.IO.StreamWriter:.ctor
(System.IO.Stream,System.Text.Encoding,int)() ip: (nil)
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.61887 10] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.61932 11] ENTER: System.IO.TextWriter:.cctor ()() ip: (nil)
[0x4000: 0.61975 12] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)() ip: (nil)
[0x4000: 0.62015 12] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_object_new_specific (intptr)[.NullTextWriter:0x40387fa8]
[0x4000: 0.62372 12] ENTER: (wrapper remoting-invoke-with-check)
System.IO.TextWriter/NullTextWriter:.ctor ()() ip: (nil)
[0x4000: 0.62616 13] ENTER: System.IO.TextWriter/NullTextWriter:.ctor ()() ip: (nil)
[0x4000: 0.62695 14] ENTER: System.IO.TextWriter:.ctor ()() ip: (nil)
[0x4000: 0.62756 15] ENTER: System.MarshalByRefObject:.ctor ()() ip: (nil)
[0x4000: 0.62799 15] LEAVE: System.MarshalByRefObject:.ctor ()
[0x4000: 0.63260 15] ENTER: System.Environment:get_NewLine ()() ip: (nil)
[0x4000: 0.63550 16] ENTER: (wrapper managed-to-native) System.Environment:GetNewLine ()() ip: (nil)
[0x4000: 0.63608 16] LEAVE: (wrapper managed-to-native) System.Environment:GetNewLine ()[STRING:0x40654ec0:
]
[0x4000: 0.63672 15] LEAVE: System.Environment:get_NewLine ()[STRING:0x40654ec0:
]
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
[0x4000: 0.66187 15] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void
(object,intptr,intptr,intptr)() ip: (nil)
[0x4000: 0.66226 16] ENTER: string:.cctor ()() ip: (nil)
[0x4000: 0.66577 17] ENTER: (wrapper managed-to-native) string:GetLOSLimit ()() ip: (nil)
[0x4000: 0.66620 17] LEAVE: (wrapper managed-to-native) string:GetLOSLimit ()result=2147483647
[0x4000: 0.66678 17] ENTER: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)() ip: (nil)
[0x4000: 0.66724 17] LEAVE: (wrapper managed-to-native)
object:__icall_wrapper_mono_array_new_specific (intptr,int)[System.Char[]:0x40389eb0]
[0x4000: 0.67459 17] ENTER: string:memcpy (byte*,byte*,int)() ip: (nil)
[0x4000: 0.67905 18] ENTER: string:memcpy4 (byte*,byte*,int)() ip: (nil)
[0x4000: 0.67954 18] LEAVE: string:memcpy4 (byte*,byte*,int)
[0x4000: 0.68005 17] LEAVE: string:memcpy (byte*,byte*,int)
[0x4000: 0.68048 16] LEAVE: string:.cctor ()
[0x4000: 0.68103 15] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)[OBJECT:(nil)]
[0x4000: 0.68167 15] ENTER: string:ToCharArray ()() ip: (nil)
../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed
../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Rob Wilkens | 1 Jun 2012 13:44
Picon
Gravatar

Re: Mono runtime on ARM920t with many assertions


I don't have a similar failure with the same version as build by the debian package that ubuntu ships with (which is the same version 2.10.8.1)....  But i'm on a different platform i believe (x86-64).

I looked at the ubuntu source, and it appears to be failing here for you:
 g_return_val_if_fail (hash != NULL, FALSE);

In Line 293 it's at method:
g_hash_table_lookup_extended (GHashTable *hash, gconstpointer key, gpointer *orig_key, gpointer *value)

In line 236 it's at method:
g_hash_table_insert_replace (GHashTable *hash, gpointer key, gpointer value, gboolean replace)

You could try to debug that with gdb or something, but It looks like eglib (from the README in that directory) is a compatible glib that is built separately and not always installed except under conditions where novell needs a custom glib that is compatible with the regular glib but under a different license.  Is there a reason you are using eglib?  Is the regular glib not installed?  Maybe try instead apt-get source libglib2.0-dev and build and install that instead?  (and don't use eglib unless necessary?)



On 06/01/2012 06:29 AM, Dennis Krzyzaniak wrote:

Hi all,

 

I am trying to get Mono running on a spider III device including an ARM920t processor with Linux as OS.

 

/host $ uname -a

Linux Spider-III 2.6.17.3-axo-s07.2 #1425 Fri Jul 25 10:59:30 CEST 2008 armv4tl unknown

 

When I try to invoke a simple hello_world.exe I get 399 assertions in eglib (always the same asserts):

 

/host $ ./mono hello_world.exe

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

 

The ‘Hello World’ is also displayed:

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

Hello World../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

 

The hello world code:

using System;

namespace foobar {

   public class foo {

      public static void Main(string[] args) {

         Console.WriteLine("Hello World");

      }

   }

}

 

I am absolutely new to Mono and completely lost with this behavior. Maybe someone knows the reason or can point me to a direction to find the issue?

I attached a trace (./mono –trace hello_world.exe), maybe this helps? The trace is cut to fit into this mail, please let me know if a full trace is needed.

 

I am using the debian source package of Mono 2_10_8.1-1 because in the official release a unittest fails.

To get Mono build with the ‘old’ ARM  toolchain provided by the vendor I made a few changes in the project please see below.

I am calling configure with the following parameters:

configure  --build=i686-pc-linux-gnu --host=arm-axotec-linux-gnu LD=arm-axotec-linux-gnu-ld OBJDUMP=arm-axotec-linux-gnu-objdump --prefix=/host --disable-mcs-build --srcdir=../..

 

configure.in:

+

+dnl

+dnl BEGIN Conworx Spider III ARMv4t settings

+dnl there are already arm-*-linux* settings below but the place is to late, checks which

+dnl tested before fails. So I added my specific stuff here without changing the old

+dnl settings.

+dnl

+if test "x$host" = "xarm-axotec-linux-gnu"; then

+dnl looks like this are all needed settings, the rest is redundant.

+  TARGET=ARM;

+  cross_compiling=yes

+  dnl which defines are needed? just copied some

+  dnl CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -D__ARM_EABI__"

+  CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -mcpu=arm920t -D__ARM_ARCH_4__"

+  CPPFLAGS="$CPPFLAGS -DNO_THUMB2_INSTRUCTIONS"

+  arch_target=arm;

+  ACCESS_UNALIGNED="no"

+  JIT_SUPPORTED=yes

+  jit_wanted=true

+  sgen_supported=true

+  dnl Can't use tls, since it depends on the runtime detection of tls offsets

+  dnl  in mono-compiler.h

+  libgc_threads=pthreads

+  with_tls=pthread

+  use_sigposix=yes

+  dnl Enable support for using sigaltstack for SIGSEGV and

+  dnl stack overflow handling (TODO not sure if it works on my arm)

+  with_sigaltstack=no

+  dnl to bypass the underscore linker check, can't work when cross-compiling

+  mono_cv_uscore=yes

+  dnl support ahead of time compilation

+  AOT_SUPPORTED="yes"

+  libdl="-ldl"

+  dnl I need some define to enable my hacks oO

+  AC_DEFINE(PLATFORM_AXOTEC_LINUX,1,[Targeting axotec linux on arm920t])

+fi

+

 

+# Added LT_OUTPUT to generate libtool script by config.lt before calling it.

+LT_OUTPUT

export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`

AC_SUBST(export_ldflags)

 

+dnl the check for cross compiling is included in the mono release but removed

+dnl in the debian source package because for the debian distribution no cross

+dnl compiling is used.

+if test ${TARGET} = ARM  && test x$cross_compiling = xno; then

   dnl ******************************************

   dnl *** Check to see what FPU is available ***

   dnl ******************************************

 

 

 

mono/metadata/sgen-archdep.h:

 

/* We dont store ip, sp */

#define ARCH_NUM_REGS 14

+/* arm920t does not support thumb2 instructions */

+#if !defined (NO_THUMB2_INSTRUCTIONS)

+/* THUMB2 instuctions */

#define ARCH_STORE_REGS(ptr)    \

   __asm__ __volatile__(         \

      "push {lr}\n"           \

<at> <at> -145,6 +148,17 <at> <at>

      :                    \

      : "r" (ptr)             \

   )

+#else /* NO_THUMB2_INSTRUCTIONS */

+/* ARM instuctions */

+#define ARCH_STORE_REGS(ptr) \

+   __asm__ __volatile__( \

+         "stmfd sp!, {lr}\n" \

+         "mov lr, %0\n" \

+         "stmia lr!, {r0-r12}\n" \

+         "ldmfd sp!, {lr}\n" \

+         : \

+         : "r" (ptr))

+#endif /* NO_THUMB2_INSTRUCTIONS */

 

 

 

mono/mini/jit-icalls.c:

 

#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT

+#if defined (PLATFORM_AXOTEC_LINUX)

+   /* ULLONG_MAX is not defined, just define here the max size of an unsigend

+    * long long int. */

+#ifndef ULLONG_MAX

+#define ULLONG_MAX   18446744073709551615ULL

+#endif /* !ULLONG_MAX */

+#endif /* PLATFORM_AXOTEC_LINUX */

   if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {

      mono_raise_exception (mono_get_exception_overflow ());

 

 

Would be great to get some help!

 

 

Best regards,

Dennis Krzyzaniak

 



_______________________________________________ Mono-devel-list mailing list Mono-devel-list <at> lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Rafael Teixeira | 1 Jun 2012 13:48
Picon
Gravatar

Re: Mono runtime on ARM920t with many assertions

Apparently some natives hashtables are receiving null hashs in the runtime. 

Probably you need to follow the calls to find why the callers are passing those nulls, it may be that some native library (dependency) in your environment isn't returning what is expected to the callers.

Good hunt,

Rafael "Monoman" Teixeira
---------------------------------------
"The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' (I found it!) but 'That's funny ...'"
Isaac Asimov
US science fiction novelist & scholar (1920 - 1992)


On Fri, Jun 1, 2012 at 7:29 AM, Dennis Krzyzaniak <dkml <at> conworx.com> wrote:

Hi all,

 

I am trying to get Mono running on a spider III device including an ARM920t processor with Linux as OS.

 

/host $ uname -a

Linux Spider-III 2.6.17.3-axo-s07.2 #1425 Fri Jul 25 10:59:30 CEST 2008 armv4tl unknown

 

When I try to invoke a simple hello_world.exe I get 399 assertions in eglib (always the same asserts):

 

/host $ ./mono hello_world.exe

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

 

The ‘Hello World’ is also displayed:

../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed

Hello World../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed

 

The hello world code:

using System;

namespace foobar {

   public class foo {

      public static void Main(string[] args) {

         Console.WriteLine("Hello World");

      }

   }

}

 

I am absolutely new to Mono and completely lost with this behavior. Maybe someone knows the reason or can point me to a direction to find the issue?

I attached a trace (./mono –trace hello_world.exe), maybe this helps? The trace is cut to fit into this mail, please let me know if a full trace is needed.

 

I am using the debian source package of Mono 2_10_8.1-1 because in the official release a unittest fails.

To get Mono build with the ‘old’ ARM  toolchain provided by the vendor I made a few changes in the project please see below.

I am calling configure with the following parameters:

configure  --build=i686-pc-linux-gnu --host=arm-axotec-linux-gnu LD=arm-axotec-linux-gnu-ld OBJDUMP=arm-axotec-linux-gnu-objdump --prefix=/host --disable-mcs-build --srcdir=../..

 

configure.in:

+

+dnl

+dnl BEGIN Conworx Spider III ARMv4t settings

+dnl there are already arm-*-linux* settings below but the place is to late, checks which

+dnl tested before fails. So I added my specific stuff here without changing the old

+dnl settings.

+dnl

+if test "x$host" = "xarm-axotec-linux-gnu"; then

+dnl looks like this are all needed settings, the rest is redundant.

+  TARGET=ARM;

+  cross_compiling=yes

+  dnl which defines are needed? just copied some

+  dnl CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -D__ARM_EABI__"

+  CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -mcpu=arm920t -D__ARM_ARCH_4__"

+  CPPFLAGS="$CPPFLAGS -DNO_THUMB2_INSTRUCTIONS"

+  arch_target=arm;

+  ACCESS_UNALIGNED="no"

+  JIT_SUPPORTED=yes

+  jit_wanted=true

+  sgen_supported=true

+  dnl Can't use tls, since it depends on the runtime detection of tls offsets

+  dnl  in mono-compiler.h

+  libgc_threads=pthreads

+  with_tls=pthread

+  use_sigposix=yes

+  dnl Enable support for using sigaltstack for SIGSEGV and

+  dnl stack overflow handling (TODO not sure if it works on my arm)

+  with_sigaltstack=no

+  dnl to bypass the underscore linker check, can't work when cross-compiling

+  mono_cv_uscore=yes

+  dnl support ahead of time compilation

+  AOT_SUPPORTED="yes"

+  libdl="-ldl"

+  dnl I need some define to enable my hacks oO

+  AC_DEFINE(PLATFORM_AXOTEC_LINUX,1,[Targeting axotec linux on arm920t])

+fi

+

 

+# Added LT_OUTPUT to generate libtool script by config.lt before calling it.

+LT_OUTPUT

export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`

AC_SUBST(export_ldflags)

 

+dnl the check for cross compiling is included in the mono release but removed

+dnl in the debian source package because for the debian distribution no cross

+dnl compiling is used.

+if test ${TARGET} = ARM  && test x$cross_compiling = xno; then

   dnl ******************************************

   dnl *** Check to see what FPU is available ***

   dnl ******************************************

 

 

 

mono/metadata/sgen-archdep.h:

 

/* We dont store ip, sp */

#define ARCH_NUM_REGS 14

+/* arm920t does not support thumb2 instructions */

+#if !defined (NO_THUMB2_INSTRUCTIONS)

+/* THUMB2 instuctions */

#define ARCH_STORE_REGS(ptr)    \

   __asm__ __volatile__(         \

      "push {lr}\n"           \

<at> <at> -145,6 +148,17 <at> <at>

      :                    \

      : "r" (ptr)             \

   )

+#else /* NO_THUMB2_INSTRUCTIONS */

+/* ARM instuctions */

+#define ARCH_STORE_REGS(ptr) \

+   __asm__ __volatile__( \

+         "stmfd sp!, {lr}\n" \

+         "mov lr, %0\n" \

+         "stmia lr!, {r0-r12}\n" \

+         "ldmfd sp!, {lr}\n" \

+         : \

+         : "r" (ptr))

+#endif /* NO_THUMB2_INSTRUCTIONS */

 

 

 

mono/mini/jit-icalls.c:

 

#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT

+#if defined (PLATFORM_AXOTEC_LINUX)

+   /* ULLONG_MAX is not defined, just define here the max size of an unsigend

+    * long long int. */

+#ifndef ULLONG_MAX

+#define ULLONG_MAX   18446744073709551615ULL

+#endif /* !ULLONG_MAX */

+#endif /* PLATFORM_AXOTEC_LINUX */

   if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {

      mono_raise_exception (mono_get_exception_overflow ());

 

 

Would be great to get some help!

 

 

Best regards,

Dennis Krzyzaniak

 


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Steven Boswell II | 1 Jun 2012 16:14
Picon
Favicon

Re: Patches for mono-winforms

I reported a few of them in Bugzilla, but I wasn't sure if that database got any attention, e.g. the DataGridView.SelectionRows bug was reported months ago and go no reply.  I don't currently have an account on GitHub; if I absolutely must have one, I'll go make one, but I wasn't planning to do that unless I started making tons of changes or something.  Also, how does one write a unit test for something that has to be verified visually (e.g. fixing ToolStripItem.BackColor) or via user interaction (e.g. fixing DataGridView.SelectionRows)?  So I suppose, yes, I need help :-)

Steven Boswell

From: Stifu <stifu <at> free.fr>
To: mono-devel-list <at> lists.ximian.com
Sent: Thursday, May 31, 2012 11:06 PM
Subject: Re: [Mono-dev] Patches for mono-winforms

Hello,

Thanks for your work.

If I'm not mistaken, you reported each of these bugs, right? At least I
could find the two first ones in bugzilla, but didn't go further. Anyway, I
suggest you make pull requests for each bug separately, specifying the bug
number. Also, please include unit tests with each patch, highlighting what
was fixed. I know it's more work, but it will make commiters more confident
with your changes, and will guarantee no one will ever break these parts
again.

Let me know if you need help.


Steven Boswell II wrote
>
> I work in a shop where our apps are written with C# and WinForms.  Thank
> God for Mono; I'm allowed to do all my work under Linux with Mono, and my
> code works fine under MS Windows and .NET.
>
> Recently, I ran into a showstopper bug in mono-winforms, and finally
> decided to look through the code.  I fixed the bug quickly.  That led me
> to looking for the source of other, non-showstopper bugs I've encountered,
> and those went quickly too.  Enclosed is an archive with all of the bug
> fixes I made, which were made against the latest version on GitHub.  (I
> originally made these bug fixes against version 2.10.5, the most recent
> one in Fedora Core 16's yum repos.)
>
> Patch 1 implements the EditingControlShowing event in DataGridView.
>  Before, it wasn't called at all.  I had to split a
> DataGridViewCell.StyleEditingControl() method off of
> DataGridViewCell.InitializeEditingControl(); under .NET, ComboBox.Items is
> initialized before EditingControlShowing is posted, and this split was
> necessary to get Mono to work that way too.  Styles modified in the
> EditingControlShowing event are now applied to text-box and checkbox
> controls too, not just combo-boxes.
>
> Patch 2 resolves different behavior between .NET and Mono when the user
> leaves a DataGridView.  Under .NET, the last-edited cell is committed;
> under Mono, changed made to the last-edited cell are lost.  It was a
> one-line fix.
>
> Patch 3 fires the DataGridView.SelectionChanged event when the selected
> rows/columns changes.  Before, the values of the SelectedRows and
> SelectedColumns properties were semi-random during the SelectionChanged
> event; now they're accurate.
>
> Patches 4 and 5 fix two different exception-throws I encountered when
> ComboBox.Items.Remove() is called with an item that's not in the combo
> box.  .NET doesn't throw any exceptions in this case.
>
> Patch 6 fixes the implementation of BackColor on ToolStripItem objects.
>  Now it behaves like it does under .NET, i.e. the BackColor setting on
> menu items etc. shows up.
>
> I would very much appreciate it if you would consider committing these
> changes.  My MS-Windows-oriented co-workers were impressed by how quickly
> bugs in Mono can be found and fixed.  Who knows, maybe I'll get some
> converts to open-source.  (It amazes me that this sort of thing still has
> to be evangelized...sigh.)
>
> Steven Boswell
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list <at> .ximian
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>

--
View this message in context: http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649621.html
Sent from the Mono - Dev mailing list archive at Nabble.com.
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Rob Wilkens | 1 Jun 2012 22:23
Picon
Gravatar

Re: Threads and X-Windows?

On 05/30/2012 03:56 PM, Rob Wilkens wrote:
> I'm troubleshooting a problem in System.Windows.Forms (or an 
> application which uses it):
>
> Does anyone know of problems where messages processed from thread a 
> can't reach a window created in thread b?  That is, if thread a is 
> processing messages, those messages don't reach the windows created in 
> thread b?  By messages, i mean things like WM_CLOSE and WM_PAINT (or 
> invalidate? or whatever the equivalents are)...  (Messages that are 
> processed, in theory, by Application.Run() in thread a)...

I made a bad assumption, please ignore the above, it's based on bad 
information.  I just read the msdn documentation and corrected my bad 
assumption.

Please ignore my original question, if you didn't already.

I'll try to consult the documentation first in the future.

-Rob
Stifu | 2 Jun 2012 01:33
Picon
Favicon
Gravatar

Re: Patches for mono-winforms

You could just write tests for what's easy to test, and leave the rest.
As a bonus, you could post links to related bug reports here, and attach
patch + unit test (if any) in each of them. You don't need to bother with
GitHub for now.

I'll have a look and review what I can.

Thanks.

Steven Boswell II wrote
> 
> I reported a few of them in Bugzilla, but I wasn't sure if that database
> got any attention, e.g. the DataGridView.SelectionRows bug wasreported
> months ago and go no reply.  I don't currently have an account on GitHub;
> if I absolutely must have one, I'll go make one, but I wasn't planning to
> do that unless I started making tons of changes or something.  Also, how
> does one write a unit test for something that has to be verified visually
> (e.g. fixing ToolStripItem.BackColor) or via user interaction (e.g. fixing
> DataGridView.SelectionRows)?  So I suppose, yes, I need help :-)
> 
> Steven Boswell
> 
> 
> 
> ________________________________
>  From: Stifu &lt;stifu <at> &gt;
> To: mono-devel-list <at> .ximian 
> Sent: Thursday, May 31, 2012 11:06 PM
> Subject: Re: [Mono-dev] Patches for mono-winforms
>  
> Hello,
> 
> Thanks for your work.
> 
> If I'm not mistaken, you reported each of these bugs, right? At least I
> could find the two first ones in bugzilla, but didn't go further. Anyway,
> I
> suggest you make pull requests for each bug separately, specifying the bug
> number. Also, please include unit tests with each patch, highlighting what
> was fixed. I know it's more work, but it will make commiters more
> confident
> with your changes, and will guarantee no one will ever break these parts
> again.
> 
> Let me know if you need help.
> 
> 
> Steven Boswell II wrote
>> 
>> I work in a shop where our apps are written with C# and WinForms.  Thank
>> God for Mono; I'm allowed to do all my work under Linux with Mono, and my
>> code works fine under MS Windows and .NET.
>> 
>> Recently, I ran into a showstopper bug in mono-winforms, and finally
>> decided to look through the code.  I fixed the bug quickly.  That led me
>> to looking for the source of other, non-showstopper bugs I've
>> encountered,
>> and those went quickly too.  Enclosed is an archive with all of the bug
>> fixes I made, which were made against the latest version on GitHub.  (I
>> originally made these bug fixes against version 2.10.5, the most recent
>> one in Fedora Core 16's yum repos.)
>> 
>> Patch 1 implements the EditingControlShowing event in DataGridView.
>>  Before, it wasn't called at all.  I had to split a
>> DataGridViewCell.StyleEditingControl() method off of
>> DataGridViewCell.InitializeEditingControl(); under .NET, ComboBox.Items
>> is
>> initialized before EditingControlShowing is posted, and this split was
>> necessary to get Mono to work that way too.  Styles modified in the
>> EditingControlShowing event are now applied to text-box and checkbox
>> controls too, not just combo-boxes.
>> 
>> Patch 2 resolves different behavior between .NET and Mono when the user
>> leaves a DataGridView.  Under .NET, the last-edited cell is committed;
>> under Mono, changed made to the last-edited cell are lost.  It was a
>> one-line fix.
>> 
>> Patch 3 fires the DataGridView.SelectionChanged event when the selected
>> rows/columns changes.  Before, the values of the SelectedRows and
>> SelectedColumns properties were semi-random during the SelectionChanged
>> event; now they're accurate.
>> 
>> Patches 4 and 5 fix two different exception-throws I encountered when
>> ComboBox.Items.Remove() is called with an item that's not in the combo
>> box.  .NET doesn't throw any exceptions in this case.
>> 
>> Patch 6 fixes the implementation of BackColor on ToolStripItem objects.
>>  Now it behaves like it does under .NET, i.e. the BackColor setting on
>> menu items etc. shows up.
>> 
>> I would very much appreciate it if you would consider committing these
>> changes.  My MS-Windows-oriented co-workers were impressed by how quickly
>> bugs in Mono can be found and fixed.  Who knows, maybe I'll get some
>> converts to open-source.  (It amazes me that this sort of thing still has
>> to be evangelized...sigh.)
>> 
>> Steven Boswell
>> 
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list <at> .ximian
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>> 
> 
> --
> View this message in context:
> http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649621.html
> Sent from the Mono - Dev mailing list archive at Nabble.com.
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list <at> .ximian
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list <at> .ximian
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 

--
View this message in context: http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649644.html
Sent from the Mono - Dev mailing list archive at Nabble.com.
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list <at> lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
Rob Wilkens | 2 Jun 2012 03:28
Picon
Gravatar

Opinion? On potential fix for a 6 year old bug....

I've come up with as close to a good fix for Novell #321541 as I could 
think of, and it works for the sample code provided in the bug report.  
Ignore my comments on that report, i originally looked at the problem 
wrong, and made some incorrect statements --  I haven't posted anything 
current there.

Specifically: Bug Report: Application.Idle is sent to all threads 
instead of just one.

Fix I have: I created an array of 101 [0 to 100] event handlers 
(changeable by a const), which is indexed by 
thread.currentthread.managedthreadid .. When each particular thread 
would call the idle event handler, it now calls an indexed idle event 
handler instead.  Also, since i limited it to ~100 thread id's, if the 
thread id is greater than 100, it assigns it to thread 1, which from 
what i can tell is always the main thread.  So if the Idle handler is 
added by thread 1, only thread 1 will call it, if it's added by thread 
3, only thread 3 will call it.  IF it's added by thread 101, however, it 
will fallback to calling that idle handler for thread 1 only which is 
better than the current practice of delivering each idle event to all 
threads.

Issues I have questions with:
(1) I have only tested with X11, but i had to modify the other drivers 
slightly so that they call the thread indexed idle handlers.  I am 
confident that if it works for X11 it will work for other drivers, 
because it doesn't change anything with interfacing, just message 
processing.  Can I submit this without testing on every possible 
platform?  If the suggestion is to submit it and see what happens, i'm 
ok with that.

(2) I know an array isn't the most wonderful way to handle this, but i 
couldn't figure out how to otherwise assign an event handler to, for 
example, a hashtable entry.  Perhaps I'm just stupid, but i think the 
problem is that an EventHandler property, for example, doesn't have a 
Get and Set, instead it has an Add and Remove.  I couldn't find any 
examples of this being done to model this on.  Any opinions on this?

I'll try to sit on this until at least late tomorrow at minimum...  If 
anyone is willing to tell me "go ahead and submit the 
commit/push/pull-request, and let someone review it", let me know.  If I 
don't hear anything, that's probably what i'll do anyway.

Oh, For convenience, here is the bug report link:
https://bugzilla.novell.com/show_bug.cgi?id=321541

-Rob

Gmane