Hello,

I am using SQLite compiled with SQLITE_ENABLE_MEMORY_MANAGEMENT on Win32.

I execute the following psydocode, all with same DB handle:

* In application's main thread: sqlite3_open
* Create a new thread
* In new thread: sqlite3_close

This creates an access violation in pager.c, lines 2065 to 2076:

#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
  /* Remove the pager from the linked list of pagers starting at 
  ** ThreadData.pPager if memory-management is enabled.
  */
  if( pPager==pTsd->pPager ){
    pTsd->pPager = pPager->pNext;
  }else{
    Pager *pTmp;
    for(pTmp = pTsd->pPager; pTmp->pNext!=pPager; pTmp=pTmp->pNext);
    pTmp->pNext = pPager->pNext;
  }
#endif

While I understand from the FAQ that it might be problematic to use more than 
one thread with SQLITE_ENABLE_MEMORY_MANAGEMENT, I wonder if SQLite should 
cause an AV in this case?

I even found that other SQL instructions, like INSERT, work fine when called 
from the 2nd thread.

Could anybody help, please?

Thanks & regards,

Ralf

Reply via email to