[Mono-bugs] [Bug 80024][Nor] Changed - [ARM] file inssel.c: line 3522 (mono_burg_emit): should not be reached

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu May 10 14:15:33 EDT 2007


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by alp at atoker.com.

http://bugzilla.ximian.com/show_bug.cgi?id=80024

--- shadow/80024	2007-04-22 21:10:21.000000000 -0400
+++ shadow/80024.tmp.31196	2007-05-10 14:15:33.000000000 -0400
@@ -109,6 +109,103 @@
 
 
 ------- Additional Comments From alp at atoker.com  2007-04-22 21:10 -------
 I should mention, this is with SVN head. Have not been able to check
 against older versions or isolate the issue yet, but the same code
 does work on Mono x86 and MS.
+
+------- Additional Comments From alp at atoker.com  2007-05-10 14:15 -------
+I isolated the issue a little (but don't have a standalone test case yet).
+
+(Here, DType is a byte-backed enum)
+
+object ReadType (Type type) {
+  object val;
+  DType dtype = Signature.TypeToDType (type);
+
+  //SIGABRT happens here, after ReadValue(DType) is called but before
+it is entered
+
+  val = ReadValue (dtype);
+  return val;
+}
+
+
+		public object ReadValue (DType dtype)
+		{
+			//this point is not reached in failure cases
+
+			switch (dtype)
+			{
+				case DType.Byte:
+					return ReadByte ();
+
+				case DType.Boolean:
+					return ReadBoolean ();
+
+				case DType.Int16:
+					return ReadInt16 ();
+
+				case DType.UInt16:
+					return ReadUInt16 ();
+
+				case DType.Int32:
+					return ReadInt32 ();
+
+				case DType.UInt32:
+					return ReadUInt32 ();
+
+				case DType.Int64:
+					return ReadInt64 ();
+
+				case DType.UInt64:
+					return ReadUInt64 ();
+
+#if !DISABLE_SINGLE
+				case DType.Single:
+					return ReadSingle ();
+#endif
+
+				case DType.Double:
+					return ReadDouble ();
+
+				case DType.String:
+					return ReadString ();
+
+				case DType.ObjectPath:
+					return ReadObjectPath ();
+
+				case DType.Signature:
+					return ReadSignature ();
+
+				case DType.Variant:
+					return ReadVariant ();
+
+				default:
+					return null;
+				//	throw new Exception ("Unhandled D-Bus type: " + dtype);
+			}
+		}
+
+
+
+This workaround (replacing the above two methods) works:
+
+object ReadType (Type type) {
+  object val;
+  DType dtype = Signature.TypeToDType (type);
+
+  //SIGABRT happens here, after ReadValue(DType) is called but before
+it is entered
+
+				if (dtype == DType.Byte)
+					val = ReadByte ();
+				else if (dtype == DType.UInt32)
+					val = ReadUInt32 ();
+				else if (dtype == DType.Boolean)
+					val = ReadBoolean ();
+				else
+					throw new Exception ("This case is not important");
+
+  return val;
+}
+


More information about the mono-bugs mailing list