[Mono-bugs] [Bug 45817][Maj] New - mono hangs on exception backtrace

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
Thu, 3 Jul 2003 18:18:44 -0400 (EDT)


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 m.canini@libero.it.

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

--- shadow/45817	Thu Jul  3 18:18:44 2003
+++ shadow/45817.tmp.19590	Thu Jul  3 18:18:44 2003
@@ -0,0 +1,323 @@
+Bug#: 45817
+Product: Mono/Runtime
+Version: unspecified
+OS: 
+OS Details: Debian sid
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Major
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: m.canini@libero.it               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Summary: mono hangs on exception backtrace
+
+Description of Problem:
+mono hangs on exception backtrace. the exception is uncaught
+
+Steps to reproduce the problem:
+1. compile the code below with mcs -g /out:bug2.exe /r:System.dll
+/r:System.Data.dll bug2.cs Schema4ADO.Net.cs
+2. run mono --debug bug2.exe or ./bug2.exe
+3. take a look
+
+Actual Results:
+
+Bugged
+
+Unhandled Exception: System.NullReferenceException: A null value was found
+where an object instance was required
+in (unmanaged) 00 .Bug:nullrefexc ()
+in <0x00015> 00 .Bug:Main (string[])
+
+Expected Results:
+
+Bugged
+
+Unhandled Exception: System.NullReferenceException: A null value was found
+where an object instance was required
+in (unmanaged) 00 .Bug:nullrefexc ()
+in <0x00015> 00 .Bug:Main (string[])
+
+marco@enoa:~$ <--- console
+
+How often does this happen? 
+Always
+
+Additional Information:
+
+if you comment out the Console.WriteLine("Bugged") line mono won't hang
+
+Code:
+
+bug2.cs
+
+using System;
+using Schema4ADO.Net;
+
+public class Bug
+{
+
+  static void Main(string[] args)
+  {
+    Console.WriteLine("Bugged");
+    nullrefexc();
+  }
+
+  static void nullrefexc()
+  {
+
+      object[,] types = new object[,] {
+//Name                      Data Type           Size        Pref Suff
+Create Params      Nulla Case   Searchable     Unsig  F P&S  A Uniq
+Localize Min S Max S Guid  TypeL Vers  IsLong BestM  F Len
+{"YEAR",                    DBTYPE.I1,          1,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"TINYINT",                 DBTYPE.I1,          1,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"TINYINT AUTO_INCREMENT",  DBTYPE.I1,          1,          "",  "",  "", 
+             false, false, DB.SEARCHABLE, false, true,  true,  /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"TINYINT UNSIGNED",        DBTYPE.UI1,         1,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, true,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"SMALLINT",                DBTYPE.I2,          2,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"SMALLINT AUTO_INCREMENT", DBTYPE.I2,          2,          "",  "",  "", 
+             false, false, DB.SEARCHABLE, false, true,  true,  /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"SMALLINT UNSIGNED",       DBTYPE.UI2,         2,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, true,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"INT",                     DBTYPE.I4,          4,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"INT AUTO_INCREMENT",      DBTYPE.I4,          4,          "",  "",  "", 
+             false, false, DB.SEARCHABLE, false, true,  true,  /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"INT UNSIGNED",            DBTYPE.UI4,         4,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, true,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"MEDIUMINT",               DBTYPE.I4,          4,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"MEDIUMINT AUTO_INCREMENT",DBTYPE.I4,          4,          "",  "",  "", 
+             false, false, DB.SEARCHABLE, false, true,  true,  /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"MEDIUMINT UNSIGNED",      DBTYPE.UI4,         4,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, true,  true,  false, /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"BIGINT",                  DBTYPE.I8,          8,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"BIGINT AUTO_INCREMENT",   DBTYPE.I8,          8,          "",  "",  "", 
+             false, false, DB.SEARCHABLE, false, true,  true,  /*AS 0*/
+null, null, null, null, null, false, false, true },
+{"BIGINT UNSIGNED",         DBTYPE.UI8,         8,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, true,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"FLOAT",                   DBTYPE.R4,          7,          "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, false, false, /*AS 0*/
+null, null, null, null, null, false, true, true },
+{"DOUBLE",                  DBTYPE.R8,          15,         "",  "",  "", 
+              true, false, DB.SEARCHABLE, false, false, false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"NUMERIC",                 DBTYPE.DECIMAL,     15,         "",  "", 
+"precision,scale", true, false, DB.SEARCHABLE, false, false, false, /*AS
+0*/ 0,    null, null, null, null, false, true, true },
+{"DATE",                    DBTYPE.DBDATE,      4,          "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"TIME",                    DBTYPE.DBTIME,      4,          "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"TIMESTAMP",               DBTYPE.DBTIMESTAMP, 4,          "'", "'",
+"length",          true, false, DB.SEARCHABLE, null,  true,  false, /*AS
+0*/ null, null, null, null, null, false, false, true },
+{"DATETIME",                DBTYPE.DBTIMESTAMP, 4,          "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  true,  false, /*AS 0*/
+null, null, null, null, null, false, true,  true },
+{"CHAR",                    DBTYPE.STR,         255,        "'", "'",
+"length",          true, true,  DB.SEARCHABLE, null,  false, false, /*AS
+0*/ null, null, null, null, null, false, false, false},
+{"CHAR BINARY",             DBTYPE.BYTES,       255,        "'", "'",
+"length",          true, false, DB.SEARCHABLE, null,  false, false, /*AS
+0*/ null, null, null, null, null, false, false, false},
+{"VARCHAR",                 DBTYPE.STR,         255,        "'", "'",
+"length",          true, true,  DB.SEARCHABLE, null,  false, false, /*AS
+0*/ null, null, null, null, null, false, false, false},
+{"VARCHAR BINARY",          DBTYPE.BYTES,       255,        "'", "'",
+"length",          true, false, DB.SEARCHABLE, null,  false, false, /*AS
+0*/ null, null, null, null, null, false, false, false},
+{"TINYTEXT",                DBTYPE.STR,         255,        "'", "'", "", 
+              true, true,  DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, false, false},
+{"TINYBLOB",                DBTYPE.BYTES,       255,        "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, false, false},
+{"TEXT",                    DBTYPE.STR,         65535,      "'", "'", "", 
+              true, true,  DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, true,  false},
+{"BLOB",                    DBTYPE.BYTES,       65535,      "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, true,  false},
+{"MEDIUMTEXT",              DBTYPE.STR,         16777215,   "'", "'", "", 
+              true, true,  DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, false, false},
+{"MEDIUMBLOB",              DBTYPE.BYTES,       16777215,   "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, true,  false, false},
+{"LONGTEXT",                DBTYPE.STR,         2147483647, "'", "'", "", 
+              true, true,  DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, false, false, false},
+{"LONGBLOB",                DBTYPE.BYTES,       2147483647, "'", "'", "", 
+              true, false, DB.SEARCHABLE, null,  false, false, /*AS 0*/
+null, null, null, null, null, true,  false, false}
+      };
+    // useless code
+    int a, b ,c;
+    a = 1;
+    b = 2;
+    c = a + b;
+  }
+
+}
+
+Schema4ADO.Net.cs
+
+/**************************************************************************
+ * Schema4ADO.Net: OleDb compatible database schema library               *
+ * Copyright (C) 2003 by Marco Canini, Domenico Garassino, Marco Randazzo *
+ *                                                                        *
+ * Permission is hereby granted, free of charge, to any person obtaining  *
+ * a copy of this software and associated documentation files (the        *
+ * "Software"), to deal in the Software without restriction, including    *
+ * without limitation the rights to use, copy, modify, merge, publish,    *
+ * distribute, sublicense, and/or sell copies of the Software, and to     *
+ * permit persons to whom the Software is furnished to do so, subject to  *
+ * the following conditions:                                              *
+ *                                                                        *
+ * The above copyright notice and this permission notice shall be         *
+ * included in all copies or substantial portions of the Software.        *
+ *                                                                        *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        *
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND                  *
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE *
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION *
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  *
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.        *
+ **************************************************************************/
+
+/**************************************************************************
+   $Id: Schema4ADO.Net.cs,v 1.5 2003/07/02 15:05:16 marco Exp $
+ **************************************************************************/
+
+namespace Schema4ADO.Net
+{
+
+  public enum DBCOLUMNFLAGS
+  {
+    ISBOOKMARK        = 0x1,
+    MAYDEFER          = 0x2,
+    WRITE             = 0x4,
+    WRITEUNKNOWN      = 0x8,
+    ISFIXEDLENGTH     = 0x10,
+    ISNULLABLE        = 0x20,
+    MAYBENULL         = 0x40,
+    ISLONG            = 0x80,
+    ISROWID           = 0x100,
+    ISROWVER          = 0x200,
+    CACHEDEFERRED     = 0x1000,
+    SCALEISNEGATIVE   = 0x4000,
+    RESERVED          = 0x8000,
+    ISROWURL          = 0x10000,
+    ISDEFAULTSTREAM   = 0x20000,
+    ISCOLLECTION      = 0x40000,
+    ISSTREAM          = 0x80000,
+    ISROWSET          = 0x100000,
+    ISROW             = 0x200000,
+    ROWSPECIFICCOLUMN = 0x400000
+  }
+
+  public enum DBTYPE
+  {
+    // The following values exactly match VARENUM
+    // in Automation and may be used in VARIANT.
+    EMPTY       = 0,
+    NULL        = 1,
+    I2          = 2,
+    I4          = 3,
+    R4          = 4,
+    R8          = 5,
+    CY          = 6,
+    DATE        = 7,
+    BSTR        = 8,
+    IDISPATCH   = 9,
+    ERROR       = 10,
+    BOOL        = 11,
+    VARIANT     = 12,
+    IUNKNOWN    = 13,
+    DECIMAL     = 14,
+    UI1         = 17,
+    ARRAY       = 0x2000,
+    BYREF       = 0x4000,
+    I1          = 16,
+    UI2         = 18,
+    UI4         = 19,
+
+    // The following values exactly match VARENUM
+    // in Automation but cannot be used in VARIANT.
+    I8          = 20,
+    UI8         = 21,
+    GUID        = 72,
+    VECTOR      = 0x1000,
+    FILETIME    = 64,
+    RESERVED    = 0x8000,
+
+    // The following values are not in VARENUM in OLE.
+    BYTES       = 128,
+    STR         = 129,
+    WSTR        = 130,
+    NUMERIC     = 131,
+    UDT         = 132,
+    DBDATE      = 133,
+    DBTIME      = 134,
+    DBTIMESTAMP = 135,
+    HCHAPTER    = 136,
+    PROPVARIANT = 138,
+    VARNUMERIC  = 139
+  }
+
+  public enum DBPROPVAL_IT
+  {
+    BTREE              = 0x00000001,
+    HASH               = 0x00000002,
+    CONTENT            = 0x00000003,
+    DBPROPVAL_IT_OTHER = 0x00000004
+  }
+
+  public enum DBPROPVAL_IN
+  {
+    ALLOWNULL     = 0x00000000,
+    DISALLOWNULL  = 0x00000001,
+    IGNORENULL    = 0x00000002,
+    IGNOREANYNULL = 0x00000004
+  }
+
+  public sealed class DB
+  {
+    public static int UNSEARCHABLE    = 0x01;
+    public static int LIKE_ONLY       = 0x02;
+    public static int ALL_EXCEPT_LIKE = 0x03;
+    public static int SEARCHABLE      = 0x04;
+    public static int COLLATION_ASC   = 0x01;
+    public static int COLLATION_DESC  = 0x02;
+  }
+}