[Mono-dev] Weird bug in new port

Bill Seurer seurer at us.ibm.com
Wed Jul 19 09:44:15 EDT 2006


Now that I have trace working I looked at this further...

ENTER: MainClass:xyzzy (object) [method=0x200317cc](1 parms: p#1: object
0x30639fe0[INT32 61438], )
. ENTER: System.Int32:ToString () [method=0x2020a67c](this=0x30639fe00)
...
. . ENTER: NumberStore:.ctor (int) [method=0x2020b62c](this=0x2ff223d8, 1
parms: p#1: i4: 537062984 (0x2002ee48))
...
. LEAVE: System.Int32:ToString (), returns string[STRING:3063fc80:'
537062984']
LEAVE: MainClass:xyzzy (object), returns string[STRING:3063fc80:'537062984
']

So it looks like the call to the NumberStore constructor is getting a bad
value passed in (the actual number in this case was 0xEFFE).  Maybe
something to do with the virtual call that is done to ToString for the
object?  If I use an actual integer on ToString or cast the object to an
integer then it works OK:

. . ENTER: NumberStore:.ctor (int) [method=0x2020b62c](this=0x2ff223d81
parms: p#1: i4: 61438 (0xeffe)) ip: 3061c978
--
Bill Seurer     IBM System i5 internal compiler development   Rochester, MN
Business: seurer at us.ibm.com                         Home: Bill at seurer.net
http://w3.rchland.ibm.com/~seurer/                  http://www.seurer.net


"Zoltan Varga" <vargaz at gmail.com> wrote on 07/15/2006 04:14:17 AM:

>                                      Hi,
>
>   It might be a problem with the 'unbox trampolines' which handle
> virtual calls to valuetypes.
> Maybe such a trampoline is not created by mono_magic_trampoline ()
> when it should.
>
>                          Zoltan
>
> On 7/15/06, Bill Seurer <seurer at us.ibm.com> wrote:
> >
> > We're seeing a weird bug in the port (of Mono 1.1.15) we are working on
for
> > PASE on i5/OS (i.e., AIX).
> >
> > Here's a good example.  If I run this C# program (a small extract from
> > something else):
> >
> > class MainClass
> > {
> >       public static void Main(string[] args)
> >       {
> >             int i;
> >             object o;
> >             string s1;
> >
> >             i = 12345678;           // 0x00bc614e
> >             o = (object)i;
> >             s1 = o.ToString();
> >             System.Console.WriteLine(s1);
> >       }
> > }
> >
> > I get something like this output:
> >
> > 537061256
> >
> > which is 0x2002E788 in hex and probably a pointer to something that
Mono
> > created internally (it's in the right range for memory that Mono is
> > allocating from).
> >
> > Everything looks good up to the call to ToString and ToString returns a
> > string that actually has the characters "537061256" in it.  So it looks
> > like ToString or something it calls is the culprit.  Does this look
like
> > anything someone else may have run into?
> >
> > I'm going to try to trace at a machine instruction level through
ToString
> > as it executes but that gets tricky with multiple function calls
through
> > pointers that Mono makes.
> > --
> > Bill Seurer     IBM System i5 internal compiler development
Rochester, MN
> > Business: seurer at us.ibm.com                         Home:
Bill at seurer.net
> > http://w3.rchland.ibm.com/~seurer/
http://www.seurer.net
> >
> > _______________________________________________
> > 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