You are not logged in.
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
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
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
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
If you prefer, you can connect to my machine via Remote Desktop, I can send login information to you via mail, thanks!
Offline
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
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
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
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