[Mono-dev] Error handling longs on Mono SPARC
pablosantosluac at terra.es
pablosantosluac at terra.es
Mon Oct 26 08:11:17 EDT 2009
Hi there,
This is our configuration:
-bash-3.00$ uname -a
SunOS atenea 5.11 snv_34 sun4u sparc SUNW,Sun-Blade-1000
-bash-3.00$ mono --version
Mono JIT compiler version 20091021 (tarball Wed Oct 21 19:04:28 CEST 2009)
Copyright (C) 2002-2009 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC and Parallel Mark)
SIGSEGV: normal
Notification: Thread + polling
Architecture: sparc
Disabled: none
We're using a Mono 2.6 compiled at our test box.
We've a code like this:
long dstBrId = GetBranchNumber(brId);
log.DebugFormat("Branch {0} -> {1}", brId, dstBrId);
Calling this method:
private long GetBranchNumber(long brId)
{
Branch br = (Branch) mFetchBranches[brId];
if( br != null )
{
return br.ObjId;
}
log.DebugFormat("GetBranchNumber returning {0}", brId);
return brId;
}
And that's the log it is showing:
- GetBranchNumber returning 4
- Branch 4 -> 17179869188
It looks like, for some reason, this 4 is "magically" becoming a
17179869188!!!!!!
17179869188 is -> 400000004 in hex!!!!
And, it *gets fixed by building disabling the "optimize" mode*
Of course, a test app like this:
using System;
class Hello
{
public static void Main()
{
Hello t = new Hello();
long myval = 4;
long longVal = t.GetValue(myval);
Console.WriteLine(longVal);
}
private long GetValue(long v)
{
return v;
}
}
Does not fail.
Any idea?
Thanks,
pablo
More information about the Mono-devel-list
mailing list