#1 2016-11-29 13:07:30

bic_223
Member
Registered: 2016-11-15
Posts: 8

AV in System.pas._DynArraySetLength

Hi, I have some trouble with your Synopse Enhanced RTL, as follows:
1: I can't reach those optimizations in _StrCmp (equal compare in syntax) seems work pretty slower than Delphi standard System.pas._LStrCmp on my Intel I5 processor, but also SysUtils.pas.SameText seems 4 times worst than standard. I don't know what to do and why it work slower. I thought I will cand handle it, but I can't. Pls help me.
2: I get all time an AV in System.pas._DynArraySetLength, also I reverted to original ($Delphi$/Source/Rtl/Sys/System.pas) and don't work. Also I reverted all _DynArrayLength, _DynArrayHigh, _DynArrayCopy, _DynArrayCopyRange, _DynArrayClear, _DynArrayAsg, _DynArrayAddRef, DynArrayIndex, then  _InitializeArray, _FinalizeArray and same error, probably something already wrong from another place. Here I think I can give you the part of code which can generate it.
3: If I compile library dcu's separately but still include your pas-es in all environment options, I get,  JcSysUtils was compiled with a different version of Classes.Thread.Synchronize, which after a lot of dig I found it same issue in a clean class and clean dependent unit happen same because those overload from private to protected/public which linked to dependend dcu from library seems a compiler bug which recompile pas in project see first (private) signature even if protected used in dependency already compiled.
4: Another error, here I can't give the code (it's on destructors of MDI from my huge application) , Assertion failure Classes.pas line 9803, even if I don't compiled with Asstert compiler switch.
Those made me avoid System (SysInit, also SysUtils because LoadResourceTranslate) because optimization failure (1) and AV error (2), also Classes because compiler dcu usage dependency error vs pas source (3) and also because that Assertion failure (4).
So, until new things happen, I cannot use them, even if I lost almost 2 weeks from my tasks only to improve all applications. I still use SynPdf(synCommons), even if in that post no one answer to me.
I humble still wait an answer.
Thank you.

Offline

#2 2016-11-29 13:18:02

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

Re: AV in System.pas._DynArraySetLength

On which version of Delphi are you trying to use the Enhanced RTL?
We use it with Delphi 7 compiler, with no problem at all, in production system, for years.
But it is not fully tested on other versions of the compiler.

Offline

#3 2016-11-29 14:58:15

bic_223
Member
Registered: 2016-11-15
Posts: 8

Re: AV in System.pas._DynArraySetLength

Delphi 7 Professional, D7.1 Update: System.dcu@23.04.2004. We have a huge ERP application and a lot of different interesting things in it (memory manager, exception handling, etc), with a lot of totally different customers. Using FastMM4 in fullDebugMode all time. It's possible to happen rarely.
For example System.pas AV in _DynArraySetLength only from IdHttp.Get I think, but also I saw abnormal values in debugger in strings, and that Assertion error in Classes.pas.tComponent.FreeNotification happens only when closing big MDIChild forms in runtime.
And also even if I'm programmer since 18 years old, I don't understood why your enhancing work slower than Borland standard for my machine test. I can send to you those test sources.

Offline

#4 2016-11-29 16:48:52

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

Re: AV in System.pas._DynArraySetLength

Our "About Delphi" box shows Version 7.0 (Build 8.1) which includes Update 1 AFAIR.

What do you call _StrCmp?
Included _LStrCmp is a faster version by Pierre Le Riche.
It is really known to be faster than the default implementation, and has been included in Delphi RTL since Delphi 2006 (more or less).

Offline

#5 2016-12-02 11:34:51

bic_223
Member
Registered: 2016-11-15
Posts: 8

Re: AV in System.pas._DynArraySetLength

Our "About Delphi" box shows same Version 7.0 (Build 8.1) which includes already also the d7_pro_upd1_1 from Borland (23.04.2004 System.dcu).
What I call _StrCmp? I don't understand. How I call It? just "if s1 = s2 then" strings with 14 or 140 chars by 10000000 times.

So! I', so sorry, I closed those test to integrate Syn Enh RTL in our applications previous days, as abandon them, at end of previous month because of my activity evaluations which already poor because I lost a lot of days to integrate it in our apps. But I can continue to provide info to you.
I'm really sorry that doesn't work faster and also errors and I am concerned about you really know about and it really works at you and not at us. This becomes already very weird.

Offline

#6 2016-12-02 11:59:12

bic_223
Member
Registered: 2016-11-15
Posts: 8

Re: AV in System.pas._DynArraySetLength

Remarks: I really used your System.dcu with optimized internal string compares _LStrCmp function or without it, just normal Delphi System.dcu. And run same tests with a bunch of functions ciclic compares with equal or SameText for more chars or less chars strings, same strings, almost same (different in the last char), etc.
I'm really concerned it doesn't work, because I'm sure and I know was included in Delphi 2006 so it's means it's really good. Also rest of System.pas and Classes.pas which doesn't work here. I know you really know what are you doing, but also I'm experienced in what I do. I tried really a lot of things, and without them all work fine and with them those errors I said.
I really hope we can solve this, as we are experienced in those.

Offline

Board footer

Powered by FluxBB