Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 3 of 3 total
Thread Memory limits on blob reading?
Tue, Mar 9 2010 4:09 AMPermanent Link

Matthew Jones

Are there any memory limits on blob reading, particularly that would give trouble
when multiple threads are reading the same record?

There is plenty of memory available, and little in use, so it is likely to be
something other than actual memory limits.

exception class   : EOutOfMemory
005a92dc +020 MyApp.exe dbisamlb              ResizeBuffer
00583902 +012 MyApp.exe dbisamen              TBlobBuffer.SetSize
0057839f +0df MyApp.exe dbisamen              TDataCursor.ReadBlob
00577fb8 +3a4 MyApp.exe dbisamen              TDataCursor.OpenBlob
005e57bd +12d MyApp.exe dbisamtb              TDBISAMBlobStream.Create
005d9b41 +01d MyApp.exe dbisamtb              TDBISAMDataSet.CreateBlobStream
004ff83a +012 MyApp.exe DB                    TBlobField.GetAsString
00960a22 +082 MyApp.exe dFileStore            TdmFileStore.GetFileContents

The app overall is using 155187360 bytes on a 3Gb PC.

/Matthew Jones/
Tue, Mar 9 2010 1:13 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< Are there any memory limits on blob reading, particularly that would give
trouble when multiple threads are reading the same record? >>

No.  The problem could be related to several things:

1) Severe memory fragmentation (possible with older Delphi memory managers,
but unlikely with FastMM4).
2) Corruption - the BLOB size in the table record is invalid, causing the
memory manager to try and allocate a block of memory that is very large or a
negative number.

Does the table check out using VerifyTable ?

--
Tim Young
Elevate Software
www.elevatesoft.com

Wed, Mar 10 2010 4:29 AMPermanent Link

Matthew Jones

> Does the table check out using VerifyTable ?

I will find out. The service verifies on startup, so should be logged.

/Matthew Jones/
Image