title: An unhandled exception of type 'System.StackOverflowException' occurred in Oracle.DataAccess.dll
body: <p>I query Oracle database version 11.2.0.1.0 using Oracle.DataAccess (4.112.3.0) library but I have this error on the command.executeReader after several requests:
  <em>An unhandled exception of type 'System.StackOverflowException' occurred in Oracle.DataAccess.dll</em></p>
  
  <pre><code>public List&lt;Item&gt; GetChildCategories(Int64 p_itemId = 0)
          {
              List&lt;Item&gt; result = new List&lt;Item&gt;();
              if (p_itemId == 0)
              {
                  return result;
              }
  
               // sql query
              OracleCommand command = this.connection.CreateCommand();
              //command.Transaction = transaction;
  
              command.CommandText = "select i2.item itemFound, i2.item_id itemIdFound " +
                                      "from items i, item_relations r, items i2 " +
                                      "where r.parent_item_id = i.item_id " +
                                      "and i2.item_id = r.child_item_id " +
                                      "and i2.org_id = r.org_id " +
                                      "and i2.org_id = 1 " +
                                      "and i2.org_id = i.org_id " +
                                      "and i2.item_type_id not in (4,5,6,10,3) " +
                                      "and i.item_id = " + p_itemId + " " +
                                      "and i2.UNDER_CONSTRUCTION is null " +
                                      "order by i2.item";
  
              OracleDataReader reader = command.ExecuteReader(); // error on the execute reader
              while (reader.Read())
              {
                  string item = reader["itemFound"] == DBNull.Value ? string.Empty : (string)reader["itemFound"];
  
  
                  Int64 item_id;
                  if (Int64.TryParse(reader["itemIdFound"].ToString(), out item_id))
                  {
  
                  }
  
                  result.Add(new Item(item, item_id, p_itemId));
              }
  
              reader.Close();
              reader.Dispose();
  
              return result;
          }
  </code></pre>
  
  <p>I call it from a recursive function.</p>
  
  <pre><code>private void WriteExcelLine(Int64 p_itemId, int p_colId)
          {
              int colId = p_colId;
              colId++;
  
              List&lt;Item&gt; itemsList = OraConnection.GetChildCategories(p_itemId);
              foreach (Item item in itemsList)
              {
                  worksheet1.Cells[rowId, colId].Value = item.ItemName;
  
                  rowId++;  
  
                  WriteExcelLine(item.ItemId, colId);
              }
  
              if (itemsList.Count() == 0)
              {
                  colId--;
              }            
          }
  </code></pre>
  
  <p>Have you got any ideas? Thanks!</p>