#1 2012-02-21 15:56:08

betoneto.tbo
Member
From: Brasil
Registered: 2011-05-10
Posts: 29

Incompatibility with FastMem

I got an AV while using SynCommons.pas and FastMM4.pas.

The AV has ocurred at the MOVE procedure, what is replaced by the SynCommons (internal move)...
I solved the problem using PUREPASCAL definition...


My suggestion is to create a DEFINITION to disable this optimization (copyrecord, move, etc.) in the SynCommons.pas.

I wasn't able to reproduce the AV with a sample code, sorry (I will continue trying..)

Offline

#2 2012-02-21 18:17:59

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,243
Website

Re: Incompatibility with FastMem

I think there is one of your objects which is used/accessed after having been released.

We are running FastMM4 in full debug mode on our regression tests - more than 6,300,000 individual checks are performed.
There is no memory leak nor invalid access violation with those tests.

The overloaded MOVE version is very stable: this is the one officially included into Delphi since Delphi 2007.

I suggest you run your code using FastMM4 in full debug mode, to get a list of possible memory corruption.
This would be better than disabling the new MOVE code - if your code is non stable, it may break later on your customer side.

You can also use our logging feature to get the exception trace when the A/V occurs.

Offline

#3 2012-02-22 13:33:09

betoneto.tbo
Member
From: Brasil
Registered: 2011-05-10
Posts: 29

Re: Incompatibility with FastMem

This was my AV:

[007526ED] SynCommons.Move (Line 8576, "JJWCommon\Third Part\pdf\SynCommons.pas" + 21) + $0
[0068219D] Windows.CopyMemory + $1
[0069F583] pngimage.TChunkIHDR.Assign (Line 2233, "JJWCommon\Third Part\PngImage\pngimage.pas" + 14) + $19
[006A43F8] pngimage.TPNGObject.AssignPNG (Line 5300, "JJWCommon\Third Part\PngImage\pngimage.pas" + 15) + $1A
[006A28B0] pngimage.TPNGObject.Assign (Line 4409, "JJWCommon\Third Part\PngImage\pngimage.pas" + 6) + $11
[016898DE] Graphics.TPicture.SetGraphic + $2A
[0070CBBE] JJWDBImage.TJJWDBImage.FDataLinkDataChange (Line 303, "JJWComponents\JJWDBImage.pas" + 21) + $12
[4080B2B8] Dbctrls.TFieldDataLink.RecordChanged + $18
[4080B0D8] Dbctrls.TFieldDataLink.SetField + $18
[4080B114] Dbctrls.TFieldDataLink.UpdateField + $30
[4080B21D] Dbctrls.TFieldDataLink.ActiveChanged + $5
[40348A2D] Db.TDataLink.SetActive + $21
[40348A5C] Db.TDataLink.UpdateState + $18
[40348B76] Db.TDataLink.DataEvent + $E
[4080B2FF] Dbctrls.TFieldDataLink.DataEvent + $F
[403491B1] Db.TDataSource.NotifyLinkTypes + $3D
[403491E2] Db.TDataSource.NotifyDataLinks + $1E
[40348FEA] Db.TDataSource.SetState + $16
[40349031] Db.TDataSource.UpdateState + $15
[403491FC] Db.TDataSource.DataEvent + $10
[4034DB78] Db.TDataSet.DataEvent + $130
[402F8288] Dbclient.TCustomClientDataSet.DataEvent + $58
[4034BC89] Db.TDataSet.SetState + $21
[4034C1BB] Db.TDataSet.OpenCursorComplete + $47
[4034C0EB] Db.TDataSet.SetActive + $77
[4034C12F] Db.TDataSet.SetActive + $BB
[4034BF14] Db.TDataSet.Open + $4
[00741EC0] UJJWDBXDataModule.TJJWDBXDataModule.SQLOpen (Line 1370, "JJWMiddleManagers\SQLManager\UJJWDBXDataModule.pas" + 7) + $6
[0658EFB3] Ufrmfatnfs.TFrmFATNFS.LnkPESPessoasClientesClick + $7F
[01701C38] Controls.TControl.Click + $64
[016A80FC] Buttons.TSpeedButton.Click + $0
[00833F26] JJWUIChildFormLinkButton.TJJWUIChildFormLinkButton.Click (Line 216, "JJWManagersComponents\JJWUIChildFormLinkButton.pas" + 94) + $2
[016A80E6] Buttons.TSpeedButton.MouseUp + $E2
[01702024] Controls.TControl.DoMouseUp + $2C
[01702099] Controls.TControl.WMLButtonUp + $69
[01701A98] Controls.TControl.WndProc + $188
[00834150] JJWUIChildFormLinkButton.TJJWUIChildFormLinkButton.WndProc (Line 296, "JJWManagersComponents\JJWUIChildFormLinkButton.pas" + 1) + $2
[01701868] Controls.TControl.Perform + $24
[01704B2E] Controls.TWinControl.IsControlMouseMsg + $82
[4000341A] System.@GetMem + $A
[01704C1A] Controls.TWinControl.WndProc + $DA
[40006F33] System.@LStrFromPCharLen + $23
[01704914] Controls.TWinControl.MainWndProc + $2C
[4003E038] Classes.TDataModule.WriteHeight + $20
[017506AD] Appevnts.TCustomApplicationEvents.DoMessage + $D
[0172568B] Forms.TApplication.ProcessMessage + $83
[017256C2] Forms.TApplication.HandleMessage + $A
[017258F2] Forms.TApplication.Run + $96
(000244B3) [004254B3]

Offline

#4 2012-02-22 18:20:10

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,243
Website

Re: Incompatibility with FastMem

Sounds like the pngimage unit is buggy, here...

Offline

Board footer

Powered by FluxBB