Ticket Hash: | 768ee11d7dcdc95025fb106972410b7acd14101e | ||
Title: | Execution of CREATE INDEX generates System.OutOfMemoryException | ||
Status: | Closed | Type: | Incident |
Severity: | Important | Priority: | Medium |
Subsystem: | Integration_Via_PInvoke | Resolution: | Not_A_Bug |
Last Modified: |
2011-12-12 11:04:04 13.57 years ago |
Created: |
2011-12-11 23:16:46 13.57 years ago |
Version Found In: | 1.0.77.0 |
Description: | ||||
When executing the CREATE INDEX NonQuery in a table with almost 60 million records, system increases the memory and after some seconds the next error issues: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, O bject[] args, SignatureStruct& signature, RuntimeType declaringType) at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo method, Ob ject[] args, SignatureStruct signature, RuntimeType declaringType) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, B inder binder, Object[] parameters, CultureInfo culture) at System.SecurityUtils.ConstructorInfoInvoke(ConstructorInfo ctor, Object[] args) at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type base Type, String initializeData) at System.Diagnostics.TypedElement.BaseGetRuntimeObject() at System.Diagnostics.ListenerElement.GetRuntimeObject() at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() at System.Diagnostics.TraceInternal.get_Listeners() at System.Diagnostics.TraceInternal.WriteLine(String message) at System.Data.SQLite.SQLiteLog.LogEventHandler(Object sender, LogEventArgs e ) at System.Data.SQLite.SQLiteLog.LogCallback(IntPtr pUserData, Int32 errorCode , IntPtr pMessage) at System.Data.SQLite.UnsafeNativeMethods.sqlite3_step(IntPtr stmt) at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt) at System.Data.SQLite.SQLiteDataReader.NextResult() at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavi or behave) at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery() at Facilities.DB.LibSQLite.ExecNonQuery(String qry, Object[] args) at ttbsap.CmpExistenc.SetIndexesTTB() The code is: using (LibSQLite db = new LibSQLite(@"Data Source=inv.db3;")) { using (SQLiteTransaction transac = db.BeginTransaction()) { try { res = db.ExecNonQuery("CREATE INDEX ttb_1 on ttb(sts);"); db.Commit(); } catch (Exception ex) { System.Console.WriteLine("error"); } finally { db.Dispose(); } } } <hr /><i>mistachkin added on 2011-12-12 03:01:01 UTC:</i><br /> Is this issue new to version 1.0.77 or can it be reproduced with earlier versions? Is the process actually running out of memory (or address space if it is a 32-bit process) at the point where the exception is thrown? <hr /><i>anonymous added on 2011-12-12 06:25:47 UTC:</i><br /> Mistachkin, I am not sure if the problem is new in previous versions. However, I believe I found a possible cause, but I do not know why. Before reporting the problem, I uncompressed the file sqlite-netFx40-binary-Win32-2010-1.0.77.0.zip in a windows 7-64 bit and I explicitly compiled with processor "X86". The execution generated the error that I reported. The reason I generated in X86 is that I perceived it is a bit faster than X64 when loading data into the Sqlite database. Some minutes ago, I replaced it by sqlite-netFx40-binary-X64-2010-1.0.77.0 and I compiled with processor "Any CPU". I executed the program and this time, no error was issued. DO you have any explanation about this, before considering the ticked as fixed? My best regards. Vizcayno. <hr /><i>mistachkin added on 2011-12-12 07:52:05 UTC:</i><br /> It's possible that the SQLite query you are attempting to execute is trying to allocate more than 2GB of memory. This would exceed the amount of address space for a user-mode 32-bit process on Windows, causing an "out of memory" exception even when there is plenty of physical RAM available. <hr /><i>anonymous added on 2011-12-12 11:04:04 UTC:</i><br /> Many, many thanks for your attention and help. |