On Thu, Mar 23, 2017 at 9:01 AM, Dan Kennedy <danielk1...@gmail.com> wrote:
> On 03/23/2017 10:00 PM, Subramaniyan, Ganesan (G.) wrote: > >> Hi, >> We are facing dynamic memory pool corruption issue while using SQLite. >> Based on our investigation we suspect SQLite freeing memory bypassing the >> memory management API'S registered as below. >> >> We have registered the memory allocation routines as below. >> static const sqlite3_mem_methods mqxmem = { >> mqxMalloc, >> mqxFree, >> mqxRealloc, >> mqxSize, >> mqxRoundup, >> mqxInit, >> mqxShutdown, >> NULL >> }; >> sqlite3_config(SQLITE_CONFIG_MALLOC, &mqxmem); >> >> Despite this, is there any sort of configurations by which SQLite might >> still use its own or standard library APIs to allocate/reallocate or free >> the memory, bypassing the memory management APIs registered above? >> > > > No. Following a successful call to sqlite3_config() SQLite allocates and > frees memory using the configured routines exclusively[1]. There are no > direct calls to malloc()/free() or similar in the library. > > Are you checking the return value of sqlite3_config()? If > sqlite3_initialize() or any other sqlite3_*() function has already been > called when sqlite3_config() is invoked it will fail and the memory > allocation routines will not be configured. > > https://sqlite.org/c3ref/config.html > > What symptoms are you seeing that suggest SQLite is bypassing your memory > allocation functions? > There is an internal check to see if sqlite has alerady 'initialized' the config needs to be set before it's initialized. There's a error thrown void errorLogCallback(void *pArg, int iErrCode, const char *zMsg){ printf( "Sqlite3 Err: (%d) %s", iErrCode, zMsg); } sqlite3_config( SQLITE_CONFIG_LOG, errorLogCallback, 0); that is sqlite3_config is called late it logs an 'invalid operation' sort of message. > > Dan. > > [1] It may also make use of static buffers supplied by calls to > sqlite3_config(SQLITE_CONFIG_HEAP), CONFIG_PAGECACHE or CONFIG_SCRATCH, > but I'm guessing you have made no such calls. Most apps do not. > > > > > > We are using SQLite version 3.7.10 running on Freescale MQX hosted on ARM >> A5 Cortex processor. >> We have enabled SQLITE_ENABLE_MEMORY_MANAGEMENT configuration and using >> sqlite3_release_memory()<https://www.sqlite.org/c3ref/release_memory.html> >> very often, after every fetch/write operations. >> >> Thanks & Regards, >> Ganesan.S >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users