Collection was modified; enumeration operation may not execute.
---------------------------------------------------------------

                 Key: DNET-745
                 URL: http://tracker.firebirdsql.org/browse/DNET-745
             Project: .NET Data provider
          Issue Type: Bug
    Affects Versions: 5.8.0.0
         Environment: .Net 4 and4.5
            Reporter: Paul Reeves
            Assignee: Jiri Cincura


We have a client that have found what appears to be a bug in v5.8.0.0

The code and the stack trace are attached below.

The same code works fine with all versions between 4.1 and 5.7

They've also tested with .Net framework 4 and 4.5

They are happy to run a debug build to help fix this, but have not been able to 
create a test case.



#if DEBUG
      var cmd = "select s.S_SHOPID, s.S_VALUE as FOO, s1.S_VALUE as BAR, 
s2.S_VALUE as SNAFU " +
                "from SYSTEMSETTING s " +
                "left join SYSTEMSETTING s1 on s.S_SHOPID = s1.S_SHOPID " +
                "left join SYSTEMSETTING s2 on s.S_SHOPID = s2.S_SHOPID " +
                "where s.S_SYSTEM_ID = 9202 " +
                "and s1.S_SYSTEM_ID = 9200 " +
                "and s2.S_SYSTEM_ID = 9201 " +
                "and s.S_VALUE = 'Y' " +
                "and s1.S_VALUE <> '' " +
                "and s2.S_VALUE <> ''";
      using (FbCommand fbCmd = new FbCommand(cmd)) {
        using (DataTable myDT = new DataTable()) {
          using (FbDataAdapter da = new FbDataAdapter()) {
            da.SelectCommand = fbCmd;
            fbCmd.Connection = DbConnection;

            try {
              LogFile.Log("Before Data Adapter.Fill() call. Managed Thread ID: 
" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(), true);
              da.Fill(myDT);
              LogFile.Log("After Data Adapter.Fill() call. Managed Thread ID: " 
+ System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(), true);
              foreach (DataRow row in myDT.Rows) {
                LogFile.Log("Row Logged");
              }
            }
            catch (Exception e) {
              LogFile.Log("******--- ERROR ---******", true);
              LogFile.Log("Managed Thread ID: " + 
System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
              LogFile.Log("Error Message: " + e.Message);
              LogFile.Log("Error Message: " + e.StackTrace);
            }
          }
        }
      }
      LogFile.Log("After Select via SQL Test. Managed Thread ID: " + 
System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(), true);
#endif


--------------------------------------------------------------------------------
Tuesday 21 March 2017 01:20:07.308 PM
--------------------------------------------------------------------------------
  :Before Select via SQL Test. Managed Thread ID: 4
  :FirebirdSql.Data.FirebirdClient version: 5.8.0.0
--------------------------------------------------------------------------------
Tuesday 21 March 2017 01:20:07.308 PM
--------------------------------------------------------------------------------
  :Before Data Adapter.Fill() call. Managed Thread ID: 4
--------------------------------------------------------------------------------
Tuesday 21 March 2017 01:20:07.313 PM
--------------------------------------------------------------------------------
  :******--- ERROR ---******
  :Managed Thread ID: 4
  :Error Message: Collection was modified; enumeration operation may not 
execute.
  :Error Message:    at 
System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at System.Linq.Enumerable.<TakeIterator>d__24`1.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at FirebirdSql.Data.Client.Managed.XdrStream.Read(Byte[] buffer, Int32 
offset, Int32 count) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\XdrStream.cs:line
 249
   at FirebirdSql.Data.Client.Managed.XdrStream.ReadBytes(Int32 count) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\XdrStream.cs:line
 336
   at FirebirdSql.Data.Client.Managed.XdrStream.ReadOpaque(Int32 length) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\XdrStream.cs:line
 348
   at FirebirdSql.Data.Client.Managed.GdsConnection.ProcessOperation(Int32 
operation, XdrStream xdr) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\GdsConnection.cs:line
 362
   at 
FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadSingleResponse() in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\Version10\GdsDatabase.cs:line
 638
   at FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadResponse() in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\Version10\GdsDatabase.cs:line
 593
   at 
FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadGenericResponse() in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\Version10\GdsDatabase.cs:line
 605
   at FirebirdSql.Data.Client.Managed.Version11.GdsStatement.Prepare(String 
commandText) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Managed\Version11\GdsStatement.cs:line
 77
   at FirebirdSql.Data.FirebirdClient.FbCommand.Prepare(Boolean returnsSet) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:line
 1148
   at FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior 
behavior, Boolean returnsSet) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:line
 1171
   at FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior 
behavior) in 
C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:line
 523
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, 
DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, 
IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 
startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at PNDataService.DbConnectionManager.InitializeEvents(String errorstatus, 
Boolean resumedFromDownTime) in C:\Dev 
VS\PNDATASERVICEVS4.5\DbConnectionManager.cs:line 987
--------------------------------------------------------------------------------
Tuesday 21 March 2017 01:20:07.329 PM
--------------------------------------------------------------------------------
  :After Select via SQL Test. Managed Thread ID: 4




-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to