Thanks for the analysis. So the quick fix would be to set Sqlite to multithread mode? If I set it to support multi threading, can I share the connection or is a new connection required for every query?
René Am 29.08.2012 um 14:59 schrieb Sebastien Pouliot <[email protected]>: > On Wed, Aug 29, 2012 at 4:18 AM, René Ruppert <[email protected]> wrote: >> Hi, >> >> after upgrading from 5.2.13 to 5.3.6, this crash is the first thing I see in >> the 5.1 Simulator on Mountain Lion and this time I can reproduce it. >> I have pasted the full log to a Gist: https://gist.github.com/3508383 > > Inside your gist note that both thread #0 and thread #11 (crasher) are > running SQLite code at the same time. That's a bad sign if they are > working on the same instance / data. > >> I'm using Sqlite3 from another thread, not the UI main thread. I have not >> specified any special options in Sqlite (like multithreading) but I know >> that there is alway exactly one addtional thread and that is querying the >> DB, so this should not be an issue. > > *one additional* means more than one. That's not ok if there's a > single connection and that access to it are not controlled (or > serialized) either by your code or by setting sqlite configuration. > >> Can somebody see what might be going on? >> >> René >> >> at (wrapper managed-to-native) >> Mono.Data.Sqlite.UnsafeNativeMethods.sqlite3_step (intptr) <IL 0x00025, >> 0xffffffff> >> at Mono.Data.Sqlite.SQLite3.Step (Mono.Data.Sqlite.SqliteStatement) >> [0x0001a] in >> /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs:166 >> at Mono.Data.Sqlite.SqliteDataReader.NextResult () [0x00129] in >> /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs:913 >> at Mono.Data.Sqlite.SqliteDataReader..ctor >> (Mono.Data.Sqlite.SqliteCommand,System.Data.CommandBehavior) [0x00051] in >> /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs:89 >> at (wrapper remoting-invoke-with-check) >> Mono.Data.Sqlite.SqliteDataReader..ctor >> (Mono.Data.Sqlite.SqliteCommand,System.Data.CommandBehavior) <IL 0x00021, >> 0xffffffff> >> at Mono.Data.Sqlite.SqliteCommand.ExecuteReader >> (System.Data.CommandBehavior) [0x00006] in >> /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommand.cs:539 >> at Mono.Data.Sqlite.SqliteCommand.ExecuteReader () [0x00000] in >> /Developer/MonoTouch/Source/mono/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommand.cs:551 >> at (wrapper remoting-invoke-with-check) >> Mono.Data.Sqlite.SqliteCommand.ExecuteReader () <IL 0x00038, 0xffffffff> >> at BrainloopMobile.Items.LocalServer.GetServer (int) [0x00024] in >> /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Items/LocalServer.cs:202 >> at BrainloopMobile.Items.LocalServer.GetAPIManager >> (BrainloopMobile.ServerUniqueDataroomID) [0x00043] in >> /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Items/LocalServer.cs:468 >> at BrainloopMobile.ProgressPreviewItem.ProgressLoop >> (BrainloopMobile.Progress.IProgressContext) [0x00000] in >> /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/ProgressPreviewItem.cs:160 >> at BrainloopMobile.Progress.ModalProgressController.StartProgress () >> [0x00014] in >> /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/Base/ModalProgressController.cs:329 >> at System.Threading.Thread.StartInternal () [0x0001d] in >> /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Threading/Thread.cs:697 >> at (wrapper runtime-invoke) object.runtime_invoke_void__this__ >> (object,intptr,intptr,intptr) <IL 0x0004e, 0xffffffff> >> >> Native stacktrace: >> >> 0 BrainloopBrowser 0x001b877c >> mono_handle_native_sigsegv + 284 >> 1 BrainloopBrowser 0x0012f108 >> mono_sigsegv_signal_handler + 248 >> 2 libsystem_c.dylib 0x9924286b _sigtramp + 43 >> 3 ??? 0xffffffff 0x0 + 4294967295 >> 4 libsqlite3.dylib 0x03c58b5d sqlite3_step + 2989 > > ^ that's SQLite (#4, native iOS library) calling an invalid pointer > (#3), triggering the sigtramp (#2, OS), catched/handled by the mono > runtime (#1, #0). > > \/ that's the managed frames (that you have above in the managed stack trace) > >> 5 ??? 0x138a97d7 0x0 + 327849943 >> 6 ??? 0x138a94c0 0x0 + 327849152 >> 7 ??? 0x138a62ab 0x0 + 327836331 >> 8 ??? 0x138a5caa 0x0 + 327834794 >> 9 ??? 0x138a5b20 0x0 + 327834400 >> 10 ??? 0x138a4f04 0x0 + 327831300 >> 11 ??? 0x138ad4f8 0x0 + 327865592 >> 12 ??? 0x138ad494 0x0 + 327865492 >> 13 ??? 0x13eb95d4 0x0 + 334206420 >> 14 ??? 0x13bc3234 0x0 + 331100724 >> 15 ??? 0x13bc1954 0x0 + 331094356 >> 16 ??? 0x13ff0264 0x0 + 335479396 >> 17 ??? 0x13f60d26 0x0 + 334892326 >> 18 ??? 0x0afb5be4 0x0 + 184245220 >> 19 BrainloopBrowser 0x001334c2 >> mono_jit_runtime_invoke + 722 >> 20 BrainloopBrowser 0x00296b9e >> mono_runtime_invoke + 126 >> 21 BrainloopBrowser 0x00296d0c >> mono_runtime_delegate_invoke + 140 >> 22 BrainloopBrowser 0x002f6e52 start_wrapper + 482 >> 23 BrainloopBrowser 0x00328d6a >> thread_start_routine + 154 >> 24 BrainloopBrowser 0x002d38f0 gc_start_thread + >> 80 >> 25 libsystem_c.dylib 0x99256557 _pthread_start + >> 344 >> 26 libsystem_c.dylib 0x99240cee thread_start + 34 >> >> _______________________________________________ >> MonoTouch mailing list >> [email protected] >> http://lists.ximian.com/mailman/listinfo/monotouch _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
