On Sun, 7 Jun 2015 21:36:51 +0200 George <g.lister at nodeunit.com> wrote:
> On Sat, 06 Jun 2015 21:14:46 +0700 > Dan Kennedy <danielk1977 at gmail.com> wrote: > > > On 06/06/2015 03:19 AM, George wrote: > > > Hello everyone, > > > > > > I am new to the list. I am working on an application in which I > > > will be embedding SQLite as the database engine. The application > > > is written in C. > > > > > > I am currently having an issue which I am not able to resolve at > > > the moment so I thought I would ask here since I am just starting > > > out with SQLite. > > > > > > My problem is, from my point of view, that I am not able to > > > perform an action to the same database file in the following > > > manner: > > > > > > 1) I open a database via: > > > sqlite3_initialize() > > > sqlite3_open_v2 > > > 2) I do some work on getting metadata from the database like table > > > names and their fields and then > > > 3) I close the connection via: > > > sqlite3_close_v2 > > > sqlite3_shutdown > > > 4) After all of this is done I wish to process an import file so I > > > need to open another connection to the same database file and run > > > some statements but when I try to do that I get this on the open > > > call in step 1 (above): > > > > I guess that assert() failing means the heap is corrupted. Which > > might be SQLite related or might not. > > > > Running the app under [valgrind] might tell you more. Post its > > complete output here if there are errors but it's not obvious what > > the problem is. > > > > Dan. > > Thanks to everyone who answered! > > I am doing this on Linux not on an embedded system, Ubuntu 14.04 LTS > to be more precise. > > I removed the initialize and shutdown which I had wrapped into my > connect and close methods after reading the "Using SQLite" book and > probably misunderstanding it... > > The problem is still there even after I removed the 2 function calls. > > I ran the whole app under the valgrind memory checker and it and > valgrind crashed at the end when the explosion happens. Here is the > summary: > > ==6013== HEAP SUMMARY: > ==6013== in use at exit: 0 bytes in 0 blocks > ==6013== total heap usage: 0 allocs, 0 frees, 0 bytes allocated > ==6013== > ==6013== All heap blocks were freed -- no leaks are possible > ==6013== > ==6013== For counts of detected and suppressed errors, rerun with: -v > ==6013== Use --track-origins=yes to see where uninitialised values > come from ==6013== ERROR SUMMARY: 2113 errors from 137 contexts > (suppressed: 0 from 0) > Aborted (core dumped) > make: *** [vg-check-import] Error 134 > > I do check the return codes and print any errors with sqlite3_errmsg > to see if I can move into another direction. > > I also checked my code and I do finalize my statement before the > close. > > It seems that when I go second time around things go bad... > > Not sure what is going on here... > Looking ... > Thanks guys, > George Well just for the record. This was a self inflicted problem I had made a call to a function which did not finalize a statement... once that was fixed everything works as expected. Thanks again. > > > > > > > > > > > > > > > malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) > > > (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof > > > (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) > > > (old_size) > > >> = (unsigned long)((((__builtin_offsetof (struct malloc_chunk, > > >> fd_nextsize))+((2 *(sizeof(size_t)) < __alignof__ (long double) ? > > >> __alignof__ (long double) : 2 *(sizeof(size_t))) - 1)) & ~((2 > > >> *(sizeof(size_t)) < __alignof__ (long double) ? __alignof__ (long > > >> double) : 2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) > > >> && ((unsigned long) old_end & pagemask) == 0)' failed. Aborted > > >> (core dumped) > > > This happens in on line 17149 when calling: > > > > > > p = SQLITE_MALLOC( nByte+8 ) > > > > > > nByte is 64000 > > > > > > in sqlite3.c (amalgamation latest version > > > sqlite-amalgamation-3081002.zip) > > > > > > I am compiling and running the code on: > > > Linux x140e 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:28 > > > UTC 2015 i686 athlon i686 GNU/Linux > > > > > > NAME="Ubuntu" > > > VERSION="14.04.2 LTS, Trusty Tahr" > > > ID=ubuntu > > > ID_LIKE=debian > > > PRETTY_NAME="Ubuntu 14.04.2 LTS" > > > VERSION_ID="14.04" > > > HOME_URL="http://www.ubuntu.com/" > > > SUPPORT_URL="http://help.ubuntu.com/" > > > BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" > > > > > > I have compiled sqlite.o with the following: > > > > > > gcc -c -Wall -O0 -g -std=c99 -Dlinux -I/usr/local/include > > > sqlite3.c \ -DSQLITE_THREADSAFE=1 -DSQLITE_OMIT_LOAD_EXTENSION -o > > > obj/sqlite3.o > > > > > > Any suggestions or directions greatly appreciated. > > > TIA, > > > George > > > _______________________________________________ > > > sqlite-users mailing list > > > sqlite-users at mailinglists.sqlite.org > > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users at mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users