Hi ?? ? 
?I?used?SQLite(SQLITE_VERSION_NUMBER?3008011)?in?production?environment?on?Android?platform.?SQLite?was?built?with?encryption?extension?which?implemented?by?myself.?Recently?there?were?crash?cases?for?got?signal?11,?it?seemed?that?SQLite?has?visited?invalid?memory?address.?The?code?line?was?"id->pMethods->xWrite(id,?pBuf,?amt,?offset)",?actually?the?value?of?id?was?00004c77?and?pMethods?was?NULL.
? ? 
?SQLite?runned?with?multithread?mode?and?the?journal?mode?was?DELELE.?There?were?1?write?thread?and?3?read?threads,?each?of?thread?has?own?DB?hand?which?can?not?be?passed?between?threads.?Threads?was?controlled?by?RWLOCK,?so?there?should?be?only?1?write?thread?or?only?read?threads?can?visit?DB?simultaneously.?I?got?confused?why?did?"id"?and?"pMethods"?became?an?invalid?address.I?tried?to?reproduce?the?crash?but?failed.
? ? 
?By?the?way,?when?SQLite?runned?with?one?write?thread?and?only?one?read?thread,?there?were?no?crash?cases.
?
Looking?forward?your?help,thanks!

Crash?stack?as?follows:
sqlite3OsWrite
jni/sqlitecrypto/sqlite3/sqlite3.c:16651
syncJournal
jni/sqlitecrypto/sqlite3/sqlite3.c:46501
sqlite3PagerCommitPhaseOne
jni/sqlitecrypto/sqlite3/sqlite3.c:48567
sqlite3BtreeCommitPhaseOne
jni/sqlitecrypto/sqlite3/sqlite3.c:57490
vdbeCommit
jni/sqlitecrypto/sqlite3/sqlite3.c:67962
sqlite3VdbeExec
jni/sqlitecrypto/sqlite3/sqlite3.c:75110
sqlite3Step
jni/sqlitecrypto/sqlite3/sqlite3.c:70740
sqlite3_exec

My?Compiler?parameters?as?follows:
-DSQLITE_HAS_CODEC
-DSQLITE_THREADSAFE=2
-DNDEBUG=1
-DSQLITE_DEFAULT_MEMSTATUS=0
-DSQLITE_POWERSAFE_OVERWRITE=1
-DSQLITE_ENABLE_MEMORY_MANAGEMENT=1
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576

Reply via email to