On 3/12/15, Matthias Schmitt <freak002 at mmp.lu> wrote:
> Hello,
>
> I know, I am touching a hot iron, when claiming that sqlite might have a
> memory leak. But I am trying to debug memory leaks related to sqlite now
> since 4 days and I am running against walls.
> Here is my problem:
>
> - I am writing an iPhone app using iOS 8.2, Xcode 4.2, sqlite 3.8.8.3.
>
> - The memory leak appears in the iPhone simulator more often, than on an
> original iPhone device, but it appears always.

Let's start with the basics:  How do you know that the memory was in
fact leaked and is not instead simply being held for reuse?

>
> - The leak appears with totally different type of queries. It might be, that
> a leak appears in a specific query in one debug session and in another debug
> session, it doesn?t (which makes it difficult to debug and drives me totally
> nuts). For me it seems to be related to a timing/threading issue. This is
> why it makes not much sense to offer some code here.
>
> - When debugging inside sqlite the leak is always related to the same code
> line, independent from the type of database command (select, insert,
> delete).
>
> - It appears always with the memory allocation in sqlite.c line 16872 in
> function sqlite3MemMalloc
>  Here is the line: void *p = SQLITE_MALLOC( nByte );
>
> - The leaked memory has always a size of nByte = 4344 bytes.
>
> - Here is a typical call stack up to the leaked code:
>
>   0 libsystem_malloc.dylib malloc_zone_malloc
>   1 MYAPP sqlite3MemMalloc sqlite3.c:16872
>   2 MYAPP mallocWithAlarm sqlite3.c:20510
>   3 MYAPP sqlite3Malloc sqlite3.c:20541
>   4 MYAPP pcache1Alloc sqlite3.c:39749
>   5 MYAPP pcache1AllocPage sqlite3.c:39833
>   6 MYAPP pcache1FetchStage2 sqlite3.c:40266
>   7 MYAPP pcache1Fetch sqlite3.c:40367
>   8 MYAPP sqlite3PcacheFetch sqlite3.c:39119
>   9 MYAPP sqlite3PagerAcquire sqlite3.c:46573
>  10 MYAPP btreeGetPage sqlite3.c:54380
>  11 MYAPP getAndInitPage sqlite3.c:54435
>  12 MYAPP moveToRoot sqlite3.c:57233
>  13 MYAPP sqlite3BtreeMovetoUnpacked sqlite3.c:57465
>  14 MYAPP sqlite3VdbeExec sqlite3.c:74055
>  15 MYAPP sqlite3Step sqlite3.c:68839
>  16 MYAPP sqlite3_step sqlite3.c:68905
>  17 MYAPP -[FMResultSet nextWithError:] FMResultSet.m:155
>  18 MYAPP -[FMResultSet next] FMResultSet.m:150
>  19 MYAPP __40-[MYAPPAppDelegate loadPreferences]_block_invoke
> MYAPPAppDelegate.m:323
>  20 MYAPP __30-[FMDatabaseQueue inDatabase:]_block_invoke
> FMDatabaseQueue.m:150
>  21 libdispatch.dylib _dispatch_client_callout
>  22 libdispatch.dylib _dispatch_barrier_sync_f_invoke
>  23 MYAPP -[FMDatabaseQueue inDatabase:] FMDatabaseQueue.m:147
>  24 MYAPP -[MYAPPAppDelegate loadPreferences] MYAPPAppDelegate.m:321
>  25 MYAPP -[MYAPPAppDelegate application:didFinishLaunchingWithOptions:]
> MYAPPAppDelegate.m:157
>  26 UIKit -[UIApplication
> _handleDelegateCallbacksWithOptions:isSuspended:restoreState:]
>  27 UIKit -[UIApplication
> _callInitializationDelegatesForMainScene:transitionContext:]
>  28 UIKit -[UIApplication _runWithMainScene:transitionContext:completion:]
>  29 UIKit -[UIApplication workspaceDidEndTransaction:]
>  30 FrontBoardServices __31-[FBSSerialQueue performAsync:]_block_invoke
>  31 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
>  32 CoreFoundation __CFRunLoopDoBlocks
>  33 CoreFoundation __CFRunLoopRun
>  34 CoreFoundation CFRunLoopRunSpecific
>  35 UIKit -[UIApplication _run]
>  36 UIKit UIApplicationMain
>  37 MYAPP main main.m:16
>  38 libdyld.dylib start
>
> Does anybody have an idea how to debug something like this? Any help would
> be highly appreciated.
>
> Best regards
>
> Matthias Schmitt
>
> magic moving pixel s.a.
> 23, Avenue Grande-Duchesse Charlotte
> L-3441 Dudelange
> Luxembourg
> Phone: +352 54 75 75
> http://www.mmp.lu
>
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>


-- 
D. Richard Hipp
drh at sqlite.org

Reply via email to