#1 2015-04-01 08:17:22

edwinsn
Member
Registered: 2010-07-02
Posts: 1,218

Error in TPrecisionTimer.Pause (win8 64bit) and (win7 32bit in a vbox)

Hi Arnaud,

I was having this EAccessViolation with an older version, so I updated my copy of mORMot yesterday. While it's Ok on my Win7 64bit on a physical box, but the error still happens at least in two environments according to my tests:
1 - a win8 64bit in a virtual box.
2 - a Win7 32bit in a Virtual Box.

Additionally, another test was on another physical which runs Win 8.1 64bit and the same error happened.

I wish you can help. Thanks.

date/time          : 2015-04-01, 15:10:27, 623ms
operating system   : Windows 8 x64 
processors         : 2x Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz
physical memory    : 1246/2048 MB (free/total)
compiled with      : Delphi XE4
callstack crc      : $005eb437, $d7f9a897, $e910b5c5
exception number   : 1
exception class    : EAccessViolation
exception message  : Access violation at address 774A753C in module 'ntdll.dll'. Write of address 00000010.

main thread ($598):
774a753c ntdll.dll                                RtlQueryPerformanceCounter
006c56f7 Program1.exe SynCommons           38120 TPrecisionTimer.Pause
00a4559b Program1.exe mORMotSQLite3          747 TSQLRestServerDB.GetAndPrepareStatementRelease
00a473ec Program1.exe mORMotSQLite3         1238 TSQLRestServerDB.MainEngineList
7749ddb6 ntdll.dll                                KiUserExceptionDispatcher
008243bb Program1.exe mORMot               33928 TSQLRestServer.EngineList
00813988 Program1.exe mORMot               28691 TSQLRest.ExecuteList
0081154f Program1.exe mORMot               27930 TSQLRest.MultiFieldValues
00809b2a Program1.exe mORMot               25575 TSQLRecord.CreateAndFillPrepare
00ba8d8c Program1.exe DataStoreClient        139 TDataStoreClient.LoadAllAccounts
......
00543c58 Program1.exe System.Classes             StdWndProc
768493cc user32.dll                               DispatchMessageW
006898bf Program1.exe Vcl.Forms                  TApplication.ProcessMessage
00689902 Program1.exe Vcl.Forms                  TApplication.HandleMessage
00689c3d Program1.exe Vcl.Forms                  TApplication.Run
00e17b47 Program1.exe Program1              231 initialization
7701495b KERNEL32.DLL                             BaseThreadInitThunk

Delphi XE4 Pro on Windows 7 64bit.
Lazarus trunk built with fpcupdelux on Windows with cross-compile for Linux 64bit.

Offline

#2 2015-04-01 10:02:19

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

Re: Error in TPrecisionTimer.Pause (win8 64bit) and (win7 32bit in a vbox)

TSQLRestServerDB.PrepareStatement should have set fStatementTimer := @fStaticStatementTimer so fStatementTimer^.Pause should not trigger this error...
I was not able to reproduce the issue here.
Was there an exception during the SQL statement execution?
What is the executed SQL statement?

I've added some code to avoid such GPF if fStatementTimer=nil.
See http://synopse.info/fossil/info/5faf133f86

But more feedback is needed, so that we may understand why fStatementTime=nil in your case!

Offline

#3 2015-04-01 14:54:52

edwinsn
Member
Registered: 2010-07-02
Posts: 1,218

Re: Error in TPrecisionTimer.Pause (win8 64bit) and (win7 32bit in a vbox)

Hi Arnaud,

The latest revision works without this problem. Thanks!

The executed SQL is something like

TSQLAccount.CreateAndFillPrepare(Self, 'ORDER BY AccountType, UserName'); 

and I don't think there is anything special......


Delphi XE4 Pro on Windows 7 64bit.
Lazarus trunk built with fpcupdelux on Windows with cross-compile for Linux 64bit.

Offline

Board footer

Powered by FluxBB