#1 Re: Enhanced System Run Time Library » AV in System.pas._DynArraySetLength » 2016-12-02 11:59:12

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.

#2 Re: Enhanced System Run Time Library » AV in System.pas._DynArraySetLength » 2016-12-02 11:34:51

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.

#3 Re: Enhanced System Run Time Library » AV in System.pas._DynArraySetLength » 2016-11-29 14:58:15

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.

#4 Enhanced System Run Time Library » AV in System.pas._DynArraySetLength » 2016-11-29 13:07:30

bic_223
Replies: 5

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.

#6 Re: PDF Engine » AV at uninstall RTL package that include SynPdf loading gdiplus.dll » 2016-11-18 12:17:23

Oh.
I see.
I looked for .inc files, I find synopse.inc and there not any USE_PACKAGES, but USEPACKAGES.

1: But this USEPACKAGES isn't do what need: to avoid SynPdf load of gdiplus.dll. I't don't avoit this, just  NO_USE_SYNGDIPLUS are doing this, but WHO KNOW ABOUT, because who don't know will search an error where it appear but it isn't there.

I read a lot of your synopse.inc and syncommons.pas files for directives and I found that:

2: Shortly: DOPATCHRTL isn't default, so I didn't knew that I don't use it for System.FillChar, Move,CopyRecord, FinalizeRecord/InitializeRecord optimisations.

3: The fact that, if not defined DOPATCHRTL, it is also defines EXPECTSDELPHIRTLRECORDCOPYCLEAR it's normal;
But the fact that EXPECTSDELPHIRTLRECORDCOPYCLEAR it is also defined for defined UsePackages isn't good for implementation of RecordClear/RecordCopy if I want use DOPATHCRTL also , because implements same functions twice. All those because of 4:.

4: Also I can't use it SynPdf in my library if I use only dcu of my library in compile of my projects (as Delphi/Lib for dcu's and Source/Rtl or vcl for .pas), to compile them often quicker.
This is so as long as DOPATCHRTL don't work packaged, only if NOVARCOPYPROC to avoid "[DCC Error] E2201 Need imported data reference ($G) to access 'VarCopyProc' from unit 'SynCommons'" you said, actually: "from unit 'System'", compiler error, which already loose direct use of VarCopyProc optimization, if it is used in package,.. and also let rest of patches in packages which I don't know if it works.
4': But much more: UsePachages actually don't avoid any: "[DCC Error] E2201 Need imported data reference ($G) to access 'VarCopyProc from unit 'System'" compiler error, just NOVARCOPYPROC.

5: In plus, ENHANCEDRTL don't cancel the redirects of in memory patch from SynCommons.RedirectCode for System.FillChar, Move, CopyRecord, FinalizeRecord/InitializeRecord, even it this means they already optimized directly hooked in system.dcu, which also give me another errors, but I'll post them in Enanced RTL category.

#7 Re: PDF Engine » AV at uninstall RTL package that include SynPdf loading gdiplus.dll » 2016-11-18 08:23:51

I don't see any USE_PACKAGE, but, as I said, I just used NO_USE_SYNGDIPLUS.
But it's still a bug, as I said: I didn't knew about and I overstayed because this issue.
I said:  But it isn't normal and who don't know about and don't know how to find it, will have more trouble cutting the own code and don't find it. Means everyone who are using it in package will have same issue and will can't find cutting own code until error disappear, because error move time by time and then don't find it because the cause it is in totally another place, in your SynPdf loading gdiplus.dll.
I just proposed to include an if ModuleIsLib there or at least ModuleIsLibary for all those who don't know about.

Thank you.

#8 PDF Engine » AV at uninstall RTL package that include SynPdf loading gdiplus.dll » 2016-11-16 10:23:58

bic_223
Replies: 4

An very serious AV error when uninstall packages which I meet in our RTL libraries, which also include SnyPdf.pas/SynGDIPlus.pas;
because SynPdf's initialization loading gdiplus.dll.

My suggestion it's to include an condition about ModuleIsPackage at least or ModuleIsLib in SynPdf.pas initialization for that loading of GdiPls.dll, to avoid loading gdiplus.dll library in IDE design time, but just in runtime:
initialization
  {$ifdef USE_SYNGDIPLUS}
  // initialize the Gdi+ library if necessary
  if not ModuleIsPackage then // or if not ModuleIsLib <<<<<< Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<
    if Gdip=nil then
      Gdip := TGDIPlus.Create('gdiplus.dll');
  {$endif}


Details:
Rare but annoying error which happens occasionally, but only in IDE, not also in runtime execution, just when package uninstall so also when recompile/open projects(which also have checked or not some installed packages).
But error, also even in those cases, it happens time by time; so hard to find which code source file do this, because the error apparent changes/removing programming code which cause the it moves at times in another place, as error are running from me, making me loose a lot of time ti find it. And anyway the real cause even isn't there, in my code which I delete to make error disappear, anytime another part of code.
Until I found without cut the code, but revert versions, until the exact day 12.06.2015: when our SynPdf was updated again at Version 1.18 +, after I repaired it once 2 years ago, after another 5 months of errors, but I forgot about it, and now we had same error since 1 year and 5 months, since last our update I said previous.
To avoid error in without change your code again and loose it at next update, I was needed to include NO_USE_SYNGDIPLUS directive in my packaged. But it isn't normal and who don't know about and don't know how to find it, will have more trouble cutting the own code and don't find it.

Board footer

Powered by FluxBB