[Mono-dev] HEADS UP: Linear IR branch merge

Cedric Vivier cedricv at neonux.com
Sun Jul 27 06:30:26 EDT 2008

Hi Zoltan,

It has probably been already reported (though I cannot find it in the
bugzilla) but there is a crash with the new JIT when starting Tomboy
and other applications using NDesk.Dbus (latest stable versions of

  at (wrapper managed-to-native)
(object,object[],System.Exception&) <0x00004>
  at (wrapper managed-to-native)
(object,object[],System.Exception&) <0xffffffff>
  at System.Reflection.MonoMethod.Invoke
  at System.Reflection.MethodBase.Invoke (object,object[]) <0x0001c>
  at System.Reflection.Emit.DynamicMethod.Invoke
  at System.Reflection.MethodBase.Invoke (object,object[]) <0x0001c>
  at NDesk.DBus.MessageWriter.WriteValueType (object,System.Type) <0x0005f>
  at NDesk.DBus.Message.GetHeaderData () <0x0009d>
  at NDesk.DBus.Connection.WriteMessage (NDesk.DBus.Message) <0x00019>
  at NDesk.DBus.Connection.SendWithReply (NDesk.DBus.Message) <0x0006f>
  at NDesk.DBus.Connection.SendWithReplyAndBlock (NDesk.DBus.Message) <0x0000d>
  at NDesk.DBus.BusObject.SendMethodCall
  at IBusProxy.Hello () <0x0004a>
  at NDesk.DBus.Bus.Register () <0x0001d>
  at NDesk.DBus.Bus..ctor (string) <0x0002e>
  at NDesk.DBus.Bus.Open (string) <0x00051>
  at NDesk.DBus.Bus.get_System () <0x0004c>
  at NDesk.DBus.BusG.Init () <0x00012>
  at Tomboy.RemoteControlProxy.Register (Tomboy.NoteManager) <0x0000a>
  at Tomboy.Tomboy.RegisterRemoteControl (Tomboy.NoteManager) <0x00015>
  at Tomboy.Tomboy.Main (string[]) <0x000f5>
  at (wrapper runtime-invoke)
(object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:
	mono [0x806e178]
Cannot access memory at address 0x23

Debug info from gdb:
Thread 1 (Thread 0xb7d3f960 (LWP 25863)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb7e54807 in syscall () from /lib/tls/i686/cmov/libc.so.6
#2  0x0806e212 in mono_handle_native_sigsegv (signal=11,
ctx=0xb7c0ed0c) at mini-exceptions.c:1294
#3  0x080872a0 in mono_arch_handle_altstack_exception
(sigctx=0xb7c0ed0c, fault_addr=0x27, stack_ovf=0) at
#4  <signal handler called>
#5  mono_method_to_ir2 (cfg=0xa13d600, method=0xa15d8b0,
start_bblock=0xa148314, end_bblock=0xa1483ac, return_var=0x0,
    inline_args=0x0, inline_offset=0, is_virtual_call=0) at method-to-ir.c:7536
#6  0x081c0ac6 in mini_method_compile (method=0xa15d8b0,
opts=30501375, domain=0x34ea0, run_cctors=<value optimized out>,
    compile_aot=<value optimized out>, parts=0) at mini.c:13232
#7  0x081c28c0 in mono_jit_compile_method (method=0xa15d8b0) at mini.c:13917
#8  0x081c3192 in mono_jit_runtime_invoke (method=0xa15d8b0, obj=0x0,
params=0xbf9ff8f0, exc=0x0) at mini.c:14263
#9  0x0813e5d3 in mono_runtime_invoke_array (method=0xa15d8b0,
obj=0x0, params=0x24d5a0, exc=0x0) at object.c:3251
#10 0x080e30c1 in ves_icall_InternalInvoke (method=0x47c8b8, this=0x0,
params=0x24d5a0, exc=0xbf9ffa28) at icall.c:3034

Everything works fine when using MONO_COUNT=0.

On Thu, Jul 24, 2008 at 4:21 AM, Zoltan Varga <vargaz at gmail.com> wrote:
>                              Hi All,
>  The merge is now done, the current testing status is the following:
> - x86/amd64 linux seems to be in good shape, the other
> architectures/OSes have some problems
> I would like to ask people to try out the new code, and report
> problems either by
> replying to this mail or by using bugzilla.
> To help track down problems, the new JIT actually includes the old
> one, and there is
> an env variable called MONO_COUNT which if set determines the number of
> methods compiled by the new JIT. So running your app with MONO_COUNT=0 will
> use the old JIT. This variable can be used to determine the exact
> method which is
> miscompiled by the new JIT using a binary search, ie.:
> MONO_COUNT=10000 mono app.exe -> fail
> MONO_COUNT=5000 mono app.exe -> fail
> MONO_COUNT=2500 mono app.exe -> success
> MONO_COUNT=3500 mono app.exe
> etc.
> When the new JIT code is deemed stable enough, the old JIT code and this env
> variable will be removed.
> In case anyone wants to revert their tree to before the merge, the before merge
> revision is  r108475.
>                                   Zoltan
>> On Tue, 2008-07-22 at 01:09 +0200, Zoltan Varga wrote:
>>> Hi All,
>>>   Now that we have branched for mono 2.0, we would like to merge the
>>> work done on the linear IR branch to svn HEAD. The
>>> linear IR branch was created in 2005 October to explore some ideas on
>>> how to make our JIT simpler and how to make
>>> it generate better code. A lot of work has been put into the branch
>>> over the years, and now we are ready to merge it.
>>> Changes of this magnitude are never easy, so svn head might be a bit
>>> unstable for a few weeks as we work out the problems. Documentation
>>> for the new JIT and some benchmarks can be found at
>>> http://www.mono-project.com/Linear_IL
>>> I plan to do the merge tomorrow. Until then, please avoid checking in
>>> code to the mono/mini directory so as to not interfere with the merge.
>> This is great news!  Do we have a list of architectures that will be
>> supported, and more importantly a list of architectures that will be
>> broken when you do the merge?
>> If I remember correctly, ARM, x86, x86-64, sparc, and itanium are ported
>> already?
>> Thanks
>> -g
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

More information about the Mono-devel-list mailing list