#1 2014-02-21 07:26:15

mingda
Member
Registered: 2013-01-04
Posts: 121

TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

a good news, now EInterfaceFactoryException occur is reproduced in debug mode after update to 2014-02-20 version http://synopse.info/fossil/info/2894b0881b, not like before occur random time and line.

Exception

---------------------------
Debugger Exception Notification
---------------------------
Project TestSQL3.exe raised exception class EInterfaceFactoryException with message 'Invalid fake ICalculator.ComplexCall interface call: : {
"ErrorCode":500,
"ErrorText":"Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000"
}'.
---------------------------
Break   Continue   Help   
---------------------------

Call Stack

:7c80bee7 kernel32.RaiseException + 0x3c
mORMot.RaiseError(': {'#$D#$A'"ErrorCode":500,'#$D#$A'"ErrorText":"Exception EAccessViolation: Access violation at address 00465C76 in module ''TestSQL3.exe''. Read of address 0016E000"'#$D#$A'}')
mORMot.InternalProcess
mORMot.TInterfacedObjectFake.FakeCall($12FA00)
:017700a1 
SynSelfTests.TestCalculator(Pointer($12C7034) as ICalculator)
SynSelfTests.TTestServiceOrientedArchitecture.Test($12FD94,700)
SynSelfTests.TTestServiceOrientedArchitecture.ClientTest(TSQLRestRoutingREST,False,False,[])
SynSelfTests.TTestServiceOrientedArchitecture.ClientSideREST
SynCommons.TSynTests.Run
mORMotSelfTests.SQLite3ConsoleTests
TestSQL3.TestSQL3
:7c82f23b ; C:\WINDOWS\system32\kernel32.dll

Source Line:

procedure TTestServiceOrientedArchitecture.ClientTest(aRouting: TSQLRestServerURIContextClass;
...
  Test(Inst);
  Inst.I := nil;
  if CheckFailed(fClient.Services.GUID(IID_ICalculator).Get(Inst.I)) then
    exit;
  Test(Inst);    <== Exception at call here    Line: 8867
  Finalize(Inst);

procedure TTestServiceOrientedArchitecture.Test(const Inst: TTestServiceInstances;
  Iterations: Cardinal=700);
...
  TestCalculator(Inst.I);  <== LIne: 8699

Console Output:

   Synopse mORMot Framework Automated tests
  ------------------------------------------


1. Synopse libraries

 1.1. Low level common:
  - System copy record: 22 assertions passed  46.48ms
  - TDynArray: 1,027,702 assertions passed  466.76ms
  - TDynArrayHashed: 1,200,629 assertions passed  406.58ms
  - TObjectListHashed: 999,889 assertions passed  1.11s
  - TObjectDynArrayWrapper: 167,501 assertions passed  101.15ms
  - Fast string compare: 7 assertions passed  373us
  - IdemPropName: 30 assertions passed  443us
  - Url encoding: 105 assertions passed  2.06ms
  - GUID: 9,005 assertions passed  5.30ms
  - IsMatch: 599 assertions passed  656us
  - Soundex: 35 assertions passed  342us
  - Numerical conversions: 1,065,784 assertions passed  579.28ms
  - Curr 64: 20,053 assertions passed  6.65ms
  - CamelCase: 11 assertions passed  962us
  - Bits: 4,774 assertions passed  2.01ms
  - Ini files: 7,004 assertions passed  83.10ms
  - UTF8: 79,102 assertions passed  2.99s
  - Iso 8601 date and time: 32,006 assertions passed  11.57ms
  - Url decoding: 1,100 assertions passed  870us
  - Mime types: 20 assertions passed  379us
  - TSynTable: 873 assertions passed  7.75ms
  - TSynCache: 404 assertions passed  682us
  - TSynFilter: 1,005 assertions passed  5.37ms
  - TSynValidate: 677 assertions passed  1.56ms
  - TSynLogFile: 42 assertions passed  2.41ms
  Total failed: 0 / 4,618,379  - Low level common PASSED  5.86s

 1.2. Low level types:
  - RTTI: 52 assertions passed  14.18ms
  - Url encoding: 200 assertions passed  1.94ms
  - Encode decode JSON: 262,007 assertions passed  373.53ms
  - TDocVariant: 1,611 assertions passed  79.05ms
!  - BSON: 8 / 20,000,184 FAILED  6.34s
  Total failed: 8 / 20,264,054  - Low level types FAILED  6.81s

 1.3. Big table:
  - TSynBigTable: 19,179 assertions passed  180.74ms
  - TSynBigTableString: 16,135 assertions passed  75.20ms
  - TSynBigTableMetaData: 384,060 assertions passed  3.30s
  - TSynBigTableRecord: 452,185 assertions passed  7.75s
  Total failed: 0 / 871,559  - Big table PASSED  11.31s

 1.4. Synopse PDF:
!  - TPdfDocument: 1 / 2 FAILED  1.97s
  - TPdfDocumentGDI: 5 assertions passed  325.92ms
  Total failed: 1 / 7  - Synopse PDF FAILED  2.30s

 1.5. Cryptographic routines:
  - Adler32: 1 assertion passed  503us
  - MD5: 1 assertion passed  1.96ms
  - SHA1: 5 assertions passed  383us
  - SHA256: 5 assertions passed  620us
  - AES256: 16,815 assertions passed  1.97s
  - RC4: 1 assertion passed  353us
  - Base64: 11,994 assertions passed  302.22ms
  - CompressShaAes: 1,683 assertions passed  7.13ms
  Total failed: 0 / 30,505  - Cryptographic routines PASSED  2.30s

 1.6. Compression:
  - In memory compression: 12 assertions passed  609.43ms
  - GZIP format: 19 assertions passed  1.08s
  - ZIP format: 36 assertions passed  2.10s
  - SynLZO: 3,006 assertions passed  191.92ms
  - SynLZ: 29,018 assertions passed  1.14s
  Total failed: 0 / 32,091  - Compression PASSED  5.14s


2. mORMot

 2.1. File based:
  - Database direct access: 10,138 assertions passed  528.52ms
  - Virtual table direct access: 12 assertions passed  16.78ms
  - TSQLTableJSON: 109,072 assertions passed  288.19ms
  - TSQLRestClientDB: 605,151 assertions passed  15.18s
  - Regexp function: 6,016 assertions passed  75.17ms
  Total failed: 0 / 730,389  - File based PASSED  16.11s

 2.2. File based memory map:
  - Database direct access: 10,136 assertions passed  545.84ms
  - Virtual table direct access: 12 assertions passed  4.03ms
  - TSQLTableJSON: 109,072 assertions passed  256.04ms
  - TSQLRestClientDB: 605,150 assertions passed  15.04s
  - Regexp function: 6,016 assertions passed  47.79ms
  Total failed: 0 / 730,386  - File based memory map PASSED  15.91s

 2.3. File based WAL:
  - Database direct access: 10,138 assertions passed  526.88ms
  - Virtual table direct access: 12 assertions passed  2.43ms
  - TSQLTableJSON: 109,072 assertions passed  258.61ms
  - TSQLRestClientDB: 605,151 assertions passed  15.17s
  - Regexp function: 6,016 assertions passed  44.71ms
  Total failed: 0 / 730,389  - File based WAL PASSED  16.01s

 2.4. Memory based:
  - Database direct access: 10,136 assertions passed  475.93ms
  - Virtual table direct access: 12 assertions passed  2.37ms
  - TSQLTableJSON: 109,072 assertions passed  241.85ms
  - TSQLRestClientDB: 673,447 assertions passed  16.43s
  - Regexp function: 6,016 assertions passed  51.39ms
  - RTree: 140,000 assertions passed  2.32s
  Total failed: 0 / 938,683  - Memory based PASSED  19.54s

 2.5. Basic classes:
!  - TSQLRecord: 11 / 65 FAILED  6.29s
  - TSQLRecordSigned: 200 assertions passed  15.92ms
  - TSQLModel: 3 assertions passed  717us
  Total failed: 11 / 268  - Basic classes FAILED  6.32s

 2.6. Client server access:
  - TSQLHttpServer: 2 assertions passed  373.68ms
     using THttpApiServer
  - TSQLHttpClient: 3 assertions passed  474.67ms
  - HTTP client keep alive: 3,087 assertions passed  1.23s
     4818 B, first 10.67ms, done 1.15s i.e. 862/s, aver. 1.15ms, 4.0 MB/s
  - HTTP client multi connect: 3,087 assertions passed  1.19s
     4818 B, first 1.47ms, done 1.14s i.e. 873/s, aver. 1.14ms, 4.0 MB/s
  - HTTP client encrypted: 3,087 assertions passed  1.28s
     4818 B, first 2.76ms, done 1.22s i.e. 816/s, aver. 1.22ms, 3.8 MB/s
  - Named pipe access: 3,089 assertions passed  1.09s
     4818 B, first 294.72ms, done 531.50ms i.e. 1881/s, aver. 531us, 8.8 MB/s
  - Local window messages: 3,088 assertions passed  106.16ms
     4818 B, first 307us, done 89.56ms i.e. 11164/s, aver. 89us, 52.2 MB/s
  - Direct in process access: 3,056 assertions passed  83.06ms
     4818 B, first 91us, done 72.61ms i.e. 13770/s, aver. 72us, 64.3 MB/s
  - HTTP several DB servers: 9,604 assertions passed  5.22s
     4818 B, first 1.82ms, done 1.09s i.e. 910/s, aver. 1.09ms, 4.2 MB/s
     4818 B, first 1.92ms, done 1.09s i.e. 915/s, aver. 1.09ms, 4.2 MB/s
     4818 B, first 1.30ms, done 1.10s i.e. 906/s, aver. 1.10ms, 4.2 MB/s
  Total failed: 0 / 28,103  - Client server access PASSED  11.14s

 2.7. Service oriented architecture:
  - Weak interfaces: 56 assertions passed  572us
  - Service initialization: 200 assertions passed  6.75ms
  - Direct call: 566,568 assertions passed  64.28ms
  - Server side: 566,587 assertions passed  64.77ms

! Exception EInterfaceFactoryException raised with messsage:
!  Invalid fake ICalculator.ComplexCall interface call: : {
"ErrorCode":500,
"ErrorText":"Exception EAccessViolation: Access violation at address 00465C76 in
 module 'TestSQL3.exe'. Read of address 0016E000"
}


Synopse framework used: 1.18
SQlite3 engine used: 3.8.3.1
Generated with: Delphi XE compiler

Time elapsed for all tests: 173.35s
Tests performed at 2014-2-21 14:24:08

Total assertions failed for all test suits:  20 / 28,974,813
! Some tests FAILED: please correct the code.

Done - Press ENTER to Exit
20140221 15104225 warn  Test failed 
20140221 15104447 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023B4AE SynSelfTests.TTestLowLevelTypes._BSON (4478) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15104447 warn  Test failed 
20140221 15105538 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023CF04 SynSelfTests.TTestLowLevelTypes._BSON (4571) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15105538 warn  Test failed 
20140221 15105735 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023CF66 SynSelfTests.TTestLowLevelTypes._BSON (4572) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15105735 warn  Test failed 
20140221 15110135 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023CFC8 SynSelfTests.TTestLowLevelTypes._BSON (4573) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15110135 warn  Test failed 
20140221 15110210 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023D070 SynSelfTests.TTestLowLevelTypes._BSON (4574) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15110210 warn  Test failed 
20140221 15110300 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023D148 SynSelfTests.TTestLowLevelTypes._BSON (4575) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15110300 warn  Test failed 
20140221 15110408 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023D204 SynSelfTests.TTestLowLevelTypes._BSON (4576) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15110408 warn  Test failed 
20140221 15110522 fail  TTestLowLevelTypes(0108A8E8) Low level types: BSON "" stack trace API 0023D2B0 SynSelfTests.TTestLowLevelTypes._BSON (4577) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15111700 warn  Test failed 
20140221 15111837 fail  TTestSynopsePDF(0108ABF8) Synopse PDF: TPdfDocument "" stack trace API 002488F1 SynSelfTests.TTestSynopsePDF._TPdfDocument (5712) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15123204 warn  Test failed 
20140221 15123861 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00243C52 SynSelfTests.TTestBasicClasses._TSQLRecord (4966) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15123861 warn  Test failed 
20140221 15123958 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00243CFC SynSelfTests.TTestBasicClasses._TSQLRecord (4976) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15123958 warn  Test failed 
20140221 15124028 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00243DF1 SynSelfTests.TTestBasicClasses._TSQLRecord (4989) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124028 warn  Test failed 
20140221 15124054 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00244080 SynSelfTests.TTestBasicClasses._TSQLRecord (5008) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124054 warn  Test failed 
20140221 15124119 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00244207 SynSelfTests.TTestBasicClasses._TSQLRecord (5020) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124119 warn  Test failed 
20140221 15124153 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 002443E5 SynSelfTests.TTestBasicClasses._TSQLRecord (5034) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124153 warn  Test failed 
20140221 15124224 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 0024447F SynSelfTests.TTestBasicClasses._TSQLRecord (5040) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124224 warn  Test failed JSON object as text
20140221 15124350 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "JSON object as text" stack trace API 002444FB SynSelfTests.TTestBasicClasses._TSQLRecord (5043) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124350 warn  Test failed 
20140221 15124423 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00244556 SynSelfTests.TTestBasicClasses._TSQLRecord (5045) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124423 warn  Test failed 
20140221 15124451 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 00244740 SynSelfTests.TTestBasicClasses._TSQLRecord (5055) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15124451 warn  Test failed 
20140221 15124525 fail  TTestBasicClasses(0108AD80) Basic classes: TSQLRecord "" stack trace API 002447AA SynSelfTests.TTestBasicClasses._TSQLRecord (5058) 0026DDB7 mORMotSelfTests.SQLite3ConsoleTests (208) 
20140221 15130742 EXCOS EAccessViolation (C0000005) at 00064C76 SynCommons.RawUnicodeToUtf8 (11410)  stack trace API 00094CB0 SynCommons.SynRtlUnwind (36505) 0000614C System.@HandleOnException 
20140221 15194346 EXC   EInterfaceFactoryException ("Invalid fake ICalculator.ComplexCall interface call: : {\r\n\"ErrorCode\":500,\r\n\"ErrorText\":\"Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000\"\r\n}") at 0019034E mORMot.RaiseError (31790)  stack trace API 00094CB0 SynCommons.SynRtlUnwind (36505) 0000614C System.@HandleOnException 

If need any help please let me know, thanks!

Offline

#2 2014-02-21 13:32:37

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

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

Could you try to find the exact context where the error occur?

Either:
- reproduce it in the IDE;
- enable the full logging, then extract here the involved log block.

Offline

#3 2014-02-21 13:59:23

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

full log file is 232.642kb, so big, this is the last part contain the exception, it is also can reproduce in XE IDE:

20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Add
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Add
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Add
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Add -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":[1577903505]}
20140221 21433304  !  -    	00.000.023
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Multiply
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Multiply
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Multiply
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Multiply -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[1653871241439227118]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Subtract
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Subtract
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Subtract
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Subtract -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[-1.7044935781023E-10]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToText
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToText
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToText
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToText -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":["-9206532.94"]}
20140221 21433304  !  -    	00.000.023
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToTextFunc
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToTextFunc
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToTextFunc
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToTextFunc -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":["-1.70509807113558E-9"]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.SpecialCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.SpecialCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.SpecialCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.SpecialCall -> 200
20140221 21433304  !  -    		00.000.014
20140221 21433304  ! ret   		{"result":[-920653283,2498556800,6,69888]}
20140221 21433304  !  -    	00.000.024
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ComplexCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ComplexCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ComplexCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ComplexCall -> 200
20140221 21433304  !  -    		00.000.037
20140221 21433304  ! ret   		{"result":[["ABC","DEF","GHIJK","one,two,three"],{"ID":-920653293,"JSON":"-920653294,-1796410497","TimeStamp64":2498556799},-1.70509807113558E-9,{"ID":-920653294,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":2498556800}]}
20140221 21433304  !  -    	00.000.052
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Add
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Add
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Add
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Add -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[1313745990]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Multiply
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Multiply
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Multiply
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Multiply -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[191436939832105125]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Subtract
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Subtract
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Subtract
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Subtract -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[-2.37285383131019E-10]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToText
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToText
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToText
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToText -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":["1669289.25"]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToTextFunc
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToTextFunc
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToTextFunc
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToTextFunc -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":["-2.43676965590566E-10"]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.SpecialCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.SpecialCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.SpecialCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.SpecialCall -> 200
20140221 21433304  !  -    		00.000.196
20140221 21433304  ! ret   		{"result":[166928935,1146817066,6,69888]}
20140221 21433304  !  -    	00.000.206
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ComplexCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ComplexCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ComplexCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ComplexCall -> 200
20140221 21433304  !  -    		00.000.000
20140221 21433304  ! ret   		{"result":[["ABC","DEF","GHIJK","one,two,three"],{"ID":166928926,"JSON":"166928925,1146817065","TimeStamp64":1146817065},-2.43676965590566E-10,{"ID":166928925,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":1146817066}]}
20140221 21433304  !  -    	00.000.006
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Add
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Add
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Add
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Add -> 200
20140221 21433304  !  -    		00.000.014
20140221 21433304  ! ret   		{"result":[959521188]}
20140221 21433304  !  -    	00.000.132
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Multiply
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Multiply
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Multiply
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Multiply -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[170278241214870387]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Subtract
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Subtract
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Subtract
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Subtract -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[-2.8768728341345E-9]}
20140221 21433304  !  -    	00.000.023
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToText
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToText
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToText
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToText -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":["2350322.01"]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToTextFunc
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToTextFunc
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToTextFunc
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToTextFunc -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":["-5.25991780124605E-9"]}
20140221 21433304  !  -    	00.000.023
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.SpecialCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.SpecialCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.SpecialCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.SpecialCall -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":[235032211,724488988,6,69888]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ComplexCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ComplexCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ComplexCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ComplexCall -> 200
20140221 21433304  !  -    		00.000.039
20140221 21433304  ! ret   		{"result":[["ABC","DEF","GHIJK","one,two,three"],{"ID":235032202,"JSON":"235032201,724488987","TimeStamp64":724488987},-5.25991780124605E-9,{"ID":235032201,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":724488988}]}
20140221 21433304  !  -    	00.000.054
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Add
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Add
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Add
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Add -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":[411828969]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Multiply
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Multiply
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Multiply
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Multiply -> 200
20140221 21433304  !  -    		00.000.011
20140221 21433304  ! ret   		{"result":[-329452727699627740]}
20140221 21433304  !  -    	00.000.021
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.Subtract
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.Subtract
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.Subtract
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.Subtract -> 200
20140221 21433304  !  -    		00.000.013
20140221 21433304  ! ret   		{"result":[-4.89916933121045E-9]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToText
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToText
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToText
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToText -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":["-4038834.35"]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ToTextFunc
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ToTextFunc
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ToTextFunc
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.ToTextFunc -> 200
20140221 21433304  !  -    		00.000.012
20140221 21433304  ! ret   		{"result":["-5.99331087851897E-9"]}
20140221 21433304  !  -    	00.000.022
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.SpecialCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.SpecialCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.SpecialCall
20140221 21433304  ! srvr  			TSQLRestServerDB(01EC6CA0) POST Calculator.SpecialCall -> 200
20140221 21433304  !  -    		00.000.014
20140221 21433304  ! ret   		{"result":[-403883424,815712405,6,69888]}
20140221 21433304  !  -    	00.000.024
20140221 21433304  !  +    	TServiceFactoryClient(00F6EDC8).Calculator.ComplexCall
20140221 21433304  !  +    		TSQLRestServerDB(01EC6CA0).root/Calculator.ComplexCall
20140221 21433304  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21433304  ! call  			TSQLRestServerDB(01EC6CA0) Calculator.ComplexCall
20140221 21433308  ! EXCOS 			EAccessViolation (C0000005) at 00064C76 SynCommons.RawUnicodeToUtf8 (11410)  stack trace API 00094CB0 SynCommons.SynRtlUnwind (36505) 0000614C System.@HandleOnException 
20140221 21433308  ! srvr  			POST root/Calculator.ComplexCall ERROR=500 (Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000)
20140221 21433308  !  -    		00.060.816
20140221 21433308  ! ERROR 		TSQLRestClientDB(01420FC0) POST root/Calculator.ComplexCall returned 500 Internal Server Error with message  {  "ErrorCode":500,  "ErrorText":"Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000"  } stack trace API 00173E28 mORMot.TSQLRestClientURI.URI (22432) 00199FF3 mORMot.TServiceFactoryClient.InternalInvoke (34590) 00199E7C mORMot.TServiceFactoryClient.Invoke (34560) 001905C4 mORMot.InternalProcess (31849) 00190E42 mORMot.TInterfacedObjectFake.FakeCall (31968) 
20140221 21433308  !  -    	00.060.831
20140221 21442432  ! EXC   	EInterfaceFactoryException ("Invalid fake ICalculator.ComplexCall interface call: : {\r\n\"ErrorCode\":500,\r\n\"ErrorText\":\"Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000\"\r\n}") at 0019034E mORMot.RaiseError (31790)  stack trace API 00094CB0 SynCommons.SynRtlUnwind (36505) 0000614C System.@HandleOnException 
20140221 21442433  !  +    	TServiceFactoryClient(00F6EF18).ComplexNumber._free_
20140221 21442433  !  +    		TSQLRestServerDB(01EC6CA0).root/ComplexNumber._free_/1
20140221 21442433  ! auth  			TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21442433  ! call  			TSQLRestServerDB(01EC6CA0) ComplexNumber._free_
20140221 21442433  ! srvr  			TSQLRestServerDB(01EC6CA0) POST ComplexNumber._free_ -> 200
20140221 21442433  !  -    		00.000.040
20140221 21442433  !  -    	00.000.082
20140221 21442435  !  -    52.087.454
20140221 21442435  ! cust1 {"Msg"="\r\n   Synopse mORMot Framework Automated tests\r\n  ------------------------------------------\r\n\r\n\r\n1. Synopse libraries\r\n\r\n 1.1. Low level common: \r\n  - System copy record: 22 assertions passed  23.52ms\r\n  - TDynArray: 1,027,702 assertions passed  453.25ms\r\n  - TDynArrayHashed: 1,200,629 assertions passed  418.48ms\r\n  - TObjectListHashed: 999,890 assertions passed  1.09s\r\n  - TObjectDynArrayWrapper: 167,501 assertions passed  65.44ms\r\n  - Fast string compare: 7 assertions passed  510us\r\n  - IdemPropName: 30 assertions passed  470us\r\n  - Url encoding: 105 assertions passed  2.16ms\r\n  - GUID: 9,005 assertions passed  5.37ms\r\n  - IsMatch: 599 assertions passed  690us\r\n  - Soundex: 35 assertions passed  389us\r\n  - Numerical conversions: 1,065,047 assertions passed  576.89ms\r\n  - Curr 64: 20,053 assertions passed  2.97ms\r\n  - CamelCase: 11 assertions passed  321us\r\n  - Bits: 4,774 assertions passed  370us\r\n  - Ini files: 7,004 assertions passed  45.23ms\r\n  - UTF8: 79,102 assertions passed  2.91s\r\n  - Iso 8601 date and time: 32,006 assertions passed  11.31ms\r\n  - Url decoding: 1,100 assertions passed  993us\r\n  - Mime types: 20 assertions passed  375us\r\n  - TSynTable: 873 assertions passed  6.03ms\r\n  - TSynCache: 404 assertions passed  549us\r\n  - TSynFilter: 1,005 assertions passed  4.97ms\r\n  - TSynValidate: 677 assertions passed  1.32ms\r\n  - TSynLogFile: 42 assertions passed  2.33ms\r\n  Total failed: 0 / 4,617,643  - Low level common PASSED  5.74s\r\n\r\n 1.2. Low level types: \r\n  - RTTI: 52 assertions passed  2.70ms\r\n  - Url encoding: 200 assertions passed  1.33ms\r\n  - Encode decode JSON: 262,007 assertions passed  359.20ms\r\n  - TDocVariant: 1,611 assertions passed  75.58ms\r\n!  - BSON: 8 / 20,000,184 FAILED  6.45s\r\n  Total failed: 8 / 20,264,054  - Low level types FAILED  6.90s\r\n\r\n 1.3. Big table: \r\n  - TSynBigTable: 19,209 assertions passed  214.62ms\r\n  - TSynBigTableString: 16,080 assertions passed  69.44ms\r\n  - TSynBigTableMetaData: 384,060 assertions passed  3.26s\r\n  - TSynBigTableRecord: 452,185 assertions passed  7.76s\r\n  Total failed: 0 / 871,534  - Big table PASSED  11.31s\r\n\r\n 1.4. Synopse PDF: \r\n!  - TPdfDocument: 1 / 2 FAILED  1.57s\r\n  - TPdfDocumentGDI: 5 assertions passed  168.30ms\r\n  Total failed: 1 / 7  - Synopse PDF FAILED  1.75s\r\n\r\n 1.5. Cryptographic routines: \r\n  - Adler32: 1 assertion passed  535us\r\n  - MD5: 1 assertion passed  381us\r\n  - SHA1: 5 assertions passed  389us\r\n  - SHA256: 5 assertions passed  446us\r\n  - AES256: 16,815 assertions passed  1.85s\r\n  - RC4: 1 assertion passed  288us\r\n  - Base64: 11,994 assertions passed  335.88ms\r\n  - CompressShaAes: 1,683 assertions passed  14.11ms\r\n  Total failed: 0 / 30,505  - Cryptographic routines PASSED  2.21s\r\n\r\n 1.6. Compression: \r\n  - In memory compression: 12 assertions passed  533.23ms\r\n  - GZIP format: 19 assertions passed  1.08s\r\n  - ZIP format: 36 assertions passed  1.96s\r\n  - SynLZO: 3,006 assertions passed  187.22ms\r\n  - SynLZ: 29,018 assertions passed  1.12s\r\n  Total failed: 0 / 32,091  - Compression PASSED  4.91s\r\n\r\n\r\n2. mORMot\r\n\r\n 2.1. File based: \r\n  - Database direct access: 10,138 assertions passed  679.60ms\r\n  - Virtual table direct access: 12 assertions passed  4.87ms\r\n  - TSQLTableJSON: 109,072 assertions passed  273.07ms\r\n  - TSQLRestClientDB: 605,151 assertions passed  16.55s\r\n  - Regexp function: 6,016 assertions passed  62.01ms\r\n  Total failed: 0 / 730,389  - File based PASSED  17.58s\r\n\r\n 2.2. File based memory map: \r\n  - Database direct access: 10,136 assertions passed  652.01ms\r\n  - Virtual table direct access: 12 assertions passed  3.39ms\r\n  - TSQLTableJSON: 109,072 assertions passed  318.36ms\r\n  - TSQLRestClientDB: 605,150 assertions passed  16.12s\r\n  - Regexp function: 6,016 assertions passed  45.12ms\r\n  Total failed: 0 / 730,386  - File based memory map PASSED  17.15s\r\n\r\n 2.3. File based WAL: \r\n  - Database direct access: 10,138 assertions passed  713.37ms\r\n  - Virtual table direct access: 12 assertions passed  2.70ms\r\n  - TSQLTableJSON: 109,072 assertions passed  262.25ms\r\n  - TSQLRestClientDB: 605,151 assertions passed  16.37s\r\n  - Regexp function: 6,016 assertions passed  52.99ms\r\n  Total failed: 0 / 730,389  - File based WAL PASSED  17.41s\r\n\r\n 2.4. Memory based: \r\n  - Database direct access: 10,136 assertions passed  669.53ms\r\n  - Virtual table direct access: 12 assertions passed  2.12ms\r\n  - TSQLTableJSON: 109,072 assertions passed  252.76ms\r\n  - TSQLRestClientDB: 673,447 assertions passed  18.34s\r\n  - Regexp function: 6,016 assertions passed  48.49ms\r\n  - RTree: 140,000 assertions passed  2.78s\r\n  Total failed: 0 / 938,683  - Memory based PASSED  22.10s\r\n\r\n 2.5. Basic classes: \r\n!  - TSQLRecord: 11 / 65 FAILED  6.46s\r\n  - TSQLRecordSigned: 200 assertions passed  15.81ms\r\n  - TSQLModel: 3 assertions passed  1.53ms\r\n  Total failed: 11 / 268  - Basic classes FAILED  6.48s\r\n\r\n 2.6. Client server access: \r\n  - TSQLHttpServer: 2 assertions passed  329.41ms\r\n     using THttpApiServer\r\n  - TSQLHttpClient: 3 assertions passed  680.06ms\r\n  - HTTP client keep alive: 3,087 assertions passed  1.39s\r\n     4818 B, first 29.84ms, done 1.24s i.e. 801/s, aver. 1.24ms, 3.7 MB/s\r\n  - HTTP client multi connect: 3,087 assertions passed  1.27s\r\n     4818 B, first 1.55ms, done 1.21s i.e. 819/s, aver. 1.21ms, 3.8 MB/s\r\n  - HTTP client encrypted: 3,087 assertions passed  1.31s\r\n     4818 B, first 1.68ms, done 1.24s i.e. 800/s, aver. 1.24ms, 3.7 MB/s\r\n  - Named pipe access: 3,089 assertions passed  1.20s\r\n     4818 B, first 301.13ms, done 624.39ms i.e. 1601/s, aver. 624us, 7.4 MB/s\r\n  - Local window messages: 3,088 assertions passed  147.38ms\r\n     4818 B, first 373us, done 130.02ms i.e. 7691/s, aver. 130us, 35.9 MB/s\r\n  - Direct in process access: 3,056 assertions passed  88.62ms\r\n     4818 B, first 120us, done 77.65ms i.e. 12877/s, aver. 77us, 60.2 MB/s\r\n  - HTTP several DB servers: 9,604 assertions passed  5.55s\r\n     4818 B, first 1.82ms, done 1.23s i.e. 806/s, aver. 1.23ms, 3.7 MB/s\r\n     4818 B, first 1.71ms, done 1.16s i.e. 861/s, aver. 1.16ms, 4.0 MB/s\r\n     4818 B, first 1.78ms, done 1.18s i.e. 842/s, aver. 1.18ms, 3.9 MB/s\r\n  Total failed: 0 / 28,103  - Client server access PASSED  12.06s\r\n\r\n 2.7. Service oriented architecture: \r\n  - Weak interfaces: 56 assertions passed  1.89ms\r\n  - Service initialization: 200 assertions passed  37.05ms\r\n  - Direct call: 566,568 assertions passed  63.25ms\r\n  - Server side: 566,587 assertions passed  76.74ms\r\n\r\n! Exception EInterfaceFactoryException raised with messsage:\r\n!  Invalid fake ICalculator.ComplexCall interface call: : {\r\n\"ErrorCode\":500,\r\n\"ErrorText\":\"Exception EAccessViolation: Access violation at address 00465C76 in module 'TestSQL3.exe'. Read of address 0016E000\"\r\n}\r\n\r\n\r\nSynopse framework used: 1.18\r\nSQlite3 engine used: 3.8.3.1\r\nGenerated with: Delphi XE compiler\r\n\r\nTime elapsed for all tests: 178.69s\r\nTests performed at 2014-2-21 21:44:24\r\n\r\n! Some tests FAILED: please correct the code.\r\n"}
20140221 21442435  !  +    TSQLRestClientDB(01420FC0).auth
20140221 21442435  !  +    	TSQLRestServerDB(01EC6CA0).root/auth?UserName=User&Session=11550147
20140221 21442435  ! auth  		TSQLRestRoutingREST(00FCE0D0) User/TAuthSession(00FD47A0)
20140221 21442435  ! call  		TSQLRestServerDB(01EC6CA0) Auth
20140221 21442435  ! auth  		TSQLRestServerDB(01EC6CA0) Deleted session User/11550147 from 127.0.0.1/0059CBF8
20140221 21442435  ! srvr  		TSQLRestServerDB(01EC6CA0) GET auth -> 200
20140221 21442435  !  -    	00.000.047
20140221 21442435  !  -    00.000.079
20140221 21442435  ! info  TSQLRestServerDB(01EC6CA0) {   "ClientsCurrent": 0,   "ClientsMax": 1,   "Invalid": 4,   "Responses": 14570,   "Modified": 0,   "IncomingBytes": 2778093,   "OutcomingBytes": 1789438,   "OutcomingFiles": 0,   "ServiceCalls": 14571,   "CurrentThreadCount": 0,   "ProcessTime": "367.65ms"  }
20140221 21442435  !  +    000BF146 SynSQLite3.TSQLDatabase.DBClose (3384) 
20140221 21442436  !  -    00.013.392

Offline

#4 2014-02-21 14:39:00

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

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

In the IDE, what is the call stack and all variable contents in failing ComplexCall() implementation?

Offline

#5 2014-02-22 01:04:29

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

procedure TTestServiceOrientedArchitecture.Test(const Inst: TTestServiceInstances;
  Iterations: Cardinal=700);
procedure TestCalculator(const I: ICalculator);
var t,i1,i2,i3: integer;
    c: cardinal;
    cu: currency;
    n1,n2: double;
    o: TSynTableFieldOptions;
    Ints: TIntegerDynArray;
    Strs1: TRawUTF8DynArray;
    Str2: TWideStringDynArray;
    Rec1: TVirtualTableModuleProperties;
    Rec2, RecRes: TSQLRestCacheEntryValue;
    s: RawUTF8;
begin
  Setlength(Ints,2);
  CSVToRawUTF8DynArray('one,two,three',Strs1);
  for t := 1 to Iterations do begin
...
    RecRes := I.ComplexCall(Ints,Strs1,Str2,Rec1,Rec2,n1,n2); <==   exception occur at t = 7

I put a debug point at  RecRes := I.ComplexCall(Ints,Strs1,Str2,Rec1,Rec2,n1,n2);

the call stack:

SynSelfTests.TestCalculator(Pointer($108B684) as ICalculator)
SynSelfTests.TTestServiceOrientedArchitecture.Test($12FD94,700)
SynSelfTests.TTestServiceOrientedArchitecture.ClientTest(TSQLRestRoutingREST,False,False,[])
SynSelfTests.TTestServiceOrientedArchitecture.ClientSideREST
SynCommons.TSynTests.Run
mORMotSelfTests.SQLite3ConsoleTests
TestSQL3.TestSQL3
:7c82f23b ; C:\WINDOWS\system32\kernel32.dll

the Local Variable:

Name        Value
I        Pointer($108B684) as ICalculator
t        7
i1        -525933278
i2        1302304076
i3        -525933267
c        1302304077
cu        -5259332.78
n1        -7.11164639797062e-09
n2        -5.48187840577988e-10
o        [tfoUnique,tfoCaseInsensitive]
Ints        (-525933278, 1302304076)
    [0]    -525933278
    [1]    1302304076
Strs1        ('one', 'two', 'three')
    [0]    'one'
    [1]    'two'
    [2]    'three'
Str2        ('ABC', 'DEF', 'GHIJK')
    [0]    'ABC'
    [1]    'DEF'
    [2]    'GHIJK'
Rec1        ([vtTransaction,vtSavePoint], nil, nil, nil, 'C:\DelphiXE\mORMot\SQLite3\TestSQL3.exe')
    Features    [vtTransaction,vtSavePoint]
    CursorClass    nil
    RecordClass    nil
    StaticClass    nil
    FileExtension    'C:\DelphiXE\mORMot\SQLite3\TestSQL3.exe'
Rec2        (-525933278, 'abc', 1302304077)
    ID    -525933278
    JSON    'abc'
    TimeStamp64    1302304077
RecRes        (-957283850, 'C:\DelphiXE\mORMot\SQLite3\TestSQL3.exe', 1055639884)
    ID    -957283850
    JSON    'C:\DelphiXE\mORMot\SQLite3\TestSQL3.exe'
    TimeStamp64    1055639884
s        '-5259332.78'

Offline

#6 2014-02-22 07:41:29

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

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

Before the call this is OK.
But after the error?
Add a try .. Except block to detect and re-run the ComplexCall method.

Offline

#7 2014-02-22 07:59:46

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

If you prefer, you can connect to my machine via Remote Desktop, I can send login information to you via mail, thanks!

Offline

#8 2014-02-23 03:19:52

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

after many times step, seems the Exception is because fInvoke Call return false,
then RaiseError raise the Exception,

function TInterfacedObjectFake.FakeCall(var aCall: TFakeCallStack): Int64;
var method: ^TServiceMethod;
procedure RaiseError(const Msg: RawUTF8);
begin
  raise EInterfaceFactoryException.CreateFmt('Invalid fake %s.%s interface call: %s',
    [fFactory.fInterfaceTypeInfo^.Name,method^.URI,Msg]);
end;
...
    if not fInvoke(method^,Params.Text,@ResArray,@Error,@fClientDrivenID,
       ServiceCustomAnswerPoint) then
      RaiseError(Error);	<== here exception raised

step the fInvoke call, can success after CallMethod(r), exception is cause by call
        AddJSON(Res,Values[a]);
where it internal call TTextWriter.AddDynArrayJSON.

function TServiceMethod.InternalExecute(Instances: array of pointer;
...
      end else
      {$endif}
        CallMethod(r);
    end;
    // 4. send back any result
    if Res<>nil then begin
      // 4.1 handle custom content (not JSON object answer)
      if (r.resKind=smvRecord) and ArgsResultIsServiceCustomAnswer then
        with PServiceCustomAnswer(Values[ArgsResultIndex])^ do
        if Header<>'' then begin
          aHead := Header;
          Res.ForceContent(Content);
          Result := true;
          exit;
        end;
      // 4.2 write the '{"result":[...' array or object
      for a := ArgsOutFirst to ArgsOutLast do
      with Args[a] do
      if ValueDirection in [smdVar,smdOut,smdResult] then begin
        if ResultAsJSONObject then
          Res.AddPropName(ParamName^);
        AddJSON(Res,Values[a]);    <==******sometime when a=3, generate exception*********
      end;
      Res.CancelLastComma;
    end;
    Result := true;
  finally // manual release memory for Records[], Objects[] and DynArrays[]
...

after success CallMethod(r), normal should step to goto result := true, but sometime when a = 3, call into
TTextWriter.AddDynArrayJSON, then will go direct to finally block, not to result := true,
so exception is cause at TTextWriter.AddDynArrayJSON, since code is very complex,
can't find the actual reason, later is a call stack and variable after a exception:

SynCommons.TTextWriter.AddDynArrayJSON($12E5A8)
SynCommons.TTextWriter.AddDynArrayJSON($454304,(no value))
mORMot.TServiceMethodArgument.AddJSON($1087360,$12E708)
mORMot.TServiceMethod.InternalExecute((...),nil {#0},$1087360,'',[],False,nil)
mORMot.TServiceFactoryServer.ExecuteMethod($FA0E00)
mORMot.TSQLRestServerURIContext.InternalExecuteSOAByInterface
mORMot.TSQLRestRoutingREST.ExecuteSOAByInterface
mORMot.TSQLRestServer.URI($12F31B)
mORMotSQLite3.TSQLRestClientDB.InternalURI($12F31B)
mORMot.TSQLRestClientURI.URI('root/Calculator.ComplexCall','POST',$12F3F4 {''},$12F3F0 {''},$12F3F8 {'[[338510102'#0'205211555'#0',["one'#0#0'"two'#0#0'"three'#0#0',["ABC'#0#0'"DEF'#0#0'"GHIJK'#0#0',"￰BgAAAAAAAAAAAAAAAAAAAE5DADoAXABEAGUAbABwAGgAaQBYAEUAXABtAE8AUgBNAG8AdABcAFMAUQBMAGkAdABlADMAXABUAGUAcwB0AFMAUQBMADMALgBlAHgAZQA='#0#0'{"ID'#0#0'338510102'#0'"JSON'#0#0'"abc'#0#0'"TimeStamp64'#0#0'205211556'#0',-1.2609443240799E-9'#0'-7.02632789070805E-10'#0})
mORMot.TServiceFactoryClient.InternalInvoke('ComplexCall','[338510102,205211555],["one","two","three"],["ABC","DEF","GHIJK"],"锟癇gAAAAAAAAAAAAAAAAAAAE5DADoAXABEAGUAbABwAGgAaQBYAEUAXABtAE8AUgBNAG8AdABcAFMAUQBMAGkAdABlADMAXABUAGUAcwB0AFMAUQBMADMALgBlAHgAZQA=",{"ID":338510102,"JSON":"abc","TimeStamp64":205211556},-1.2609443240799E-9,-7.02632789070805E-10',$12F9C8 {''},$12F9CC {''},$108B748,nil)
mORMot.TServiceFactoryClient.Invoke($1940F10,'[338510102,205211555],["one","two","three"],["ABC","DEF","GHIJK"],"锟癇gAAAAAAAAAAAAAAAAAAAE5DADoAXABEAGUAbABwAGgAaQBYAEUAXABtAE8AUgBNAG8AdABcAFMAUQBMAGkAdABlADMAXABUAGUAcwB0AFMAUQBMADMALgBlAHgAZQA=",{"ID":338510102,"JSON":"abc","TimeStamp64":205211556},-1.2609443240799E-9,-7.02632789070805E-10',$12F9C8 {''},$12F9CC {''},$108B748,nil)
mORMot.InternalProcess
mORMot.TInterfacedObjectFake.FakeCall($12FA00)
:017e00a1 
SynSelfTests.TestCalculator(Pointer($108B72C) as ICalculator)
SynSelfTests.TTestServiceOrientedArchitecture.Test($12FD94,700)
SynSelfTests.TTestServiceOrientedArchitecture.ClientTest(TSQLRestRoutingREST,False,False,[])
SynSelfTests.TTestServiceOrientedArchitecture.ClientSideREST
SynCommons.TSynTests.Run
mORMotSelfTests.SQLite3ConsoleTests
TestSQL3.TestSQL3
:7c82f23b ; C:\WINDOWS\system32\kernel32.dll
Name		Value
Self		('"69888]},three"],{"ID":245927754,"JSON":"245927753,1457302954","TimeStamp64":1457302954},-5.01156236045063E-9,{"ID":245927753,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":1457302955}]}}]}}lor":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}]]},"Length":58,"Name":"29"},{"Color":30,"Length":60,"Name":"30"},{"Color":31,"Length":62,"Name":"31"},{"Color":32,"Length":64,"Name":"32"},{"Color":33,"Length":66,"Name":"33"},{"Color":34,"Length":68,"Name":"34"},{"Color":35,"Length":70,"Name":"35"},{"Color":36,"Length":72,"Name":"36"},{"Color":37,"Length":74,"Name":"37"},{"Color":38,"Length":76,"Name":"38"},{"Color":39,"Length":78,"Name":"39"},{"Color":40,"Length":80,"Name":"40"},{"Color":41,"Length":82,"Name":"41"},{"Color":42,"Length":84,"Name":"42"},{"Color":43,"Length":86,"Name":"43"},{"Color":44,"Length":88,"Name":"44"},{"Color":45,"Length":90,"Name":"45"},{"Color":46,"Length":92,"Name":"46"},{"Color":47,"Length":94,"Name":"47"},{"Color":48,"Length":96,"Name":"48"},{"Color":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}],[{"Color":1,"Length":2,"Name":"1"},{"Color":2,"Length":4,"Name":"2"},{"Color":3,"Length":6,"Name":"3"},{"Color":4,"Length":8,"Name":"4"},{"Color":5,"Length":10,"Name":"5"},{"Color":6,"Length":12,"Name":"6"},{"Color":7,"Length":14,"Name":"7"},{"Color":8,"Length":16,"Name":"8"},{"Color":9,"Length"3'#$10, '":68,"Name":"34"},{"Color":35,"Length":70,"Nam3/'#3, $104B338, 0, True, False, 0, 4096, '{"result":[["ABC","DEF","GHIJK","69888]},three"],{"ID":245927754,"JSON":"245927753,1457302954","TimeStamp64":1457302954},-5.01156236045063E-9,{"ID":245927753,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":1457302955}]}}]}}lor":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}]]},"Length":58,"Name":"29"},{"Color":30,"Length":60,"Name":"30"},{"Color":31,"Length":62,"Name":"31"},{"Color":32,"Length":64,"N...
	B	'"69888]},three"],{"ID":245927754,"JSON":"245927753,1457302954","TimeStamp64":1457302954},-5.01156236045063E-9,{"ID":245927753,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":1457302955}]}}]}}lor":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}]]},"Length":58,"Name":"29"},{"Color":30,"Length":60,"Name":"30"},{"Color":31,"Length":62,"Name":"31"},{"Color":32,"Length":64,"Name":"32"},{"Color":33,"Length":66,"Name":"33"},{"Color":34,"Length":68,"Name":"34"},{"Color":35,"Length":70,"Name":"35"},{"Color":36,"Length":72,"Name":"36"},{"Color":37,"Length":74,"Name":"37"},{"Color":38,"Length":76,"Name":"38"},{"Color":39,"Length":78,"Name":"39"},{"Color":40,"Length":80,"Name":"40"},{"Color":41,"Length":82,"Name":"41"},{"Color":42,"Length":84,"Name":"42"},{"Color":43,"Length":86,"Name":"43"},{"Color":44,"Length":88,"Name":"44"},{"Color":45,"Length":90,"Name":"45"},{"Color":46,"Length":92,"Name":"46"},{"Color":47,"Length":94,"Name":"47"},{"Color":48,"Length":96,"Name":"48"},{"Color":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}],[{"Color":1,"Length":2,"Name":"1"},{"Color":2,"Length":4,"Name":"2"},{"Color":3,"Length":6,"Name":"3"},{"Color":4,"Length":8,"Name":"4"},{"Color":5,"Length":10,"Name":"5"},{"Color":6,"Length":12,"Name":"6"},{"Color":7,"Length":14,"Name":"7"},{"Color":8,"Length":16,"Name":"8"},{"Color":9,"Length"3'#$10
	BEnd	'":68,"Name":"34"},{"Color":35,"Length":70,"Nam3/'#3
	fStream	$104B338
	fInitialStreamPosition	0
	fStreamIsOwned	True
	fFlushShouldNotAutoResize	False
	fTotalFileSize	0
	fTempBufSize	4096
	fTempBuf	'{"result":[["ABC","DEF","GHIJK","69888]},three"],{"ID":245927754,"JSON":"245927753,1457302954","TimeStamp64":1457302954},-5.01156236045063E-9,{"ID":245927753,"JSON":"C:\\DelphiXE\\mORMot\\SQLite3\\TestSQL3.exe","TimeStamp64":1457302955}]}}]}}lor":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}]]},"Length":58,"Name":"29"},{"Color":30,"Length":60,"Name":"30"},{"Color":31,"Length":62,"Name":"31"},{"Color":32,"Length":64,"Name":"32"},{"Color":33,"Length":66,"Name":"33"},{"Color":34,"Length":68,"Name":"34"},{"Color":35,"Length":70,"Name":"35"},{"Color":36,"Length":72,"Name":"36"},{"Color":37,"Length":74,"Name":"37"},{"Color":38,"Length":76,"Name":"38"},{"Color":39,"Length":78,"Name":"39"},{"Color":40,"Length":80,"Name":"40"},{"Color":41,"Length":82,"Name":"41"},{"Color":42,"Length":84,"Name":"42"},{"Color":43,"Length":86,"Name":"43"},{"Color":44,"Length":88,"Name":"44"},{"Color":45,"Length":90,"Name":"45"},{"Color":46,"Length":92,"Name":"46"},{"Color":47,"Length":94,"Name":"47"},{"Color":48,"Length":96,"Name":"48"},{"Color":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"Color":56,"Length":112,"Name":"56"},{"Color":57,"Length":114,"Name":"57"},{"Color":58,"Length":116,"Name":"58"},{"Color":59,"Length":118,"Name":"59"},{"Color":60,"Length":120,"Name":"60"},{"Color":61,"Length":122,"Name":"61"},{"Color":62,"Length":124,"Name":"62"},{"Color":63,"Length":126,"Name":"63"},{"Color":64,"Length":128,"Name":"64"},{"Color":65,"Length":130,"Name":"65"},{"Color":66,"Length":132,"Name":"66"},{"Color":67,"Length":134,"Name":"67"},{"Color":68,"Length":136,"Name":"68"},{"Color":69,"Length":138,"Name":"69"}],[{"Color":1,"Length":2,"Name":"1"},{"Color":2,"Length":4,"Name":"2"},{"Color":3,"Length":6,"Name":"3"},{"Color":4,"Length":8,"Name":"4"},{"Color":5,"Length":10,"Name":"5"},{"Color":6,"Length":12,"Name":"6"},{"Color":7,"Length":14,"Name":"7"},{"Color":8,"Length":16,"Name":"8"},{"Color":9,"Length"3'#$10
	fHumanReadableLevel	0
aDynArray		($12E708, $454304, 4, $40128C, nil, nil, False, djNone)
	Value	$12E708
	fTypeInfo	$454304
	fElemSize	4
	fElemType	$40128C
	fCompare	nil
	fCountP	nil
	fSorted	False
	fKnownType	djNone
i		3
n		3
Len		26
P		$1087138
T		djWideString
tmp		'one,two,three'#0'戤戤'#0#0#0#0#5#7'塬'#$18#0#$AE#0'[{"Color":1,"Length":2,"Name":"1"},{"Color":2,"Length":4,"Name":"2"},{"Color":3,"Length":6,"Name":"3"},{"Color":4,"Length":8,"Name":"4"},{"Color":5,"Length":10,"Name":"5"},{"Color":6,"Length":12,"Name":"6"},{"Color":7,"Length":14,"Name":"7"},{"Color":8,"Length":16,"Name":"8"},{"Color":9,"Length":18,"Name":"9"},{"Color":10,"Length":20,"Name":"10"},{"Color":11,"Length":22,"Name":"11"},{"Color":12,"Length":24,"Name":"12"},{"Color":13,"Length":26,"Name":"13"},{"Color":14,"Length":28,"Name":"14"},{"Color":15,"Length":30,"Name":"15"},{"Color":16,"Length":32,"Name":"16"},{"Color":17,"Length":34,"Name":"17"},{"Color":18,"Length":36,"Name":"18"},{"Color":19,"Length":38,"Name":"19"},{"Color":20,"Length":40,"Name":"20"},{"Color":21,"Length":42,"Name":"21"},{"Color":22,"Length":44,"Name":"22"},{"Color":23,"Length":46,"Name":"23"},{"Color":24,"Length":48,"Name":"24"},{"Color":25,"Length":50,"Name":"25"},{"Color":26,"Length":52,"Name":"26"},{"Color":27,"Length":54,"Name":"27"},{"Color":28,"Length":56,"Name":"28"},{"Color":29,"Length":58,"Name":"29"},{"Color":30,"Length":60,"Name":"30"},{"Color":31,"Length":62,"Name":"31"},{"Color":32,"Length":64,"Name":"32"},{"Color":33,"Length":66,"Name":"33"},{"Color":34,"Length":68,"Name":"34"},{"Color":35,"Length":70,"Name":"35"},{"Color":36,"Length":72,"Name":"36"},{"Color":37,"Length":74,"Name":"37"},{"Color":38,"Length":76,"Name":"38"},{"Color":39,"Length":78,"Name":"39"},{"Color":40,"Length":80,"Name":"40"},{"Color":41,"Length":82,"Name":"41"},{"Color":42,"Length":84,"Name":"42"},{"Color":43,"Length":86,"Name":"43"},{"Color":44,"Length":88,"Name":"44"},{"Color":45,"Length":90,"Name":"45"},{"Color":46,"Length":92,"Name":"46"},{"Color":47,"Length":94,"Name":"47"},{"Color":48,"Length":96,"Name":"48"},{"Color":49,"Length":98,"Name":"49"},{"Color":50,"Length":100,"Name":"50"},{"Color":51,"Length":102,"Name":"51"},{"Color":52,"Length":104,"Name":"52"},{"Color":53,"Length":106,"Name":"53"},{"Color":54,"Length":108,"Name":"54"},{"Color":55,"Length":110,"Name":"55"},{"'
customWriter		($775F3F85,nil)
	Code	$775F3F85
	Data	nil
customParser		($1A, $3, [soReadIgnoreUnknownFields,soWriteHumanReadable])
	fItems	$1A
	fRoot	$3
	fOptions	[soReadIgnoreUnknownFields,soWriteHumanReadable]
Options		[]

Offline

#9 2014-02-23 03:36:29

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

In TTextWriter.AddDynArrayJSON, exception is generate at call AddJSONEscape,
this call into RawUnicodeToUtf8, so the log content
EXCOS EAccessViolation (C0000005) at 00064C76 SynCommons.RawUnicodeToUtf8 (11410)
is correct.

procedure TTextWriter.AddDynArrayJSON(const aDynArray: TDynArray);

      djWideString, djSynUnicode:
        if PPtrIntArray(P)^[i]<>0 then begin
          Len := PInteger(PPtrIntArray(P)^[i]-sizeof(Integer))^;
          if Len*2>length(tmp) then
            SetLength(tmp,Len*2+2048);
          AddJSONEscape(pointer(tmp),
            RawUnicodeToUtf8(pointer(tmp),length(tmp),PPointerArray(P)^[i],Len));  <==Exception generate

Offline

#10 2014-02-23 20:01:18

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

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

Thanks to this information, I think we found out the root cause of the problem.

WideString aka OleStr do store their length in bytes, not WideChars...

I've therefore made a deep code review, and fixed potential GPF in serveral functions, when working with WideString.
See http://synopse.info/fossil/info/d93585b030

I hope it will fix the issue in your code.
It is weird that it did not occur before on any of our computers...
But should be fixed now.

Offline

#11 2014-02-24 03:58:51

mingda
Member
Registered: 2013-01-04
Posts: 121

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

After update, the Exception is gone, i run the test ten times, thank you very much, the better mORMot framework, the better Test framework and the best support! I run TestSQL3 every time after update, so is the Test framework found the problem, thank you!

Offline

#12 2014-02-24 08:17:11

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

Re: TestSQL3's EInterfaceFactoryException in debug mode now is reproduced

Nice!
Happy we found the root cause of the issue.

This is mainly due to your long-standing enthusiasm!
big_smile

Offline

Board footer

Powered by FluxBB