У тебя embedded какой сборки ? Альфа1 небось ?
Свежий снапшот возьми

У меня не эмбеддед. У меня обычный сервер (снапшот вчера брали или позавчера). Я из него скопировал fbclient.dll и переименовал её в fbembed.dll

Продебажили. Имеем вот что:

1) Ошибка на второй итерации цикла while в этом методе (строка помечена):

protected DbStatementType ParseStatementTypeInfo(byte[] buffer)
          {
               DbStatementType stmtType = DbStatementType.None;
               int pos = 0;
               int length = 0;
               int type = 0;

               while ((type = buffer[pos++]) != IscCodes.isc_info_end)
               {
>>>>                length = IscHelper.VaxInteger(buffer, pos, 2);
                    pos += 2;
                    switch (type)
                    {
                         case IscCodes.isc_info_sql_stmt_type:
stmtType = (DbStatementType)IscHelper.VaxInteger(buffer, pos, length);
                              pos += length;
                              break;

                         default:
                              pos += length;
                              break;
                    }
               }

               return stmtType;
          }

-----------------------------------------------------------------------------

2) Значения локальных переменных:

+ this {FirebirdSql.Data.Client.Embedded.FesStatement} FirebirdSql.Data.Common.StatementBase {FirebirdSql.Data.Client.Embedded.FesStatement}
-          buffer     {Dimensions:[8]}     byte[]
          [0]     21     byte
          [1]     4     byte
          [2]     0     byte
          [3]     1     byte
          [4]     0     byte
          [5]     0     byte
          [6]     0     byte
          [7]     0     byte
          stmtType     Select     FirebirdSql.Data.Common.DbStatementType
          pos     8     int
          length     4     int
          type     0     int


-----------------------------------------------------------------------------

3) Само исключение внутри этого метода:

public static int VaxInteger(byte[] buffer, int index, int length)
        {
            int newValue;
            int shift;

               try
               {
                    newValue = shift = 0;

                    int i = index;
                    while (--length >= 0)
                    {
 >>>>                    newValue += (buffer[i++] & 0xff) << shift;
                         shift += 8;
                    }
               }
               catch (Exception e)
             {
                  throw;
             }

             return newValue;
        }

-----------------------------------------------------------------------------

4) Локальные переменные:

-          buffer     {Dimensions:[8]}     byte[]
          [0]     21     byte
          [1]     4     byte
          [2]     0     byte
          [3]     1     byte
          [4]     0     byte
          [5]     0     byte
          [6]     0     byte
          [7]     0     byte
          index     8     int
          length     1     int
          i     8     int
          newValue     0     int
          shift     0     int


Там как видишь значение i уже больше чем может быть.

Ответить